summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorMiguel <m.i@gmx.at>2018-09-28 00:29:02 +0200
committerMiguel <m.i@gmx.at>2018-09-28 00:29:02 +0200
commit9a29d452d03a63f39a80c0640b7747d8508568e2 (patch)
tree05adc15fac805f019af21107a7e3d84135f483f9 /kernel
parentb3ec24b054fe36c7368048c3f1d0c46ed8fbb55e (diff)
moved mouse and kb, fixed mouse a bit
Diffstat (limited to 'kernel')
-rw-r--r--kernel/scheduler.c19
1 files changed, 8 insertions, 11 deletions
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();