summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--kernel/drivers/keyboard.c7
-rw-r--r--kernel/init/kernel.c2
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());