diff options
author | Ian Moffett <ian@osmora.org> | 2025-02-22 02:24:37 -0500 |
---|---|---|
committer | Ian Moffett <ian@osmora.org> | 2025-02-22 02:24:37 -0500 |
commit | 3dc76754a1bec47576af960350a71133bb6b0d54 (patch) | |
tree | 111fae2713c267baa2c77804f3237affbcecc6da /sys/dev/cons | |
parent | 218187d55e26c8bc9bd25881d5e84b38a3c28213 (diff) |
kernel: cons: Add lock around root console
Signed-off-by: Ian Moffett <ian@osmora.org>
Diffstat (limited to 'sys/dev/cons')
-rw-r--r-- | sys/dev/cons/cons.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/sys/dev/cons/cons.c b/sys/dev/cons/cons.c index 0de5590..4b85240 100644 --- a/sys/dev/cons/cons.c +++ b/sys/dev/cons/cons.c @@ -150,12 +150,16 @@ cons_handle_special(struct cons_screen *scr, char c) static int dev_write(dev_t dev, struct sio_txn *sio, int flags) { - char *p = sio->buf; + char *p; + + p = sio->buf; + spinlock_acquire(&g_root_scr.lock); for (size_t i = 0; i < sio->len; ++i) { cons_putch(&g_root_scr, p[i]); } + spinlock_release(&g_root_scr.lock); return sio->len; } @@ -220,6 +224,7 @@ cons_init(void) g_root_scr.nrows = fbdev.height / FONT_HEIGHT; g_root_scr.ncols = fbdev.width / FONT_WIDTH; g_root_scr.fbdev = fbdev; + memset(&g_root_scr.lock, 0, sizeof(g_root_scr.lock)); } /* |