- increase legibility (add kb_init & kb_finish)
This commit is contained in:
parent
287fe5df13
commit
df7d1cab87
2 changed files with 14 additions and 9 deletions
|
@ -28,7 +28,15 @@
|
|||
|
||||
kb_buffer_t kb_buffer = {NULL, 0, 0, 0 };
|
||||
|
||||
void kb_flush() {
|
||||
void kb_init(size_t size, tid_t tid) {
|
||||
kb_buffer.buffer = kmalloc(size * sizeof(char));
|
||||
kb_buffer.size = 0;
|
||||
kb_buffer.maxsize = size;
|
||||
kb_buffer.tid = tid;
|
||||
return;
|
||||
}
|
||||
|
||||
void kb_finish() {
|
||||
kfree(kb_buffer.buffer, (kb_buffer.maxsize * sizeof(char)));
|
||||
kb_buffer.buffer = NULL;
|
||||
kb_buffer.size = 0;
|
||||
|
@ -37,6 +45,7 @@ void kb_flush() {
|
|||
return;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* KBDUS means US Keyboard Layout. This is a scancode table
|
||||
* used to layout a standard US keyboard. I have left some
|
||||
|
|
|
@ -56,19 +56,15 @@ static int null_close(fildes_t* file)
|
|||
static ssize_t stdio_read(fildes_t* file, uint8_t* buffer, size_t size)
|
||||
{
|
||||
#ifdef CONFIG_KEYBOARD
|
||||
kb_buffer.buffer = kmalloc(size * sizeof(char));
|
||||
kb_buffer.maxsize = size;
|
||||
kb_buffer.size = 0;
|
||||
kb_buffer.tid = per_core(current_task)->id;
|
||||
block_current_task();
|
||||
//per_core(current_task)->status = TASK_BLOCKED;
|
||||
reschedule();
|
||||
kb_init(size, per_core(current_task)->id);
|
||||
|
||||
block_current_task();
|
||||
reschedule();
|
||||
size = kb_buffer.size;
|
||||
memcpy(buffer, kb_buffer.buffer, size);
|
||||
|
||||
/*cleaning up */
|
||||
kb_flush();
|
||||
kb_finish();
|
||||
|
||||
//kprintf("Size: %i, offset: %i, buffer: %s", size, buffer, offset);
|
||||
file->offset += size;
|
||||
|
|
Loading…
Add table
Reference in a new issue