diff options
Diffstat (limited to 'kernel/syscalls.c')
| -rw-r--r-- | kernel/syscalls.c | 63 |
1 files changed, 60 insertions, 3 deletions
diff --git a/kernel/syscalls.c b/kernel/syscalls.c index 714acde..56c4ae8 100644 --- a/kernel/syscalls.c +++ b/kernel/syscalls.c @@ -11,6 +11,7 @@ #include <sys/time.h> #include <stdbool.h> #include <stddef.h> +#include "syscalls.h" // TODO: use includes!!! uint64_t timer_get_ms(); @@ -26,9 +27,6 @@ term_out screen; terminal_tty tty1; -/// there also is task_fork, task_wait, task_exit.. which is in scheduler.c -//////////////////////////////////////// - int syscall_unhandled(int nr) { char msg[256]; @@ -334,3 +332,62 @@ int syscall_stat(const char *path, struct stat *st,int none) st->st_mode = S_IFCHR; return 0; } + +/// there also is task_fork, task_wait, task_exit.. which is in scheduler.c +//////////////////////////////////////// + +uint32_t syscall_generic(uint32_t nr,uint32_t p1, uint32_t p2, uint32_t p3) +{ + + switch(nr){ + case SYSCALL_EXIT : + return task_exit(p1,p2,p3); + case SYSCALL_CLOSE : + return syscall_close(p1,p2,p3); + case SYSCALL_EXECVE : + return syscall_execve(p1,p2,p3); + case SYSCALL_FORK : + return task_fork(p1,p2,p3); + case SYSCALL_GETPID : +// return syscall_getpid(p1,p2,p3); + return -1; + case SYSCALL_ISATTY : + return syscall_isatty(p1,p2,p3); + case SYSCALL_LINK : +// return syscall_link(p1,p2,p3); + return -1; + case SYSCALL_LSEEK : + return syscall_lseek(p1,p2,p3); + case SYSCALL_OPEN : + return syscall_open(p1,p2,p3); + case SYSCALL_READ : + return syscall_read(p1,p2,p3); + case SYSCALL_SBRK : + return syscall_sbrk(p1,p2,p3); + case SYSCALL_STAT : + return syscall_stat(p1,p2,p3); + case SYSCALL_FSTAT : + return syscall_stat(p1,p2,p3); + case SYSCALL_LSTAT : + return syscall_stat(p1,p2,p3); + case SYSCALL_TIMES : +// return syscall_times(p1,p2,p3); + return -1; + case SYSCALL_UNLINK : +// return syscall_unlink(p1,p2,p3); + return -1; + case SYSCALL_WAIT : + return task_wait(p1,p2,p3); + case SYSCALL_WRITE : + return syscall_write(p1,p2,p3); + case SYSCALL_GETTIMEOFDAY: + return syscall_gettimeofday(p1,p2); + case SYSCALL_READDIR : + return syscall_readdir(p1,p2,p3); + case SYSCALL_KILL : +// return task_kill(p1,p2,p3); + return -1; + case SYSCALL_POLL : + return syscall_poll(p1); + } +} |
