From 06260dd6aeedc5c4ab0d42215fc38ab459365ce3 Mon Sep 17 00:00:00 2001 From: Quinn Stephens Date: Thu, 22 May 2025 17:14:01 -0400 Subject: kernel: Optimize console & logging * Modified draw loops to use `fbdev_get_index()` less often. * Created `cons_fast_putch()`, then used it to implement `cons_putch()` and `cons_putstr()`. This way, when printing an entire string, the lock acquire/release and cursor hide/show will only happen once, instead of once per character. * Modified `syslog_write()` to use `cons_putstr()`. Signed-off-by: Quinn Stephens Signed-off-by: Ian Moffett --- sys/kern/kern_syslog.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'sys/kern/kern_syslog.c') diff --git a/sys/kern/kern_syslog.c b/sys/kern/kern_syslog.c index 665734d..656362e 100644 --- a/sys/kern/kern_syslog.c +++ b/sys/kern/kern_syslog.c @@ -46,15 +46,19 @@ static struct spinlock lock = {0}; static void syslog_write(const char *s, size_t len) { - const char *p = s; + const char *p; + size_t l; - while (len--) { - cons_putch(&g_root_scr, *p); - if (SERIAL_DEBUG) { + if (SERIAL_DEBUG) { + p = s; + l = len; + while (l--) { serial_putc(*p); + ++p; } - ++p; } + + cons_putstr(&g_root_scr, s, len); } /* -- cgit v1.2.3