diff options
author | Anton Kling <anton@kling.gg> | 2024-05-01 18:38:22 +0200 |
---|---|---|
committer | Anton Kling <anton@kling.gg> | 2024-05-01 18:38:59 +0200 |
commit | faebb71b8a84e33f4f2b3f8f70f845011483c5c5 (patch) | |
tree | 6df89af1c0eb0925a614504cf93eb3c9434202e5 | |
parent | 44e18bb63daa932ed844591de4d2dbb3777d63f7 (diff) |
Kernel/Keyboard: Only write to buffer after it is initialized
-rw-r--r-- | kernel/drivers/keyboard.c | 7 | ||||
-rw-r--r-- | kernel/init/kernel.c | 2 |
2 files changed, 6 insertions, 3 deletions
diff --git a/kernel/drivers/keyboard.c b/kernel/drivers/keyboard.c index a120788..fb85e39 100644 --- a/kernel/drivers/keyboard.c +++ b/kernel/drivers/keyboard.c @@ -86,7 +86,7 @@ u8 capital_ascii_table[] = { ' ', // ; }; -vfs_inode_t *kb_inode; +vfs_inode_t *kb_inode = NULL; u8 keyboard_to_ascii(u16 key, u8 capital) { if ((key & 0xFF) > sizeof(ascii_table)) { @@ -112,9 +112,12 @@ struct KEY_EVENT { extern process_t *ready_queue; void int_keyboard(reg_t *frame) { - outb(0x20, 0x20); u16 c; c = inb(PS2_REG_DATA); + outb(0x20, 0x20); + if (!kb_inode) { + return; + } int released = 0; if (c & 0x80) { switch ((c & ~(0x80)) & 0xFF) { diff --git a/kernel/init/kernel.c b/kernel/init/kernel.c index 0a2243d..090e03f 100644 --- a/kernel/init/kernel.c +++ b/kernel/init/kernel.c @@ -85,7 +85,7 @@ void kernel_main(u32 kernel_end, unsigned long magic, unsigned long addr, install_keyboard(); klog("PS2 Keyboard driver installed", LOG_SUCCESS); -global_socket_init(); + global_socket_init(); vfs_mount("/dev", devfs_mount()); assert(ahci_init()); |