- increase legibility (add kb_init & kb_finish)

This commit is contained in:
Marian Ohligs 2011-09-19 00:29:16 +02:00
parent 287fe5df13
commit df7d1cab87
2 changed files with 14 additions and 9 deletions

View file

@ -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

View file

@ -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;