System info & network
This commit is contained in:
59
code/debug/logger.h
Normal file
59
code/debug/logger.h
Normal file
@@ -0,0 +1,59 @@
|
||||
#ifndef _PIUMA_LOGGER_H_
|
||||
#define _PIUMA_LOGGER_H_
|
||||
|
||||
#include "../lib/types.h"
|
||||
#include "../lib/queue.h"
|
||||
|
||||
|
||||
typedef u8 LogLevel;
|
||||
#define LOG_ERROR 0
|
||||
#define LOG_WARNING 50
|
||||
#define LOG_INFO 100
|
||||
#define LOG_DEBUG 150
|
||||
|
||||
struct LogSourceInfo
|
||||
{
|
||||
const char *filename;
|
||||
u32 line;
|
||||
const char *function;
|
||||
};
|
||||
|
||||
typedef u64 LogId;
|
||||
struct LogEntry
|
||||
{
|
||||
LogLevel level;
|
||||
char *message;
|
||||
|
||||
LogId id;
|
||||
LogSourceInfo source;
|
||||
};
|
||||
|
||||
struct Logger
|
||||
{
|
||||
QUEUE_TYPE(struct LogEntry) message_queue = NULL;
|
||||
|
||||
LogId last_id = 0;
|
||||
u64 overflow_count = 0; // Number of times the buffer was full, but we added a message anyway removing the oldest one
|
||||
};
|
||||
|
||||
void Logger_Init(struct Logger *logger);
|
||||
void Logger_Deinit(struct Logger *logger);
|
||||
|
||||
void Logger_Clear(struct Logger *logger);
|
||||
void Logger_AddMessage(struct Logger *logger, LogSourceInfo source_info, LogLevel level, const char *format_message, ...);
|
||||
void Logger_RemoveOldestMessage(struct Logger *logger);
|
||||
|
||||
u64 Logger_MessageCount(struct Logger *logger);
|
||||
struct LogEntry *Logger_MessageAt(struct Logger *logger, u64 index);
|
||||
|
||||
|
||||
extern struct Logger global_logger;
|
||||
|
||||
|
||||
#define LOG_INIT() Logger_Init(&global_logger)
|
||||
#define LOG_DEINIT() Logger_Deinit(&global_logger)
|
||||
#define LOG_CLEAR() Logger_Clear(&global_logger)
|
||||
#define LOG(level, /*format_message,*/ ...) Logger_AddMessage(&global_logger, LogSourceInfo{.filename = __FILE__, .line = __LINE__, .function = __func__}, level, /*format_message,*/ __VA_ARGS__)
|
||||
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user