From 9a29d452d03a63f39a80c0640b7747d8508568e2 Mon Sep 17 00:00:00 2001 From: Miguel Date: Fri, 28 Sep 2018 00:29:02 +0200 Subject: moved mouse and kb, fixed mouse a bit --- kernel/scheduler.c | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) (limited to 'kernel') diff --git a/kernel/scheduler.c b/kernel/scheduler.c index 5382053..20b69ed 100644 --- a/kernel/scheduler.c +++ b/kernel/scheduler.c @@ -16,15 +16,13 @@ #include "spinlock.h" #include "ringbuffer.h" #include "keyboard.h" +#include "mouse.h" #include "syscalls.h" #include "fs/ext2.h" #define NO_TASK 0xffffffff -//TODO: ugly! -extern ringbuffer kb_in; - -static volatile uint32_t pid=0; +static volatile uint32_t pid=0; // holds next pid, to be assigned to a process. static uint32_t nextPID() { @@ -278,13 +276,12 @@ void task_syscall_worker() while(1) { bool wake=false; - - // TODO: move to user programm! - x86_cli(); // disable temporarily mouse/kb/timer interrupts. - while(ringbuffer_has(&kb_in)){ - wake=true; - keyboard_handle(ringbuffer_get(&kb_in)); - } + + + //TODO: would be enough only to lock during ringbuffer acces!? + x86_cli(); // disable temporarily mouse/kb/timer interrupts. + wake|=keyboard_worker(); + wake|=mouse_worker(); x86_sti(); if(wake)scheduler_wake_all(); -- cgit v1.2.3