- stdin blocks itself util kb has got the input message
This commit is contained in:
parent
4184ac8b94
commit
a02b596580
2 changed files with 6 additions and 7 deletions
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue