summaryrefslogtreecommitdiff
path: root/sys/kern/kern_syslog.c
diff options
context:
space:
mode:
authorQuinn Stephens <quinn@osmora.org>2025-05-22 17:14:01 -0400
committerIan Moffett <ian@osmora.org>2025-05-22 22:05:12 -0400
commit06260dd6aeedc5c4ab0d42215fc38ab459365ce3 (patch)
tree9ce9da80e914c0265237304d5b211f475b8f7a5c /sys/kern/kern_syslog.c
parentdef5182fdeb9ea60df0d3de6365dfa368943c3f0 (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/kern_syslog.c')
-rw-r--r--sys/kern/kern_syslog.c14
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);
}
/*