summaryrefslogtreecommitdiff
path: root/kernel/syscalls.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/syscalls.c')
-rw-r--r--kernel/syscalls.c9
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)
{