2 * Copyright (C) 2000 Jeff Dike (jdike@karaya.com)
3 * Licensed under the GPL
6 #include "linux/config.h"
7 #include "linux/unistd.h"
9 #include "linux/swap.h"
10 #include "linux/syscalls.h"
11 #include "linux/sysctl.h"
12 #include "asm/signal.h"
13 #include "sysdep/syscalls.h"
14 #include "kern_util.h"
17 #define NFSSERVCTL sys_nfsservctl
19 #define NFSSERVCTL sys_ni_syscall
22 #define LAST_GENERIC_SYSCALL __NR_vserver
24 #if LAST_GENERIC_SYSCALL > LAST_ARCH_SYSCALL
25 #define LAST_SYSCALL LAST_GENERIC_SYSCALL
27 #define LAST_SYSCALL LAST_ARCH_SYSCALL
30 extern syscall_handler_t sys_fork
;
31 extern syscall_handler_t sys_execve
;
32 extern syscall_handler_t um_time
;
33 extern syscall_handler_t um_mount
;
34 extern syscall_handler_t um_stime
;
35 extern syscall_handler_t sys_ptrace
;
36 extern syscall_handler_t sys_pipe
;
37 extern syscall_handler_t sys_olduname
;
38 extern syscall_handler_t sys_sigaction
;
39 extern syscall_handler_t sys_sigsuspend
;
40 extern syscall_handler_t old_readdir
;
41 extern syscall_handler_t sys_uname
;
42 extern syscall_handler_t sys_ipc
;
43 extern syscall_handler_t sys_sigreturn
;
44 extern syscall_handler_t sys_clone
;
45 extern syscall_handler_t sys_rt_sigreturn
;
46 extern syscall_handler_t sys_rt_sigaction
;
47 extern syscall_handler_t sys_sigaltstack
;
48 extern syscall_handler_t sys_vfork
;
49 extern syscall_handler_t sys_mmap2
;
50 extern syscall_handler_t old_mmap_i386
;
51 extern syscall_handler_t old_select
;
52 extern syscall_handler_t sys_modify_ldt
;
53 extern syscall_handler_t sys_rt_sigsuspend
;
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_waitpid
] = (syscall_handler_t
*) sys_waitpid
,
66 [ __NR_creat
] (syscall_handler_t
*) sys_creat
,
67 [ __NR_link
] (syscall_handler_t
*) sys_link
,
68 [ __NR_unlink
] (syscall_handler_t
*) sys_unlink
,
69 [ __NR_execve
] = (syscall_handler_t
*) sys_execve
,
71 /* declared differently in kern_util.h */
72 [ __NR_chdir
] (syscall_handler_t
*) sys_chdir
,
73 [ __NR_time
] = um_time
,
74 [ __NR_mknod
] (syscall_handler_t
*) sys_mknod
,
75 [ __NR_chmod
] (syscall_handler_t
*) sys_chmod
,
76 [ __NR_lchown
] (syscall_handler_t
*) sys_lchown16
,
77 [ __NR_break
] (syscall_handler_t
*) sys_ni_syscall
,
78 [ __NR_oldstat
] (syscall_handler_t
*) sys_stat
,
79 [ __NR_lseek
] = (syscall_handler_t
*) sys_lseek
,
80 [ __NR_getpid
] (syscall_handler_t
*) sys_getpid
,
81 [ __NR_mount
] = um_mount
,
82 [ __NR_umount
] (syscall_handler_t
*) sys_oldumount
,
83 [ __NR_setuid
] (syscall_handler_t
*) sys_setuid16
,
84 [ __NR_getuid
] (syscall_handler_t
*) sys_getuid16
,
85 [ __NR_stime
] = um_stime
,
86 [ __NR_ptrace
] (syscall_handler_t
*) sys_ptrace
,
87 [ __NR_alarm
] (syscall_handler_t
*) sys_alarm
,
88 [ __NR_oldfstat
] (syscall_handler_t
*) sys_fstat
,
89 [ __NR_pause
] (syscall_handler_t
*) sys_pause
,
90 [ __NR_utime
] (syscall_handler_t
*) sys_utime
,
91 [ __NR_stty
] (syscall_handler_t
*) sys_ni_syscall
,
92 [ __NR_gtty
] (syscall_handler_t
*) sys_ni_syscall
,
93 [ __NR_access
] (syscall_handler_t
*) sys_access
,
94 [ __NR_nice
] (syscall_handler_t
*) sys_nice
,
95 [ __NR_ftime
] (syscall_handler_t
*) sys_ni_syscall
,
96 [ __NR_sync
] (syscall_handler_t
*) sys_sync
,
97 [ __NR_kill
] (syscall_handler_t
*) sys_kill
,
98 [ __NR_rename
] (syscall_handler_t
*) sys_rename
,
99 [ __NR_mkdir
] (syscall_handler_t
*) sys_mkdir
,
100 [ __NR_rmdir
] (syscall_handler_t
*) sys_rmdir
,
102 /* Declared differently in asm/unistd.h */
103 [ __NR_dup
] = (syscall_handler_t
*) sys_dup
,
104 [ __NR_pipe
] (syscall_handler_t
*) sys_pipe
,
105 [ __NR_times
] (syscall_handler_t
*) sys_times
,
106 [ __NR_prof
] (syscall_handler_t
*) sys_ni_syscall
,
107 [ __NR_brk
] (syscall_handler_t
*) sys_brk
,
108 [ __NR_setgid
] (syscall_handler_t
*) sys_setgid16
,
109 [ __NR_getgid
] (syscall_handler_t
*) sys_getgid16
,
110 [ __NR_signal
] (syscall_handler_t
*) sys_signal
,
111 [ __NR_geteuid
] (syscall_handler_t
*) sys_geteuid16
,
112 [ __NR_getegid
] (syscall_handler_t
*) sys_getegid16
,
113 [ __NR_acct
] (syscall_handler_t
*) sys_acct
,
114 [ __NR_umount2
] (syscall_handler_t
*) sys_umount
,
115 [ __NR_lock
] (syscall_handler_t
*) sys_ni_syscall
,
116 [ __NR_ioctl
] (syscall_handler_t
*) sys_ioctl
,
117 [ __NR_fcntl
] (syscall_handler_t
*) sys_fcntl
,
118 [ __NR_mpx
] (syscall_handler_t
*) sys_ni_syscall
,
119 [ __NR_setpgid
] (syscall_handler_t
*) sys_setpgid
,
120 [ __NR_ulimit
] (syscall_handler_t
*) sys_ni_syscall
,
121 [ __NR_oldolduname
] (syscall_handler_t
*) sys_olduname
,
122 [ __NR_umask
] (syscall_handler_t
*) sys_umask
,
123 [ __NR_chroot
] (syscall_handler_t
*) sys_chroot
,
124 [ __NR_ustat
] (syscall_handler_t
*) sys_ustat
,
125 [ __NR_dup2
] (syscall_handler_t
*) sys_dup2
,
126 [ __NR_getppid
] (syscall_handler_t
*) sys_getppid
,
127 [ __NR_getpgrp
] (syscall_handler_t
*) sys_getpgrp
,
128 [ __NR_setsid
] = (syscall_handler_t
*) sys_setsid
,
129 [ __NR_sigaction
] (syscall_handler_t
*) sys_sigaction
,
130 [ __NR_sgetmask
] (syscall_handler_t
*) sys_sgetmask
,
131 [ __NR_ssetmask
] (syscall_handler_t
*) sys_ssetmask
,
132 [ __NR_setreuid
] (syscall_handler_t
*) sys_setreuid16
,
133 [ __NR_setregid
] (syscall_handler_t
*) sys_setregid16
,
134 [ __NR_sigsuspend
] (syscall_handler_t
*) sys_sigsuspend
,
135 [ __NR_sigpending
] (syscall_handler_t
*) sys_sigpending
,
136 [ __NR_sethostname
] (syscall_handler_t
*) sys_sethostname
,
137 [ __NR_setrlimit
] (syscall_handler_t
*) sys_setrlimit
,
138 [ __NR_getrlimit
] (syscall_handler_t
*) sys_old_getrlimit
,
139 [ __NR_getrusage
] (syscall_handler_t
*) sys_getrusage
,
140 [ __NR_gettimeofday
] (syscall_handler_t
*) sys_gettimeofday
,
141 [ __NR_settimeofday
] (syscall_handler_t
*) sys_settimeofday
,
142 [ __NR_getgroups
] (syscall_handler_t
*) sys_getgroups16
,
143 [ __NR_setgroups
] (syscall_handler_t
*) sys_setgroups16
,
144 [ __NR_symlink
] (syscall_handler_t
*) sys_symlink
,
145 [ __NR_oldlstat
] (syscall_handler_t
*) sys_lstat
,
146 [ __NR_readlink
] (syscall_handler_t
*) sys_readlink
,
147 [ __NR_uselib
] (syscall_handler_t
*) sys_uselib
,
148 [ __NR_swapon
] = (syscall_handler_t
*) sys_swapon
,
149 [ __NR_reboot
] (syscall_handler_t
*) sys_reboot
,
150 [ __NR_readdir
] = old_readdir
,
151 [ __NR_munmap
] (syscall_handler_t
*) sys_munmap
,
152 [ __NR_truncate
] (syscall_handler_t
*) sys_truncate
,
153 [ __NR_ftruncate
] (syscall_handler_t
*) sys_ftruncate
,
154 [ __NR_fchmod
] (syscall_handler_t
*) sys_fchmod
,
155 [ __NR_fchown
] (syscall_handler_t
*) sys_fchown16
,
156 [ __NR_getpriority
] (syscall_handler_t
*) sys_getpriority
,
157 [ __NR_setpriority
] (syscall_handler_t
*) sys_setpriority
,
158 [ __NR_profil
] (syscall_handler_t
*) sys_ni_syscall
,
159 [ __NR_statfs
] (syscall_handler_t
*) sys_statfs
,
160 [ __NR_fstatfs
] (syscall_handler_t
*) sys_fstatfs
,
161 [ __NR_ioperm
] (syscall_handler_t
*) sys_ni_syscall
,
162 [ __NR_socketcall
] (syscall_handler_t
*) sys_socketcall
,
163 [ __NR_syslog
] (syscall_handler_t
*) sys_syslog
,
164 [ __NR_setitimer
] (syscall_handler_t
*) sys_setitimer
,
165 [ __NR_getitimer
] (syscall_handler_t
*) sys_getitimer
,
166 [ __NR_stat
] (syscall_handler_t
*) sys_newstat
,
167 [ __NR_lstat
] (syscall_handler_t
*) sys_newlstat
,
168 [ __NR_fstat
] (syscall_handler_t
*) sys_newfstat
,
169 [ __NR_olduname
] (syscall_handler_t
*) sys_uname
,
170 [ __NR_iopl
] (syscall_handler_t
*) sys_ni_syscall
,
171 [ __NR_vhangup
] (syscall_handler_t
*) sys_vhangup
,
172 [ __NR_idle
] (syscall_handler_t
*) sys_ni_syscall
,
173 [ __NR_wait4
] = (syscall_handler_t
*) sys_wait4
,
174 [ __NR_swapoff
] = (syscall_handler_t
*) sys_swapoff
,
175 [ __NR_sysinfo
] (syscall_handler_t
*) sys_sysinfo
,
176 [ __NR_ipc
] (syscall_handler_t
*) sys_ipc
,
177 [ __NR_fsync
] (syscall_handler_t
*) sys_fsync
,
178 [ __NR_sigreturn
] (syscall_handler_t
*) sys_sigreturn
,
179 [ __NR_clone
] (syscall_handler_t
*) sys_clone
,
180 [ __NR_setdomainname
] (syscall_handler_t
*) sys_setdomainname
,
181 [ __NR_uname
] (syscall_handler_t
*) sys_newuname
,
182 [ __NR_adjtimex
] (syscall_handler_t
*) sys_adjtimex
,
183 [ __NR_mprotect
] (syscall_handler_t
*) sys_mprotect
,
184 [ __NR_sigprocmask
] (syscall_handler_t
*) sys_sigprocmask
,
185 [ __NR_create_module
] (syscall_handler_t
*) sys_ni_syscall
,
186 [ __NR_init_module
] (syscall_handler_t
*) sys_init_module
,
187 [ __NR_delete_module
] (syscall_handler_t
*) sys_delete_module
,
188 [ __NR_get_kernel_syms
] (syscall_handler_t
*) sys_ni_syscall
,
189 [ __NR_quotactl
] (syscall_handler_t
*) sys_quotactl
,
190 [ __NR_getpgid
] (syscall_handler_t
*) sys_getpgid
,
191 [ __NR_fchdir
] (syscall_handler_t
*) sys_fchdir
,
192 [ __NR_bdflush
] (syscall_handler_t
*) sys_bdflush
,
193 [ __NR_sysfs
] (syscall_handler_t
*) sys_sysfs
,
194 [ __NR_personality
] (syscall_handler_t
*) sys_personality
,
195 [ __NR_afs_syscall
] (syscall_handler_t
*) sys_ni_syscall
,
196 [ __NR_setfsuid
] (syscall_handler_t
*) sys_setfsuid16
,
197 [ __NR_setfsgid
] (syscall_handler_t
*) sys_setfsgid16
,
198 [ __NR__llseek
] (syscall_handler_t
*) sys_llseek
,
199 [ __NR_getdents
] (syscall_handler_t
*) sys_getdents
,
200 [ __NR__newselect
] = (syscall_handler_t
*) sys_select
,
201 [ __NR_flock
] (syscall_handler_t
*) sys_flock
,
202 [ __NR_msync
] (syscall_handler_t
*) sys_msync
,
203 [ __NR_readv
] (syscall_handler_t
*) sys_readv
,
204 [ __NR_writev
] (syscall_handler_t
*) sys_writev
,
205 [ __NR_getsid
] (syscall_handler_t
*) sys_getsid
,
206 [ __NR_fdatasync
] (syscall_handler_t
*) sys_fdatasync
,
207 [ __NR__sysctl
] = (syscall_handler_t
*) sys_sysctl
,
208 [ __NR_mlock
] (syscall_handler_t
*) sys_mlock
,
209 [ __NR_munlock
] (syscall_handler_t
*) sys_munlock
,
210 [ __NR_mlockall
] (syscall_handler_t
*) sys_mlockall
,
211 [ __NR_munlockall
] (syscall_handler_t
*) sys_munlockall
,
212 [ __NR_sched_setparam
] (syscall_handler_t
*) sys_sched_setparam
,
213 [ __NR_sched_getparam
] (syscall_handler_t
*) sys_sched_getparam
,
214 [ __NR_sched_setscheduler
] (syscall_handler_t
*) sys_sched_setscheduler
,
215 [ __NR_sched_getscheduler
] (syscall_handler_t
*) sys_sched_getscheduler
,
216 [ __NR_sched_yield
] = (syscall_handler_t
*) yield
,
217 [ __NR_sched_get_priority_max
] (syscall_handler_t
*) sys_sched_get_priority_max
,
218 [ __NR_sched_get_priority_min
] (syscall_handler_t
*) sys_sched_get_priority_min
,
219 [ __NR_sched_rr_get_interval
] (syscall_handler_t
*) sys_sched_rr_get_interval
,
220 [ __NR_nanosleep
] (syscall_handler_t
*) sys_nanosleep
,
221 [ __NR_mremap
] (syscall_handler_t
*) sys_mremap
,
222 [ __NR_setresuid
] (syscall_handler_t
*) sys_setresuid16
,
223 [ __NR_getresuid
] (syscall_handler_t
*) sys_getresuid16
,
224 [ __NR_vm86
] (syscall_handler_t
*) sys_ni_syscall
,
225 [ __NR_query_module
] (syscall_handler_t
*) sys_ni_syscall
,
226 [ __NR_poll
] (syscall_handler_t
*) sys_poll
,
227 [ __NR_nfsservctl
] = (syscall_handler_t
*) NFSSERVCTL
,
228 [ __NR_setresgid
] (syscall_handler_t
*) sys_setresgid16
,
229 [ __NR_getresgid
] (syscall_handler_t
*) sys_getresgid16
,
230 [ __NR_prctl
] (syscall_handler_t
*) sys_prctl
,
231 [ __NR_rt_sigreturn
] (syscall_handler_t
*) sys_rt_sigreturn
,
232 [ __NR_rt_sigaction
] (syscall_handler_t
*) sys_rt_sigaction
,
233 [ __NR_rt_sigprocmask
] (syscall_handler_t
*) sys_rt_sigprocmask
,
234 [ __NR_rt_sigpending
] (syscall_handler_t
*) sys_rt_sigpending
,
235 [ __NR_rt_sigtimedwait
] (syscall_handler_t
*) sys_rt_sigtimedwait
,
236 [ __NR_rt_sigqueueinfo
] (syscall_handler_t
*) sys_rt_sigqueueinfo
,
237 [ __NR_rt_sigsuspend
] (syscall_handler_t
*) sys_rt_sigsuspend
,
238 [ __NR_pread64
] (syscall_handler_t
*) sys_pread64
,
239 [ __NR_pwrite64
] (syscall_handler_t
*) sys_pwrite64
,
240 [ __NR_chown
] (syscall_handler_t
*) sys_chown16
,
241 [ __NR_getcwd
] (syscall_handler_t
*) sys_getcwd
,
242 [ __NR_capget
] (syscall_handler_t
*) sys_capget
,
243 [ __NR_capset
] (syscall_handler_t
*) sys_capset
,
244 [ __NR_sigaltstack
] (syscall_handler_t
*) sys_sigaltstack
,
245 [ __NR_sendfile
] (syscall_handler_t
*) sys_sendfile
,
246 [ __NR_getpmsg
] (syscall_handler_t
*) sys_ni_syscall
,
247 [ __NR_putpmsg
] (syscall_handler_t
*) sys_ni_syscall
,
248 [ __NR_vfork
] (syscall_handler_t
*) sys_vfork
,
249 [ __NR_ugetrlimit
] (syscall_handler_t
*) sys_getrlimit
,
250 [ __NR_mmap2
] (syscall_handler_t
*) sys_mmap2
,
251 [ __NR_truncate64
] (syscall_handler_t
*) sys_truncate64
,
252 [ __NR_ftruncate64
] (syscall_handler_t
*) sys_ftruncate64
,
253 [ __NR_stat64
] (syscall_handler_t
*) sys_stat64
,
254 [ __NR_lstat64
] (syscall_handler_t
*) sys_lstat64
,
255 [ __NR_fstat64
] (syscall_handler_t
*) sys_fstat64
,
256 [ __NR_getdents64
] (syscall_handler_t
*) sys_getdents64
,
257 [ __NR_fcntl64
] (syscall_handler_t
*) sys_fcntl64
,
258 [ 223 ] (syscall_handler_t
*) sys_ni_syscall
,
259 [ __NR_gettid
] (syscall_handler_t
*) sys_gettid
,
260 [ __NR_readahead
] (syscall_handler_t
*) sys_readahead
,
261 [ __NR_setxattr
] (syscall_handler_t
*) sys_setxattr
,
262 [ __NR_lsetxattr
] (syscall_handler_t
*) sys_lsetxattr
,
263 [ __NR_fsetxattr
] (syscall_handler_t
*) sys_fsetxattr
,
264 [ __NR_getxattr
] (syscall_handler_t
*) sys_getxattr
,
265 [ __NR_lgetxattr
] (syscall_handler_t
*) sys_lgetxattr
,
266 [ __NR_fgetxattr
] (syscall_handler_t
*) sys_fgetxattr
,
267 [ __NR_listxattr
] (syscall_handler_t
*) sys_listxattr
,
268 [ __NR_llistxattr
] (syscall_handler_t
*) sys_llistxattr
,
269 [ __NR_flistxattr
] (syscall_handler_t
*) sys_flistxattr
,
270 [ __NR_removexattr
] (syscall_handler_t
*) sys_removexattr
,
271 [ __NR_lremovexattr
] (syscall_handler_t
*) sys_lremovexattr
,
272 [ __NR_fremovexattr
] (syscall_handler_t
*) sys_fremovexattr
,
273 [ __NR_tkill
] (syscall_handler_t
*) sys_tkill
,
274 [ __NR_sendfile64
] (syscall_handler_t
*) sys_sendfile64
,
275 [ __NR_futex
] (syscall_handler_t
*) sys_futex
,
276 [ __NR_sched_setaffinity
] (syscall_handler_t
*) sys_sched_setaffinity
,
277 [ __NR_sched_getaffinity
] (syscall_handler_t
*) sys_sched_getaffinity
,
278 [ __NR_set_thread_area
] (syscall_handler_t
*) sys_ni_syscall
,
279 [ __NR_get_thread_area
] (syscall_handler_t
*) sys_ni_syscall
,
280 [ __NR_io_setup
] (syscall_handler_t
*) sys_io_setup
,
281 [ __NR_io_destroy
] (syscall_handler_t
*) sys_io_destroy
,
282 [ __NR_io_getevents
] (syscall_handler_t
*) sys_io_getevents
,
283 [ __NR_io_submit
] (syscall_handler_t
*) sys_io_submit
,
284 [ __NR_io_cancel
] (syscall_handler_t
*) sys_io_cancel
,
285 [ __NR_fadvise64
] (syscall_handler_t
*) sys_fadvise64
,
286 [ 251 ] (syscall_handler_t
*) sys_ni_syscall
,
287 [ __NR_exit_group
] (syscall_handler_t
*) sys_exit_group
,
288 [ __NR_lookup_dcookie
] (syscall_handler_t
*) sys_lookup_dcookie
,
289 [ __NR_epoll_create
] (syscall_handler_t
*) sys_epoll_create
,
290 [ __NR_epoll_ctl
] (syscall_handler_t
*) sys_epoll_ctl
,
291 [ __NR_epoll_wait
] (syscall_handler_t
*) sys_epoll_wait
,
292 [ __NR_remap_file_pages
] (syscall_handler_t
*) sys_remap_file_pages
,
293 [ __NR_set_tid_address
] (syscall_handler_t
*) sys_set_tid_address
,
294 [ __NR_timer_create
] (syscall_handler_t
*) sys_timer_create
,
295 [ __NR_timer_settime
] (syscall_handler_t
*) sys_timer_settime
,
296 [ __NR_timer_gettime
] (syscall_handler_t
*) sys_timer_gettime
,
297 [ __NR_timer_getoverrun
] (syscall_handler_t
*) sys_timer_getoverrun
,
298 [ __NR_timer_delete
] (syscall_handler_t
*) sys_timer_delete
,
299 [ __NR_clock_settime
] (syscall_handler_t
*) sys_clock_settime
,
300 [ __NR_clock_gettime
] (syscall_handler_t
*) sys_clock_gettime
,
301 [ __NR_clock_getres
] (syscall_handler_t
*) sys_clock_getres
,
302 [ __NR_clock_nanosleep
] (syscall_handler_t
*) sys_clock_nanosleep
,
303 [ __NR_statfs64
] (syscall_handler_t
*) sys_statfs64
,
304 [ __NR_fstatfs64
] (syscall_handler_t
*) sys_fstatfs64
,
305 [ __NR_tgkill
] (syscall_handler_t
*) sys_tgkill
,
306 [ __NR_utimes
] (syscall_handler_t
*) sys_utimes
,
307 [ __NR_fadvise64_64
] (syscall_handler_t
*) sys_fadvise64_64
,
308 [ __NR_vserver
] (syscall_handler_t
*) sys_ni_syscall
,
311 [ LAST_SYSCALL
+ 1 ... NR_syscalls
] =
312 (syscall_handler_t
*) sys_ni_syscall
316 * Overrides for Emacs so that we follow Linus's tabbing style.
317 * Emacs will notice this stuff at the end of the file and automatically
318 * adjust the settings for this buffer only. This must remain at the end
320 * ---------------------------------------------------------------------------
322 * c-file-style: "linux"