diff options
| author | Michal Idziorek <m.i@gmx.at> | 2014-10-21 19:08:03 +0200 |
|---|---|---|
| committer | Michal Idziorek <m.i@gmx.at> | 2014-10-21 19:08:03 +0200 |
| commit | d25834310293c8a30b4a31418ff4ffd8fad8ef24 (patch) | |
| tree | 97ae696211f7709002d80ecbfb8595123611d3c1 /kernel/syscalls.c | |
| parent | 5b9ea685dfd12415774e4e97ad387c601dd2b43b (diff) | |
started implementing our first fool-shell.
Diffstat (limited to 'kernel/syscalls.c')
| -rw-r--r-- | kernel/syscalls.c | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/kernel/syscalls.c b/kernel/syscalls.c index bf875fd..470939c 100644 --- a/kernel/syscalls.c +++ b/kernel/syscalls.c @@ -1,11 +1,39 @@ #define FOOLOS_MODULE_NAME "syscalls" #include "lib/logger/log.h" +#include "lib/bool/bool.h" // -void syscall_outbyte(char c) +int syscall_write(int file, char *buf, int len) { - PutConsoleChar(c,0b1111111111000000); + for(int i=0;i<len;i++) + PutConsoleChar(buf[i],0b1111111111000000); + + return len; +} + +int syscall_read(int file, char *buf, int len) +{ + + char c; + + while(1) + { + asm("cli"); + bool ret=ringbuffer_get(&c); + asm("sti"); + + if(ret) + { + *buf=c; + return 1; + } + +// if(ret) log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"read kb buffer: %d",c); + } + + } +// int example_syscall(int x,int y) { |
