- stdin blocks itself util kb has got the input message

This commit is contained in:
Marian Ohligs 2011-08-07 10:20:46 +02:00
parent 4184ac8b94
commit a02b596580
2 changed files with 6 additions and 7 deletions

View file

@ -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();
}
}

View file

@ -34,11 +34,10 @@ 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;
while(!kb_buffer.size) {
reschedule();
size = kb_buffer.size;
}
kb_buffer.tid = per_core(current_task)->id;
per_core(current_task)->status = TASK_BLOCKED;
reschedule();
size = kb_buffer.size;
memcpy(buffer, kb_buffer.buffer, size);