diff options
Diffstat (limited to 'core')
| -rw-r--r-- | core/logger.c | 69 | ||||
| -rw-r--r-- | core/logger.h | 16 | ||||
| -rw-r--r-- | core/salis.c | 12 |
3 files changed, 73 insertions, 24 deletions
diff --git a/core/logger.c b/core/logger.c index 47182ce..015b84f 100644 --- a/core/logger.c +++ b/core/logger.c @@ -5,6 +5,7 @@ // index: // [section] includes // [section] macros +// [section] extern globals // [section] definitions // ---------------------------------------------------------------------------- @@ -21,8 +22,6 @@ // ---------------------------------------------------------------------------- // [section] macros // ---------------------------------------------------------------------------- -#define LOG_BUFFER_SIZE 0x800 - #define COLOR_CLEAR "\033[0m" #define COLOR_TRACE "\033[1;34m" #define COLOR_INFO "\033[1;32m" @@ -33,13 +32,19 @@ #define LEVEL_ATTENTION "ATTENTION" // ---------------------------------------------------------------------------- +// [section] extern globals +// ---------------------------------------------------------------------------- +void (*log_trace)(const char *format, ...) = log_trace_to_stdout; +void (*log_info)(const char *format, ...) = log_info_to_stdout; +void (*log_attention)(const char *format, ...) = log_attention_to_stdout; + +// ---------------------------------------------------------------------------- // [section] definitions // ---------------------------------------------------------------------------- -static void log_default(const char *color_code, const char *level, const char *format, va_list args) { +static void log_to_buffer(char buffer[LOG_BUFFER_SIZE], const char *color_code, const char *level, const char *format, va_list args) { assert(level); assert(format); - char log_buffer[LOG_BUFFER_SIZE]; struct timespec ts; clock_gettime(CLOCK_REALTIME, &ts); int msec = (int)(ts.tv_nsec / 1000000l); @@ -47,7 +52,7 @@ static void log_default(const char *color_code, const char *level, const char *f pid_t pid = getpid(); int rem = snprintf( - log_buffer, + buffer, LOG_BUFFER_SIZE, "\r%s%d-%02d-%02d %02d:%02d:%02d.%03d %07d [%s]%s ", color_code ? color_code : "", @@ -63,36 +68,70 @@ static void log_default(const char *color_code, const char *level, const char *f color_code ? COLOR_CLEAR : "" ); - vsnprintf(log_buffer + rem, LOG_BUFFER_SIZE - rem, format, args); - printf("%s\n", log_buffer); - fflush(stdout); + vsnprintf(buffer + rem, LOG_BUFFER_SIZE - rem, format, args); } -void log_trace(const char *format, ...) { +void log_trace_to_stdout(const char *format, ...) { assert(format); + (void)format; #if defined(LOG_TRACE) va_list args; va_start(args, format); - log_default(COLOR_TRACE, LEVEL_TRACE, format, args); + char buffer[LOG_BUFFER_SIZE]; + log_to_buffer(buffer, COLOR_TRACE, LEVEL_TRACE, format, args); + printf("%s\n", buffer); + fflush(stdout); + va_end(args); +#endif +} + +void log_info_to_stdout(const char *format, ...) { + assert(format); + va_list args; + va_start(args, format); + char buffer[LOG_BUFFER_SIZE]; + log_to_buffer(buffer, COLOR_INFO, LEVEL_INFO, format, args); + printf("%s\n", buffer); + fflush(stdout); + va_end(args); +} + +void log_attention_to_stdout(const char *format, ...) { + assert(format); + va_list args; + va_start(args, format); + char buffer[LOG_BUFFER_SIZE]; + log_to_buffer(buffer, COLOR_ATTENTION, LEVEL_ATTENTION, format, args); + printf("%s\n", buffer); + fflush(stdout); va_end(args); -#else +} + +void log_trace_to_buffer(char buffer[LOG_BUFFER_SIZE], const char *format, ...) { + assert(format); (void)format; + +#if defined(LOG_TRACE) + va_list args; + va_start(args, format); + log_to_buffer(buffer, NULL, LEVEL_TRACE, format, args); + va_end(args); #endif } -void log_info(const char *format, ...) { +void log_info_to_buffer(char buffer[LOG_BUFFER_SIZE], const char *format, ...) { assert(format); va_list args; va_start(args, format); - log_default(COLOR_INFO, LEVEL_INFO, format, args); + log_to_buffer(buffer, NULL, LEVEL_INFO, format, args); va_end(args); } -void log_attention(const char *format, ...) { +void log_attention_to_buffer(char buffer[LOG_BUFFER_SIZE], const char *format, ...) { assert(format); va_list args; va_start(args, format); - log_default(COLOR_ATTENTION, LEVEL_ATTENTION, format, args); + log_to_buffer(buffer, NULL, LEVEL_ATTENTION, format, args); va_end(args); } diff --git a/core/logger.h b/core/logger.h index e0da38b..8774164 100644 --- a/core/logger.h +++ b/core/logger.h @@ -4,6 +4,16 @@ #pragma once -void log_trace(const char *format, ...); -void log_info(const char *format, ...); -void log_attention(const char *format, ...); +#define LOG_BUFFER_SIZE 0x800 + +extern void (*log_trace)(const char *format, ...); +extern void (*log_info)(const char *format, ...); +extern void (*log_attention)(const char *format, ...); + +void log_trace_to_stdout(const char *format, ...); +void log_info_to_stdout(const char *format, ...); +void log_attention_to_stdout(const char *format, ...); + +void log_trace_to_buffer(char buffer[LOG_BUFFER_SIZE], const char *format, ...); +void log_info_to_buffer(char buffer[LOG_BUFFER_SIZE], const char *format, ...); +void log_attention_to_buffer(char buffer[LOG_BUFFER_SIZE], const char *format, ...); diff --git a/core/salis.c b/core/salis.c index 6cc0725..295467b 100644 --- a/core/salis.c +++ b/core/salis.c @@ -49,14 +49,14 @@ // ---------------------------------------------------------------------------- struct Core g_cores[CORES]; uint64_t g_step; -uint64_t g_sync; -const struct Proc g_null_proc; +static uint64_t g_sync; +static const struct Proc g_null_proc; -char g_asav_pbuf[AUTOSAVE_NAME_LEN]; -char g_evas_pbuf[EVA_SAVE_NAME_LEN]; +static char g_asav_pbuf[AUTOSAVE_NAME_LEN]; +static char g_evas_pbuf[EVA_SAVE_NAME_LEN]; -atomic_bool g_running; -thrd_t g_thrd; +static atomic_bool g_running; +static thrd_t g_thrd; // ---------------------------------------------------------------------------- // [section] memory vector functions |
