From 3dc76754a1bec47576af960350a71133bb6b0d54 Mon Sep 17 00:00:00 2001 From: Ian Moffett Date: Sat, 22 Feb 2025 02:24:37 -0500 Subject: kernel: cons: Add lock around root console Signed-off-by: Ian Moffett --- sys/dev/cons/cons.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'sys/dev/cons') 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)); } /* -- cgit v1.2.3