diff options
author | Quinn Stephens <quinn@osmora.org> | 2025-05-22 17:14:01 -0400 |
---|---|---|
committer | Ian Moffett <ian@osmora.org> | 2025-05-22 22:05:12 -0400 |
commit | 06260dd6aeedc5c4ab0d42215fc38ab459365ce3 (patch) | |
tree | 9ce9da80e914c0265237304d5b211f475b8f7a5c /sys/kern | |
parent | def5182fdeb9ea60df0d3de6365dfa368943c3f0 (diff) |
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 <quinn@osmora.org>
Signed-off-by: Ian Moffett <ian@osmora.org>
Diffstat (limited to 'sys/kern')
-rw-r--r-- | sys/kern/kern_syslog.c | 14 |
1 files changed, 9 insertions, 5 deletions
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); } /* |