diff options
Diffstat (limited to 'kernel/syscalls.c')
| -rw-r--r-- | kernel/syscalls.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/kernel/syscalls.c b/kernel/syscalls.c index cd54d7b..7ad977e 100644 --- a/kernel/syscalls.c +++ b/kernel/syscalls.c @@ -43,14 +43,13 @@ int syscall_write(int file, char *buf, int len) //stderr and stdout go to console for(int i=0;i<len;i++) { -// fifo_put(&get_fool()->fifo_stdout,buf[i]); + fifo_put(&get_fool()->std_out,buf[i]); } lock_release(2); //x86_int_enable(); return len; } -// TODO: /dev/kb int syscall_read(int file, char *buf, int len) { static bool eof=false; @@ -59,7 +58,6 @@ int syscall_read(int file, char *buf, int len) log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"read(file=%d, buf=0x%08X, len=%d)", file,buf,len); #endif - // stdin TODO: other descroptiors! if(file!=0) panic(FOOLOS_MODULE_NAME,"unhandled syscall: read (only stdin)"); { @@ -74,8 +72,9 @@ int syscall_read(int file, char *buf, int len) while(1) { -// bool ret=ringbuffer_get(&c); - bool ret=false; + while(!fifo_has(&get_fool()->std_in)); + c=fifo_get(&get_fool()->std_in); + bool ret=true; if(ret) { |
