aboutsummaryrefslogtreecommitdiff
path: root/pk/syscall.c
diff options
context:
space:
mode:
authorAndrew Waterman <waterman@cs.berkeley.edu>2014-10-26 19:36:28 -0700
committerAndrew Waterman <waterman@cs.berkeley.edu>2014-10-26 19:36:28 -0700
commitfda0d85ae4596262d1da642593676e0f3cf3f0f1 (patch)
tree0725f2bd71cd1bbb7912de74f519a025a4703245 /pk/syscall.c
parent90e64853188620e02a02727ff050e5014cbc2528 (diff)
downloadpk-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.c12
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])