2 * Copyright (C) 2000 Jeff Dike (jdike@karaya.com)
3 * Copyright 2003 PathScale, Inc.
4 * Licensed under the GPL
7 #include "linux/config.h"
8 #include "linux/unistd.h"
10 #include "linux/swap.h"
11 #include "linux/syscalls.h"
12 #include "linux/sysctl.h"
13 #include "asm/signal.h"
14 #include "sysdep/syscalls.h"
15 #include "kern_util.h"
18 #define NFSSERVCTL sys_nfsservctl
20 #define NFSSERVCTL sys_ni_syscall
23 #define LAST_GENERIC_SYSCALL __NR_keyctl
25 #if LAST_GENERIC_SYSCALL > LAST_ARCH_SYSCALL
26 #define LAST_SYSCALL LAST_GENERIC_SYSCALL
28 #define LAST_SYSCALL LAST_ARCH_SYSCALL
31 extern syscall_handler_t sys_fork
;
32 extern syscall_handler_t sys_execve
;
33 extern syscall_handler_t um_time
;
34 extern syscall_handler_t um_stime
;
35 extern syscall_handler_t sys_pipe
;
36 extern syscall_handler_t sys_olduname
;
37 extern syscall_handler_t sys_sigaction
;
38 extern syscall_handler_t sys_sigsuspend
;
39 extern syscall_handler_t old_readdir
;
40 extern syscall_handler_t sys_uname
;
41 extern syscall_handler_t sys_ipc
;
42 extern syscall_handler_t sys_sigreturn
;
43 extern syscall_handler_t sys_clone
;
44 extern syscall_handler_t sys_rt_sigreturn
;
45 extern syscall_handler_t sys_sigaltstack
;
46 extern syscall_handler_t sys_vfork
;
47 extern syscall_handler_t old_select
;
48 extern syscall_handler_t sys_modify_ldt
;
49 extern syscall_handler_t sys_rt_sigsuspend
;
50 extern syscall_handler_t sys_mbind
;
51 extern syscall_handler_t sys_get_mempolicy
;
52 extern syscall_handler_t sys_set_mempolicy
;
53 extern syscall_handler_t sys_sys_setaltroot
;
55 syscall_handler_t
*sys_call_table
[] = {
56 [ __NR_restart_syscall
] = (syscall_handler_t
*) sys_restart_syscall
,
57 [ __NR_exit
] = (syscall_handler_t
*) sys_exit
,
58 [ __NR_fork
] = (syscall_handler_t
*) sys_fork
,
59 [ __NR_read
] = (syscall_handler_t
*) sys_read
,
60 [ __NR_write
] = (syscall_handler_t
*) sys_write
,
62 /* These three are declared differently in asm/unistd.h */
63 [ __NR_open
] = (syscall_handler_t
*) sys_open
,
64 [ __NR_close
] = (syscall_handler_t
*) sys_close
,
65 [ __NR_creat
] = (syscall_handler_t
*) sys_creat
,
66 [ __NR_link
] = (syscall_handler_t
*) sys_link
,
67 [ __NR_unlink
] = (syscall_handler_t
*) sys_unlink
,
68 [ __NR_execve
] = (syscall_handler_t
*) sys_execve
,
70 /* declared differently in kern_util.h */
71 [ __NR_chdir
] = (syscall_handler_t
*) sys_chdir
,
72 [ __NR_time
] = um_time
,
73 [ __NR_mknod
] = (syscall_handler_t
*) sys_mknod
,
74 [ __NR_chmod
] = (syscall_handler_t
*) sys_chmod
,
75 [ __NR_lchown
] = (syscall_handler_t
*) sys_lchown16
,
76 [ __NR_lseek
] = (syscall_handler_t
*) sys_lseek
,
77 [ __NR_getpid
] = (syscall_handler_t
*) sys_getpid
,
78 [ __NR_mount
] = (syscall_handler_t
*) sys_mount
,
79 [ __NR_setuid
] = (syscall_handler_t
*) sys_setuid16
,
80 [ __NR_getuid
] = (syscall_handler_t
*) sys_getuid16
,
81 [ __NR_ptrace
] = (syscall_handler_t
*) sys_ptrace
,
82 [ __NR_alarm
] = (syscall_handler_t
*) sys_alarm
,
83 [ __NR_pause
] = (syscall_handler_t
*) sys_pause
,
84 [ __NR_utime
] = (syscall_handler_t
*) sys_utime
,
85 [ __NR_access
] = (syscall_handler_t
*) sys_access
,
86 [ __NR_sync
] = (syscall_handler_t
*) sys_sync
,
87 [ __NR_kill
] = (syscall_handler_t
*) sys_kill
,
88 [ __NR_rename
] = (syscall_handler_t
*) sys_rename
,
89 [ __NR_mkdir
] = (syscall_handler_t
*) sys_mkdir
,
90 [ __NR_rmdir
] = (syscall_handler_t
*) sys_rmdir
,
92 /* Declared differently in asm/unistd.h */
93 [ __NR_dup
] = (syscall_handler_t
*) sys_dup
,
94 [ __NR_pipe
] = (syscall_handler_t
*) sys_pipe
,
95 [ __NR_times
] = (syscall_handler_t
*) sys_times
,
96 [ __NR_brk
] = (syscall_handler_t
*) sys_brk
,
97 [ __NR_setgid
] = (syscall_handler_t
*) sys_setgid16
,
98 [ __NR_getgid
] = (syscall_handler_t
*) sys_getgid16
,
99 [ __NR_geteuid
] = (syscall_handler_t
*) sys_geteuid16
,
100 [ __NR_getegid
] = (syscall_handler_t
*) sys_getegid16
,
101 [ __NR_acct
] = (syscall_handler_t
*) sys_acct
,
102 [ __NR_umount2
] = (syscall_handler_t
*) sys_umount
,
103 [ __NR_ioctl
] = (syscall_handler_t
*) sys_ioctl
,
104 [ __NR_fcntl
] = (syscall_handler_t
*) sys_fcntl
,
105 [ __NR_setpgid
] = (syscall_handler_t
*) sys_setpgid
,
106 [ __NR_umask
] = (syscall_handler_t
*) sys_umask
,
107 [ __NR_chroot
] = (syscall_handler_t
*) sys_chroot
,
108 [ __NR_ustat
] = (syscall_handler_t
*) sys_ustat
,
109 [ __NR_dup2
] = (syscall_handler_t
*) sys_dup2
,
110 [ __NR_getppid
] = (syscall_handler_t
*) sys_getppid
,
111 [ __NR_getpgrp
] = (syscall_handler_t
*) sys_getpgrp
,
112 [ __NR_setsid
] = (syscall_handler_t
*) sys_setsid
,
113 [ __NR_setreuid
] = (syscall_handler_t
*) sys_setreuid16
,
114 [ __NR_setregid
] = (syscall_handler_t
*) sys_setregid16
,
115 [ __NR_sethostname
] = (syscall_handler_t
*) sys_sethostname
,
116 [ __NR_setrlimit
] = (syscall_handler_t
*) sys_setrlimit
,
117 [ __NR_getrlimit
] = (syscall_handler_t
*) sys_old_getrlimit
,
118 [ __NR_getrusage
] = (syscall_handler_t
*) sys_getrusage
,
119 [ __NR_gettimeofday
] = (syscall_handler_t
*) sys_gettimeofday
,
120 [ __NR_settimeofday
] = (syscall_handler_t
*) sys_settimeofday
,
121 [ __NR_getgroups
] = (syscall_handler_t
*) sys_getgroups16
,
122 [ __NR_setgroups
] = (syscall_handler_t
*) sys_setgroups16
,
123 [ __NR_symlink
] = (syscall_handler_t
*) sys_symlink
,
124 [ __NR_readlink
] = (syscall_handler_t
*) sys_readlink
,
125 [ __NR_uselib
] = (syscall_handler_t
*) sys_uselib
,
126 [ __NR_swapon
] = (syscall_handler_t
*) sys_swapon
,
127 [ __NR_reboot
] = (syscall_handler_t
*) sys_reboot
,
128 [ __NR_munmap
] = (syscall_handler_t
*) sys_munmap
,
129 [ __NR_truncate
] = (syscall_handler_t
*) sys_truncate
,
130 [ __NR_ftruncate
] = (syscall_handler_t
*) sys_ftruncate
,
131 [ __NR_fchmod
] = (syscall_handler_t
*) sys_fchmod
,
132 [ __NR_fchown
] = (syscall_handler_t
*) sys_fchown16
,
133 [ __NR_getpriority
] = (syscall_handler_t
*) sys_getpriority
,
134 [ __NR_setpriority
] = (syscall_handler_t
*) sys_setpriority
,
135 [ __NR_statfs
] = (syscall_handler_t
*) sys_statfs
,
136 [ __NR_fstatfs
] = (syscall_handler_t
*) sys_fstatfs
,
137 [ __NR_ioperm
] = (syscall_handler_t
*) sys_ni_syscall
,
138 [ __NR_syslog
] = (syscall_handler_t
*) sys_syslog
,
139 [ __NR_setitimer
] = (syscall_handler_t
*) sys_setitimer
,
140 [ __NR_getitimer
] = (syscall_handler_t
*) sys_getitimer
,
141 [ __NR_stat
] = (syscall_handler_t
*) sys_newstat
,
142 [ __NR_lstat
] = (syscall_handler_t
*) sys_newlstat
,
143 [ __NR_fstat
] = (syscall_handler_t
*) sys_newfstat
,
144 [ __NR_vhangup
] = (syscall_handler_t
*) sys_vhangup
,
145 [ __NR_wait4
] = (syscall_handler_t
*) sys_wait4
,
146 [ __NR_swapoff
] = (syscall_handler_t
*) sys_swapoff
,
147 [ __NR_sysinfo
] = (syscall_handler_t
*) sys_sysinfo
,
148 [ __NR_fsync
] = (syscall_handler_t
*) sys_fsync
,
149 [ __NR_clone
] = (syscall_handler_t
*) sys_clone
,
150 [ __NR_setdomainname
] = (syscall_handler_t
*) sys_setdomainname
,
151 [ __NR_uname
] = (syscall_handler_t
*) sys_newuname
,
152 [ __NR_adjtimex
] = (syscall_handler_t
*) sys_adjtimex
,
153 [ __NR_mprotect
] = (syscall_handler_t
*) sys_mprotect
,
154 [ __NR_create_module
] = (syscall_handler_t
*) sys_ni_syscall
,
155 [ __NR_init_module
] = (syscall_handler_t
*) sys_init_module
,
156 [ __NR_delete_module
] = (syscall_handler_t
*) sys_delete_module
,
157 [ __NR_get_kernel_syms
] = (syscall_handler_t
*) sys_ni_syscall
,
158 [ __NR_quotactl
] = (syscall_handler_t
*) sys_quotactl
,
159 [ __NR_getpgid
] = (syscall_handler_t
*) sys_getpgid
,
160 [ __NR_fchdir
] = (syscall_handler_t
*) sys_fchdir
,
161 [ __NR_sysfs
] = (syscall_handler_t
*) sys_sysfs
,
162 [ __NR_personality
] = (syscall_handler_t
*) sys_personality
,
163 [ __NR_afs_syscall
] = (syscall_handler_t
*) sys_ni_syscall
,
164 [ __NR_setfsuid
] = (syscall_handler_t
*) sys_setfsuid16
,
165 [ __NR_setfsgid
] = (syscall_handler_t
*) sys_setfsgid16
,
166 [ __NR_getdents
] = (syscall_handler_t
*) sys_getdents
,
167 [ __NR_flock
] = (syscall_handler_t
*) sys_flock
,
168 [ __NR_msync
] = (syscall_handler_t
*) sys_msync
,
169 [ __NR_readv
] = (syscall_handler_t
*) sys_readv
,
170 [ __NR_writev
] = (syscall_handler_t
*) sys_writev
,
171 [ __NR_getsid
] = (syscall_handler_t
*) sys_getsid
,
172 [ __NR_fdatasync
] = (syscall_handler_t
*) sys_fdatasync
,
173 [ __NR__sysctl
] = (syscall_handler_t
*) sys_sysctl
,
174 [ __NR_mlock
] = (syscall_handler_t
*) sys_mlock
,
175 [ __NR_munlock
] = (syscall_handler_t
*) sys_munlock
,
176 [ __NR_mlockall
] = (syscall_handler_t
*) sys_mlockall
,
177 [ __NR_munlockall
] = (syscall_handler_t
*) sys_munlockall
,
178 [ __NR_sched_setparam
] = (syscall_handler_t
*) sys_sched_setparam
,
179 [ __NR_sched_getparam
] = (syscall_handler_t
*) sys_sched_getparam
,
180 [ __NR_sched_setscheduler
] = (syscall_handler_t
*) sys_sched_setscheduler
,
181 [ __NR_sched_getscheduler
] = (syscall_handler_t
*) sys_sched_getscheduler
,
182 [ __NR_sched_yield
] = (syscall_handler_t
*) yield
,
183 [ __NR_sched_get_priority_max
] = (syscall_handler_t
*) sys_sched_get_priority_max
,
184 [ __NR_sched_get_priority_min
] = (syscall_handler_t
*) sys_sched_get_priority_min
,
185 [ __NR_sched_rr_get_interval
] = (syscall_handler_t
*) sys_sched_rr_get_interval
,
186 [ __NR_nanosleep
] = (syscall_handler_t
*) sys_nanosleep
,
187 [ __NR_mremap
] = (syscall_handler_t
*) sys_mremap
,
188 [ __NR_setresuid
] = (syscall_handler_t
*) sys_setresuid16
,
189 [ __NR_getresuid
] = (syscall_handler_t
*) sys_getresuid16
,
190 [ __NR_query_module
] = (syscall_handler_t
*) sys_ni_syscall
,
191 [ __NR_poll
] = (syscall_handler_t
*) sys_poll
,
192 [ __NR_nfsservctl
] = (syscall_handler_t
*) NFSSERVCTL
,
193 [ __NR_setresgid
] = (syscall_handler_t
*) sys_setresgid16
,
194 [ __NR_getresgid
] = (syscall_handler_t
*) sys_getresgid16
,
195 [ __NR_prctl
] = (syscall_handler_t
*) sys_prctl
,
196 [ __NR_rt_sigreturn
] = (syscall_handler_t
*) sys_rt_sigreturn
,
197 [ __NR_rt_sigaction
] = (syscall_handler_t
*) sys_rt_sigaction
,
198 [ __NR_rt_sigprocmask
] = (syscall_handler_t
*) sys_rt_sigprocmask
,
199 [ __NR_rt_sigpending
] = (syscall_handler_t
*) sys_rt_sigpending
,
200 [ __NR_rt_sigtimedwait
] = (syscall_handler_t
*) sys_rt_sigtimedwait
,
201 [ __NR_rt_sigqueueinfo
] = (syscall_handler_t
*) sys_rt_sigqueueinfo
,
202 [ __NR_rt_sigsuspend
] = (syscall_handler_t
*) sys_rt_sigsuspend
,
203 [ __NR_pread64
] = (syscall_handler_t
*) sys_pread64
,
204 [ __NR_pwrite64
] = (syscall_handler_t
*) sys_pwrite64
,
205 [ __NR_chown
] = (syscall_handler_t
*) sys_chown16
,
206 [ __NR_getcwd
] = (syscall_handler_t
*) sys_getcwd
,
207 [ __NR_capget
] = (syscall_handler_t
*) sys_capget
,
208 [ __NR_capset
] = (syscall_handler_t
*) sys_capset
,
209 [ __NR_sigaltstack
] = (syscall_handler_t
*) sys_sigaltstack
,
210 [ __NR_sendfile
] = (syscall_handler_t
*) sys_sendfile
,
211 [ __NR_getpmsg
] = (syscall_handler_t
*) sys_ni_syscall
,
212 [ __NR_putpmsg
] = (syscall_handler_t
*) sys_ni_syscall
,
213 [ __NR_vfork
] = (syscall_handler_t
*) sys_vfork
,
214 [ __NR_getdents64
] = (syscall_handler_t
*) sys_getdents64
,
215 [ __NR_gettid
] = (syscall_handler_t
*) sys_gettid
,
216 [ __NR_readahead
] = (syscall_handler_t
*) sys_readahead
,
217 [ __NR_setxattr
] = (syscall_handler_t
*) sys_setxattr
,
218 [ __NR_lsetxattr
] = (syscall_handler_t
*) sys_lsetxattr
,
219 [ __NR_fsetxattr
] = (syscall_handler_t
*) sys_fsetxattr
,
220 [ __NR_getxattr
] = (syscall_handler_t
*) sys_getxattr
,
221 [ __NR_lgetxattr
] = (syscall_handler_t
*) sys_lgetxattr
,
222 [ __NR_fgetxattr
] = (syscall_handler_t
*) sys_fgetxattr
,
223 [ __NR_listxattr
] = (syscall_handler_t
*) sys_listxattr
,
224 [ __NR_llistxattr
] = (syscall_handler_t
*) sys_llistxattr
,
225 [ __NR_flistxattr
] = (syscall_handler_t
*) sys_flistxattr
,
226 [ __NR_removexattr
] = (syscall_handler_t
*) sys_removexattr
,
227 [ __NR_lremovexattr
] = (syscall_handler_t
*) sys_lremovexattr
,
228 [ __NR_fremovexattr
] = (syscall_handler_t
*) sys_fremovexattr
,
229 [ __NR_tkill
] = (syscall_handler_t
*) sys_tkill
,
230 [ __NR_futex
] = (syscall_handler_t
*) sys_futex
,
231 [ __NR_sched_setaffinity
] = (syscall_handler_t
*) sys_sched_setaffinity
,
232 [ __NR_sched_getaffinity
] = (syscall_handler_t
*) sys_sched_getaffinity
,
233 [ __NR_io_setup
] = (syscall_handler_t
*) sys_io_setup
,
234 [ __NR_io_destroy
] = (syscall_handler_t
*) sys_io_destroy
,
235 [ __NR_io_getevents
] = (syscall_handler_t
*) sys_io_getevents
,
236 [ __NR_io_submit
] = (syscall_handler_t
*) sys_io_submit
,
237 [ __NR_io_cancel
] = (syscall_handler_t
*) sys_io_cancel
,
238 [ __NR_exit_group
] = (syscall_handler_t
*) sys_exit_group
,
239 [ __NR_lookup_dcookie
] = (syscall_handler_t
*) sys_lookup_dcookie
,
240 [ __NR_epoll_create
] = (syscall_handler_t
*) sys_epoll_create
,
241 [ __NR_epoll_ctl
] = (syscall_handler_t
*) sys_epoll_ctl
,
242 [ __NR_epoll_wait
] = (syscall_handler_t
*) sys_epoll_wait
,
243 [ __NR_remap_file_pages
] = (syscall_handler_t
*) sys_remap_file_pages
,
244 [ __NR_set_tid_address
] = (syscall_handler_t
*) sys_set_tid_address
,
245 [ __NR_timer_create
] = (syscall_handler_t
*) sys_timer_create
,
246 [ __NR_timer_settime
] = (syscall_handler_t
*) sys_timer_settime
,
247 [ __NR_timer_gettime
] = (syscall_handler_t
*) sys_timer_gettime
,
248 [ __NR_timer_getoverrun
] = (syscall_handler_t
*) sys_timer_getoverrun
,
249 [ __NR_timer_delete
] = (syscall_handler_t
*) sys_timer_delete
,
250 [ __NR_clock_settime
] = (syscall_handler_t
*) sys_clock_settime
,
251 [ __NR_clock_gettime
] = (syscall_handler_t
*) sys_clock_gettime
,
252 [ __NR_clock_getres
] = (syscall_handler_t
*) sys_clock_getres
,
253 [ __NR_clock_nanosleep
] = (syscall_handler_t
*) sys_clock_nanosleep
,
254 [ __NR_tgkill
] = (syscall_handler_t
*) sys_tgkill
,
255 [ __NR_utimes
] = (syscall_handler_t
*) sys_utimes
,
256 [ __NR_fadvise64
] = (syscall_handler_t
*) sys_fadvise64
,
257 [ __NR_vserver
] = (syscall_handler_t
*) sys_ni_syscall
,
258 [ __NR_mbind
] = (syscall_handler_t
*) sys_mbind
,
259 [ __NR_get_mempolicy
] = (syscall_handler_t
*) sys_get_mempolicy
,
260 [ __NR_set_mempolicy
] = (syscall_handler_t
*) sys_set_mempolicy
,
261 [ __NR_mq_open
] = (syscall_handler_t
*) sys_mq_open
,
262 [ __NR_mq_unlink
] = (syscall_handler_t
*) sys_mq_unlink
,
263 [ __NR_mq_timedsend
] = (syscall_handler_t
*) sys_mq_timedsend
,
264 [ __NR_mq_timedreceive
] = (syscall_handler_t
*) sys_mq_timedreceive
,
265 [ __NR_mq_notify
] = (syscall_handler_t
*) sys_mq_notify
,
266 [ __NR_mq_getsetattr
] = (syscall_handler_t
*) sys_mq_getsetattr
,
267 [ __NR_kexec_load
] = (syscall_handler_t
*) sys_ni_syscall
,
268 [ __NR_waitid
] = (syscall_handler_t
*) sys_waitid
,
269 [ __NR_add_key
] = (syscall_handler_t
*) sys_add_key
,
270 [ __NR_request_key
] = (syscall_handler_t
*) sys_request_key
,
271 [ __NR_keyctl
] = (syscall_handler_t
*) sys_keyctl
,
274 [ LAST_SYSCALL
+ 1 ... NR_syscalls
] =
275 (syscall_handler_t
*) sys_ni_syscall