PatchworkOS
Loading...
Searching...
No Matches
log.h
Go to the documentation of this file.
1#pragma once
2
3#include <boot/boot_info.h>
4
5#include <stdarg.h>
6#include <stdbool.h>
7#include <stdint.h>
8#include <sys/io.h>
9#include <sys/math.h>
10#include <sys/proc.h>
11
23#define LOG_MAX_BUFFER 0x1000
24
28typedef enum
29{
32 LOG_OUTPUT_FILE = 1 << 2
34
47
53void log_init(const boot_gop_t* gop);
54
58void log_screen_enable(void);
59
63void log_screen_disable(void);
64
68void log_write(const char* string, uint64_t length);
69
73uint64_t log_print(log_level_t level, const char* prefix, const char* format, ...);
74
78uint64_t log_vprint(log_level_t level, const char* prefix, const char* format, va_list args);
79
80#ifndef NDEBUG
81#define LOG_DEBUG(format, ...) log_print(LOG_LEVEL_DEBUG, FILE_BASENAME, format __VA_OPT__(, ) __VA_ARGS__)
82#else
83#define LOG_DEBUG(format, ...) ((void)0)
84#endif
85
86#define LOG_USER(format, ...) log_print(LOG_LEVEL_USER, FILE_BASENAME, format __VA_OPT__(, ) __VA_ARGS__)
87#define LOG_INFO(format, ...) log_print(LOG_LEVEL_INFO, FILE_BASENAME, format __VA_OPT__(, ) __VA_ARGS__)
88#define LOG_WARN(format, ...) log_print(LOG_LEVEL_WARN, FILE_BASENAME, format __VA_OPT__(, ) __VA_ARGS__)
89#define LOG_ERR(format, ...) log_print(LOG_LEVEL_ERR, FILE_BASENAME, format __VA_OPT__(, ) __VA_ARGS__)
90#define LOG_PANIC(format, ...) log_print(LOG_LEVEL_PANIC, FILE_BASENAME, format __VA_OPT__(, ) __VA_ARGS__)
91
uint64_t log_vprint(log_level_t level, const char *prefix, const char *format, va_list args)
Print a formatted log message with a va_list.
Definition log.c:173
log_level_t
Log levels.
Definition log.h:39
void log_screen_disable(void)
Disable logging to the screen.
Definition log.c:85
uint64_t log_print(log_level_t level, const char *prefix, const char *format,...)
Print a formatted log message.
Definition log.c:164
void log_write(const char *string, uint64_t length)
Write directly to the log outputs without any formatting or headers.
Definition log.c:92
void log_screen_enable(void)
Enable logging to the screen.
Definition log.c:72
void log_init(const boot_gop_t *gop)
Initialize the logging system.
Definition log.c:50
log_output_t
Logging output options.
Definition log.h:29
@ LOG_LEVEL_ERR
Definition log.h:44
@ LOG_LEVEL_DEBUG
Definition log.h:40
@ LOG_LEVEL_USER
Definition log.h:41
@ LOG_LEVEL_WARN
Definition log.h:43
@ LOG_LEVEL_PANIC
Definition log.h:45
@ LOG_LEVEL_INFO
Definition log.h:42
@ LOG_OUTPUT_SCREEN
Definition log.h:31
@ LOG_OUTPUT_SERIAL
Definition log.h:30
@ LOG_OUTPUT_FILE
Definition log.h:32
boot_gop_t * gop
Definition mem.c:18
__builtin_va_list va_list
Definition stdarg.h:9
__UINT64_TYPE__ uint64_t
Definition stdint.h:17