#include "log.h"
#include "proto/rng.h"
-#include "proto/simple-text-io.h"
#include "util.h"
static unsigned log_count = 0;
freeze();
}
-EFI_STATUS log_internal(EFI_STATUS status, const char *format, ...) {
+EFI_STATUS log_internal(EFI_STATUS status, uint8_t text_color, const char *format, ...) {
assert(format);
int32_t attr = ST->ConOut->Mode->Attribute;
if (ST->ConOut->Mode->CursorColumn > 0)
ST->ConOut->OutputString(ST->ConOut, (char16_t *) u"\r\n");
- ST->ConOut->SetAttribute(ST->ConOut, EFI_TEXT_ATTR(EFI_LIGHTRED, EFI_BLACK));
+ ST->ConOut->SetAttribute(ST->ConOut, EFI_TEXT_ATTR(text_color, EFI_BLACK));
va_list ap;
va_start(ap, format);
/* Debugging helper — please keep this around, even if not used */
_cleanup_free_ char16_t *hex = hexdump(data, size);
- log_internal(EFI_SUCCESS, "%ls[%zu]: %ls", prefix, size, hex);
+ log_internal(EFI_SUCCESS, EFI_LIGHTRED, "%ls[%zu]: %ls", prefix, size, hex);
}
#endif
#pragma once
#include "efi-string.h"
+#include "proto/simple-text-io.h"
#if defined __has_attribute
# if __has_attribute(no_stack_protector)
_noreturn_ void freeze(void);
void log_wait(void);
-_gnu_printf_(2, 3) EFI_STATUS log_internal(EFI_STATUS status, const char *format, ...);
-#define log_error_status(status, ...) log_internal(status, __VA_ARGS__)
-#define log_error(...) log_internal(EFI_INVALID_PARAMETER, __VA_ARGS__)
-#define log_oom() log_internal(EFI_OUT_OF_RESOURCES, "Out of memory.")
-#define log_trace() log_internal(EFI_SUCCESS, "%s:%i@%s", __FILE__, __LINE__, __func__)
+_gnu_printf_(3, 4) EFI_STATUS log_internal(EFI_STATUS status, uint8_t text_color, const char *format, ...);
+#define log_debug(...) log_internal(EFI_SUCCESS, EFI_LIGHTGRAY, __VA_ARGS__)
+#define log_info(...) log_internal(EFI_SUCCESS, EFI_WHITE, __VA_ARGS__)
+#define log_error_status(status, ...) log_internal(status, EFI_LIGHTRED, __VA_ARGS__)
+#define log_error(...) log_internal(EFI_INVALID_PARAMETER, EFI_LIGHTRED, __VA_ARGS__)
+#define log_oom() log_internal(EFI_OUT_OF_RESOURCES, EFI_LIGHTRED, "Out of memory.")
+#define log_trace() log_internal(EFI_SUCCESS, EFI_LIGHTRED, "%s:%i@%s", __FILE__, __LINE__, __func__)
#ifdef EFI_DEBUG
void log_hexdump(const char16_t *prefix, const void *data, size_t size);