diff options
Diffstat (limited to 'kernel/common')
| -rw-r--r-- | kernel/common/log.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/kernel/common/log.c b/kernel/common/log.c index f65c165..5f470f1 100644 --- a/kernel/common/log.c +++ b/kernel/common/log.c @@ -1,15 +1,21 @@ #include <sys/stddef.h> #include <sys/log.h> +void stub(char c) { + (void)c; +} + __attribute__((section(".ringbuf"), aligned(64))) volatile char log_ring[RINGBUF_SIZE]; static int pos = 0; +static console_callback_t console_callback = stub; void put_char(char c) { log_ring[pos++] = c; if (pos >= RINGBUF_SIZE) pos = 0; + console_callback(c); } void put_string(const char *s) { @@ -17,6 +23,10 @@ void put_string(const char *s) { put_char(*s++); } +void register_console_callback(console_callback_t callback) { + console_callback = callback; +} + void put_uint(unsigned int value, unsigned int radix) { char tmp[16]; const char digits[] = "0123456789abcdef"; |
