summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
Diffstat (limited to 'core')
-rw-r--r--core/logger.c69
-rw-r--r--core/logger.h16
-rw-r--r--core/salis.c12
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