diff --git a/arch/x86/kernel/kb.c b/arch/x86/kernel/kb.c index 9499d9d8..7b02bafe 100644 --- a/arch/x86/kernel/kb.c +++ b/arch/x86/kernel/kb.c @@ -33,7 +33,7 @@ void kb_flush() { kb_buffer.buffer = NULL; kb_buffer.size = 0; kb_buffer.maxsize = 0; - kb_buffer.tid = 0; + //kb_buffer.tid = 0; return; } @@ -121,7 +121,7 @@ static void keyboard_handler(struct state *r) kb_buffer.size++; } if (scancode == 28 || scancode == 15 || kb_buffer.size >= kb_buffer.maxsize) { - wakeup_task(kb_buffer.tid); + //wakeup_task(kb_buffer.tid); reschedule(); } } diff --git a/drivers/stdin/stdin.c b/drivers/stdin/stdin.c index ab4d0c36..07d75ebf 100644 --- a/drivers/stdin/stdin.c +++ b/drivers/stdin/stdin.c @@ -34,11 +34,12 @@ static ssize_t stdin_read(fildes_t* file, uint8_t* buffer, size_t size) kb_buffer.buffer = kmalloc(size * sizeof(char)); kb_buffer.maxsize = size; kb_buffer.size = 0; - kb_buffer.tid = per_core(current_task)->id; - block_task(per_core(current_task)->id); - reschedule(); + //kb_buffer.tid = per_core(current_task)->id; + while(!kb_buffer.size) { + reschedule(); + size = kb_buffer.size; + } size = kb_buffer.size; - memcpy(buffer, kb_buffer.buffer, size); /*cleaning up */