diff options
author | Andrew Waterman <waterman@cs.berkeley.edu> | 2014-10-26 19:36:28 -0700 |
---|---|---|
committer | Andrew Waterman <waterman@cs.berkeley.edu> | 2014-10-26 19:36:28 -0700 |
commit | fda0d85ae4596262d1da642593676e0f3cf3f0f1 (patch) | |
tree | 0725f2bd71cd1bbb7912de74f519a025a4703245 /pk/syscall.c | |
parent | 90e64853188620e02a02727ff050e5014cbc2528 (diff) | |
download | pk-fda0d85ae4596262d1da642593676e0f3cf3f0f1.zip pk-fda0d85ae4596262d1da642593676e0f3cf3f0f1.tar.gz pk-fda0d85ae4596262d1da642593676e0f3cf3f0f1.tar.bz2 |
Don't rely on the C library
Diffstat (limited to 'pk/syscall.c')
-rw-r--r-- | pk/syscall.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/pk/syscall.c b/pk/syscall.c index f9e0664..177d50f 100644 --- a/pk/syscall.c +++ b/pk/syscall.c @@ -384,12 +384,17 @@ int sys_getdents(int fd, void* dirbuf, int count) return 0; //stub } -int sys_nosys() +static int sys_stub_success() +{ + return 0; +} + +static int sys_stub_nosys() { return -ENOSYS; } -long syscall(long a0, long a1, long a2, long a3, long a4, long a5, long n) +long do_syscall(long a0, long a1, long a2, long a3, long a4, long a5, long n) { const static void* syscall_table[] = { [SYS_exit] = sys_exit, @@ -430,7 +435,8 @@ long syscall(long a0, long a1, long a2, long a3, long a4, long a5, long n) [SYS_fcntl] = sys_fcntl, [SYS_getdents] = sys_getdents, [SYS_dup] = sys_dup, - [SYS_readlinkat] = sys_nosys, + [SYS_readlinkat] = sys_stub_nosys, + [SYS_rt_sigprocmask] = sys_stub_success, }; if(n >= ARRAY_SIZE(syscall_table) || !syscall_table[n]) |