From a6184be79e3918764d5e683796afbd8e8ccba018 Mon Sep 17 00:00:00 2001 From: Michal Idziorek Date: Mon, 18 May 2015 09:20:01 +0200 Subject: fifo through ringbuffer(stdin) and vt52(stdout) finally working! --- kernel/syscalls.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'kernel/syscalls.c') 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;ififo_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) { -- cgit v1.2.3