From 9f0e87b51d00bed58eb7a4e445b77dbeed4be1e6 Mon Sep 17 00:00:00 2001 From: Drew Galbraith Date: Wed, 22 Nov 2023 12:17:10 -0800 Subject: [PATCH] [Glacier] Add proper string formatting for ErrorCodes. --- lib/glacier/CMakeLists.txt | 1 + lib/glacier/status/error.cpp | 44 +++++++++++++++++++++++++++++++ lib/glacier/status/error.h | 4 +++ lib/glacier/string/str_format.cpp | 2 +- zion/syscall/process.cpp | 2 +- 5 files changed, 51 insertions(+), 2 deletions(-) create mode 100644 lib/glacier/status/error.cpp diff --git a/lib/glacier/CMakeLists.txt b/lib/glacier/CMakeLists.txt index 22bc6ac..e20b9c9 100644 --- a/lib/glacier/CMakeLists.txt +++ b/lib/glacier/CMakeLists.txt @@ -1,4 +1,5 @@ set(glacier_files + status/error.cpp string/string.cpp string/string_builder.cpp string/string_view.cpp diff --git a/lib/glacier/status/error.cpp b/lib/glacier/status/error.cpp new file mode 100644 index 0000000..05f6dce --- /dev/null +++ b/lib/glacier/status/error.cpp @@ -0,0 +1,44 @@ +#include "glacier/status/error.h" + +namespace glcr { + +StringView ErrorCodeToStr(ErrorCode code) { + switch (code) { + case OK: + return "OK"; + case INVALID_ARGUMENT: + return "INVALID_ARGUMENT"; + case NOT_FOUND: + return "NOT_FOUND"; + case PERMISSION_DENIED: + return "PERMISSION_DENIED"; + case NULL_PTR: + return "NULL_PTR"; + case EMPTY: + return "EMPTY"; + case ALREADY_EXISTS: + return "ALREADY_EXISTS"; + case BUFFER_SIZE: + return "BUFFER_SIZE"; + case FAILED_PRECONDITION: + return "FAILED_PRECONDITION"; + case INTERNAL: + return "INTERNAL"; + case UNIMPLEMENTED: + return "UNIMPLEMENTED"; + case EXHAUSTED: + return "EXHAUSTED"; + case INVALID_RESPONSE: + return "INVALID_RESPONSE"; + case CAP_NOT_FOUND: + return "CAP_NOT_FOUND"; + case CAP_WRONG_TYPE: + return "CAP_WRONG_TYPE"; + case CAP_PERMISSION_DENIED: + return "CAP_PERMISSION_DENIED"; + default: + return "UNKNOWN"; + } +} + +} // namespace glcr diff --git a/lib/glacier/status/error.h b/lib/glacier/status/error.h index d8cbc78..9a81704 100644 --- a/lib/glacier/status/error.h +++ b/lib/glacier/status/error.h @@ -2,6 +2,8 @@ #include +#include "glacier/string/string_view.h" + namespace glcr { enum ErrorCode : uint64_t { @@ -29,6 +31,8 @@ enum ErrorCode : uint64_t { }; +StringView ErrorCodeToStr(ErrorCode code); + #define RET_ERR(expr) \ { \ glcr::ErrorCode _tmp_err = static_cast(expr); \ diff --git a/lib/glacier/string/str_format.cpp b/lib/glacier/string/str_format.cpp index d06fbf8..68e5927 100644 --- a/lib/glacier/string/str_format.cpp +++ b/lib/glacier/string/str_format.cpp @@ -57,7 +57,7 @@ void StrFormatValue(StringBuilder& builder, const uint64_t& value, template <> void StrFormatValue(StringBuilder& builder, const ErrorCode& value, StringView opts) { - StrFormatValue(builder, static_cast(value), opts); + StrFormatValue(builder, ErrorCodeToStr(value), opts); } template <> diff --git a/zion/syscall/process.cpp b/zion/syscall/process.cpp index d6678cc..a8f5769 100644 --- a/zion/syscall/process.cpp +++ b/zion/syscall/process.cpp @@ -7,7 +7,7 @@ z_err_t ProcessExit(ZProcessExitReq* req) { auto curr_thread = gScheduler->CurrentThread(); - dbgln("Exit code: {x}", req->code); + dbgln("Exit code: {}", static_cast(req->code)); curr_thread->process().Exit(); panic("Returned from thread exit"); return glcr::UNIMPLEMENTED;