aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2009-05-13 18:56:28 -0400
committerArnd Bergmann <arnd@klappe2.(none)>2009-06-11 15:02:16 -0400
commite64a1617eca39d62b248a11699de9c1195369661 (patch)
tree41e9b99b647b66256ed9e72c183929b57ead91a0
parent6103ec56c65c33774c7c38652c8204120c3c7519 (diff)
asm-generic: add a generic unistd.h
A new architecture should only define a minimal set of system calls while still providing the full functionality. This version of unistd.h has gone through intensive review to make sure that by default it only enables syscalls that do not already have a more featureful replacement. It is modeled after the x86-64 version of unistd.h, which unifies the syscall number definition and the actual system call table in a single file, in order to keep them synchronized much more easily. This first version still keeps legacy system call definitions around, guarded by various #ifdefs, and with numbers larger than 1024. The idea behind this is to make it easier for new architectures to transition from a full list to the reduced set. In particular, the new microblaze architecture that should migrate to using the generic ABI headers can at least use an existing uClibc source tree without major rewrites during the conversion. Signed-off-by: Arnd Bergmann <arnd@arndb.de>
-rw-r--r--include/asm-generic/Kbuild1
-rw-r--r--include/asm-generic/unistd.h854
-rwxr-xr-xscripts/checksyscalls.sh92
3 files changed, 944 insertions, 3 deletions
diff --git a/include/asm-generic/Kbuild b/include/asm-generic/Kbuild
index 11a78b8e2fc9..eb62334cda29 100644
--- a/include/asm-generic/Kbuild
+++ b/include/asm-generic/Kbuild
@@ -27,6 +27,7 @@ header-y += termbits.h
27header-y += termios.h 27header-y += termios.h
28header-y += types.h 28header-y += types.h
29header-y += ucontext.h 29header-y += ucontext.h
30header-y += unistd.h
30 31
31unifdef-y += int-l64.h 32unifdef-y += int-l64.h
32unifdef-y += int-ll64.h 33unifdef-y += int-ll64.h
diff --git a/include/asm-generic/unistd.h b/include/asm-generic/unistd.h
new file mode 100644
index 000000000000..5b34b6233d6d
--- /dev/null
+++ b/include/asm-generic/unistd.h
@@ -0,0 +1,854 @@
1#if !defined(_ASM_GENERIC_UNISTD_H) || defined(__SYSCALL)
2#define _ASM_GENERIC_UNISTD_H
3
4#include <asm/bitsperlong.h>
5
6/*
7 * This file contains the system call numbers, based on the
8 * layout of the x86-64 architecture, which embeds the
9 * pointer to the syscall in the table.
10 *
11 * As a basic principle, no duplication of functionality
12 * should be added, e.g. we don't use lseek when llseek
13 * is present. New architectures should use this file
14 * and implement the less feature-full calls in user space.
15 */
16
17#ifndef __SYSCALL
18#define __SYSCALL(x, y)
19#endif
20
21#if __BITS_PER_LONG == 32
22#define __SC_3264(_nr, _32, _64) __SYSCALL(_nr, _32)
23#else
24#define __SC_3264(_nr, _32, _64) __SYSCALL(_nr, _64)
25#endif
26
27#define __NR_io_setup 0
28__SYSCALL(__NR_io_setup, sys_io_setup)
29#define __NR_io_destroy 1
30__SYSCALL(__NR_io_destroy, sys_io_destroy)
31#define __NR_io_submit 2
32__SYSCALL(__NR_io_submit, sys_io_submit)
33#define __NR_io_cancel 3
34__SYSCALL(__NR_io_cancel, sys_io_cancel)
35#define __NR_io_getevents 4
36__SYSCALL(__NR_io_getevents, sys_io_getevents)
37
38/* fs/xattr.c */
39#define __NR_setxattr 5
40__SYSCALL(__NR_setxattr, sys_setxattr)
41#define __NR_lsetxattr 6
42__SYSCALL(__NR_lsetxattr, sys_lsetxattr)
43#define __NR_fsetxattr 7
44__SYSCALL(__NR_fsetxattr, sys_fsetxattr)
45#define __NR_getxattr 8
46__SYSCALL(__NR_getxattr, sys_getxattr)
47#define __NR_lgetxattr 9
48__SYSCALL(__NR_lgetxattr, sys_lgetxattr)
49#define __NR_fgetxattr 10
50__SYSCALL(__NR_fgetxattr, sys_fgetxattr)
51#define __NR_listxattr 11
52__SYSCALL(__NR_listxattr, sys_listxattr)
53#define __NR_llistxattr 12
54__SYSCALL(__NR_llistxattr, sys_llistxattr)
55#define __NR_flistxattr 13
56__SYSCALL(__NR_flistxattr, sys_flistxattr)
57#define __NR_removexattr 14
58__SYSCALL(__NR_removexattr, sys_removexattr)
59#define __NR_lremovexattr 15
60__SYSCALL(__NR_lremovexattr, sys_lremovexattr)
61#define __NR_fremovexattr 16
62__SYSCALL(__NR_fremovexattr, sys_fremovexattr)
63
64/* fs/dcache.c */
65#define __NR_getcwd 17
66__SYSCALL(__NR_getcwd, sys_getcwd)
67
68/* fs/cookies.c */
69#define __NR_lookup_dcookie 18
70__SYSCALL(__NR_lookup_dcookie, sys_lookup_dcookie)
71
72/* fs/eventfd.c */
73#define __NR_eventfd2 19
74__SYSCALL(__NR_eventfd2, sys_eventfd2)
75
76/* fs/eventpoll.c */
77#define __NR_epoll_create1 20
78__SYSCALL(__NR_epoll_create1, sys_epoll_create1)
79#define __NR_epoll_ctl 21
80__SYSCALL(__NR_epoll_ctl, sys_epoll_ctl)
81#define __NR_epoll_pwait 22
82__SYSCALL(__NR_epoll_pwait, sys_epoll_pwait)
83
84/* fs/fcntl.c */
85#define __NR_dup 23
86__SYSCALL(__NR_dup, sys_dup)
87#define __NR_dup3 24
88__SYSCALL(__NR_dup3, sys_dup3)
89#define __NR3264_fcntl 25
90__SC_3264(__NR3264_fcntl, sys_fcntl64, sys_fcntl)
91
92/* fs/inotify_user.c */
93#define __NR_inotify_init1 26
94__SYSCALL(__NR_inotify_init1, sys_inotify_init1)
95#define __NR_inotify_add_watch 27
96__SYSCALL(__NR_inotify_add_watch, sys_inotify_add_watch)
97#define __NR_inotify_rm_watch 28
98__SYSCALL(__NR_inotify_rm_watch, sys_inotify_rm_watch)
99
100/* fs/ioctl.c */
101#define __NR_ioctl 29
102__SYSCALL(__NR_ioctl, sys_ioctl)
103
104/* fs/ioprio.c */
105#define __NR_ioprio_set 30
106__SYSCALL(__NR_ioprio_set, sys_ioprio_set)
107#define __NR_ioprio_get 31
108__SYSCALL(__NR_ioprio_get, sys_ioprio_get)
109
110/* fs/locks.c */
111#define __NR_flock 32
112__SYSCALL(__NR_flock, sys_flock)
113
114/* fs/namei.c */
115#define __NR_mknodat 33
116__SYSCALL(__NR_mknodat, sys_mknodat)
117#define __NR_mkdirat 34
118__SYSCALL(__NR_mkdirat, sys_mkdirat)
119#define __NR_unlinkat 35
120__SYSCALL(__NR_unlinkat, sys_unlinkat)
121#define __NR_symlinkat 36
122__SYSCALL(__NR_symlinkat, sys_symlinkat)
123#define __NR_linkat 37
124__SYSCALL(__NR_linkat, sys_linkat)
125#define __NR_renameat 38
126__SYSCALL(__NR_renameat, sys_renameat)
127
128/* fs/namespace.c */
129#define __NR_umount2 39
130__SYSCALL(__NR_umount2, sys_umount)
131#define __NR_mount 40
132__SYSCALL(__NR_mount, sys_mount)
133#define __NR_pivot_root 41
134__SYSCALL(__NR_pivot_root, sys_pivot_root)
135
136/* fs/nfsctl.c */
137#define __NR_nfsservctl 42
138__SYSCALL(__NR_nfsservctl, sys_nfsservctl)
139
140/* fs/open.c */
141#define __NR3264_statfs 43
142__SC_3264(__NR3264_statfs, sys_statfs64, sys_statfs)
143#define __NR3264_fstatfs 44
144__SC_3264(__NR3264_fstatfs, sys_fstatfs64, sys_fstatfs)
145#define __NR3264_truncate 45
146__SC_3264(__NR3264_truncate, sys_truncate64, sys_truncate)
147#define __NR3264_ftruncate 46
148__SC_3264(__NR3264_ftruncate, sys_ftruncate64, sys_ftruncate)
149
150#define __NR_fallocate 47
151__SYSCALL(__NR_fallocate, sys_fallocate)
152#define __NR_faccessat 48
153__SYSCALL(__NR_faccessat, sys_faccessat)
154#define __NR_chdir 49
155__SYSCALL(__NR_chdir, sys_chdir)
156#define __NR_fchdir 50
157__SYSCALL(__NR_fchdir, sys_fchdir)
158#define __NR_chroot 51
159__SYSCALL(__NR_chroot, sys_chroot)
160#define __NR_fchmod 52
161__SYSCALL(__NR_fchmod, sys_fchmod)
162#define __NR_fchmodat 53
163__SYSCALL(__NR_fchmodat, sys_fchmodat)
164#define __NR_fchownat 54
165__SYSCALL(__NR_fchownat, sys_fchownat)
166#define __NR_fchown 55
167__SYSCALL(__NR_fchown, sys_fchown)
168#define __NR_openat 56
169__SYSCALL(__NR_openat, sys_openat)
170#define __NR_close 57
171__SYSCALL(__NR_close, sys_close)
172#define __NR_vhangup 58
173__SYSCALL(__NR_vhangup, sys_vhangup)
174
175/* fs/pipe.c */
176#define __NR_pipe2 59
177__SYSCALL(__NR_pipe2, sys_pipe2)
178
179/* fs/quota.c */
180#define __NR_quotactl 60
181__SYSCALL(__NR_quotactl, sys_quotactl)
182
183/* fs/readdir.c */
184#define __NR_getdents64 61
185__SYSCALL(__NR_getdents64, sys_getdents64)
186
187/* fs/read_write.c */
188#define __NR3264_lseek 62
189__SC_3264(__NR3264_lseek, sys_llseek, sys_lseek)
190#define __NR_read 63
191__SYSCALL(__NR_read, sys_read)
192#define __NR_write 64
193__SYSCALL(__NR_write, sys_write)
194#define __NR_readv 65
195__SYSCALL(__NR_readv, sys_readv)
196#define __NR_writev 66
197__SYSCALL(__NR_writev, sys_writev)
198#define __NR_pread64 67
199__SYSCALL(__NR_pread64, sys_pread64)
200#define __NR_pwrite64 68
201__SYSCALL(__NR_pwrite64, sys_pwrite64)
202#define __NR_preadv 69
203__SYSCALL(__NR_preadv, sys_preadv)
204#define __NR_pwritev 70
205__SYSCALL(__NR_pwritev, sys_pwritev)
206
207/* fs/sendfile.c */
208#define __NR3264_sendfile 71
209__SC_3264(__NR3264_sendfile, sys_sendfile64, sys_sendfile)
210
211/* fs/select.c */
212#define __NR_pselect6 72
213__SYSCALL(__NR_pselect6, sys_pselect6)
214#define __NR_ppoll 73
215__SYSCALL(__NR_ppoll, sys_ppoll)
216
217/* fs/signalfd.c */
218#define __NR_signalfd4 74
219__SYSCALL(__NR_signalfd4, sys_signalfd4)
220
221/* fs/splice.c */
222#define __NR_vmsplice 75
223__SYSCALL(__NR_vmsplice, sys_vmsplice)
224#define __NR_splice 76
225__SYSCALL(__NR_splice, sys_splice)
226#define __NR_tee 77
227__SYSCALL(__NR_tee, sys_tee)
228
229/* fs/stat.c */
230#define __NR_readlinkat 78
231__SYSCALL(__NR_readlinkat, sys_readlinkat)
232#define __NR3264_fstatat 79
233__SC_3264(__NR3264_fstatat, sys_fstatat64, sys_newfstatat)
234#define __NR3264_fstat 80
235__SC_3264(__NR3264_fstat, sys_fstat64, sys_newfstat)
236
237/* fs/sync.c */
238#define __NR_sync 81
239__SYSCALL(__NR_sync, sys_sync)
240#define __NR_fsync 82
241__SYSCALL(__NR_fsync, sys_fsync)
242#define __NR_fdatasync 83
243__SYSCALL(__NR_fdatasync, sys_fdatasync)
244#define __NR_sync_file_range 84
245__SYSCALL(__NR_sync_file_range, sys_sync_file_range) /* .long sys_sync_file_range2, */
246
247/* fs/timerfd.c */
248#define __NR_timerfd_create 85
249__SYSCALL(__NR_timerfd_create, sys_timerfd_create)
250#define __NR_timerfd_settime 86
251__SYSCALL(__NR_timerfd_settime, sys_timerfd_settime)
252#define __NR_timerfd_gettime 87
253__SYSCALL(__NR_timerfd_gettime, sys_timerfd_gettime)
254
255/* fs/utimes.c */
256#define __NR_utimensat 88
257__SYSCALL(__NR_utimensat, sys_utimensat)
258
259/* kernel/acct.c */
260#define __NR_acct 89
261__SYSCALL(__NR_acct, sys_acct)
262
263/* kernel/capability.c */
264#define __NR_capget 90
265__SYSCALL(__NR_capget, sys_capget)
266#define __NR_capset 91
267__SYSCALL(__NR_capset, sys_capset)
268
269/* kernel/exec_domain.c */
270#define __NR_personality 92
271__SYSCALL(__NR_personality, sys_personality)
272
273/* kernel/exit.c */
274#define __NR_exit 93
275__SYSCALL(__NR_exit, sys_exit)
276#define __NR_exit_group 94
277__SYSCALL(__NR_exit_group, sys_exit_group)
278#define __NR_waitid 95
279__SYSCALL(__NR_waitid, sys_waitid)
280
281/* kernel/fork.c */
282#define __NR_set_tid_address 96
283__SYSCALL(__NR_set_tid_address, sys_set_tid_address)
284#define __NR_unshare 97
285__SYSCALL(__NR_unshare, sys_unshare)
286
287/* kernel/futex.c */
288#define __NR_futex 98
289__SYSCALL(__NR_futex, sys_futex)
290#define __NR_set_robust_list 99
291__SYSCALL(__NR_set_robust_list, sys_set_robust_list)
292#define __NR_get_robust_list 100
293__SYSCALL(__NR_get_robust_list, sys_get_robust_list)
294
295/* kernel/hrtimer.c */
296#define __NR_nanosleep 101
297__SYSCALL(__NR_nanosleep, sys_nanosleep)
298
299/* kernel/itimer.c */
300#define __NR_getitimer 102
301__SYSCALL(__NR_getitimer, sys_getitimer)
302#define __NR_setitimer 103
303__SYSCALL(__NR_setitimer, sys_setitimer)
304
305/* kernel/kexec.c */
306#define __NR_kexec_load 104
307__SYSCALL(__NR_kexec_load, sys_kexec_load)
308
309/* kernel/module.c */
310#define __NR_init_module 105
311__SYSCALL(__NR_init_module, sys_init_module)
312#define __NR_delete_module 106
313__SYSCALL(__NR_delete_module, sys_delete_module)
314
315/* kernel/posix-timers.c */
316#define __NR_timer_create 107
317__SYSCALL(__NR_timer_create, sys_timer_create)
318#define __NR_timer_gettime 108
319__SYSCALL(__NR_timer_gettime, sys_timer_gettime)
320#define __NR_timer_getoverrun 109
321__SYSCALL(__NR_timer_getoverrun, sys_timer_getoverrun)
322#define __NR_timer_settime 110
323__SYSCALL(__NR_timer_settime, sys_timer_settime)
324#define __NR_timer_delete 111
325__SYSCALL(__NR_timer_delete, sys_timer_delete)
326#define __NR_clock_settime 112
327__SYSCALL(__NR_clock_settime, sys_clock_settime)
328#define __NR_clock_gettime 113
329__SYSCALL(__NR_clock_gettime, sys_clock_gettime)
330#define __NR_clock_getres 114
331__SYSCALL(__NR_clock_getres, sys_clock_getres)
332#define __NR_clock_nanosleep 115
333__SYSCALL(__NR_clock_nanosleep, sys_clock_nanosleep)
334
335/* kernel/printk.c */
336#define __NR_syslog 116
337__SYSCALL(__NR_syslog, sys_syslog)
338
339/* kernel/ptrace.c */
340#define __NR_ptrace 117
341__SYSCALL(__NR_ptrace, sys_ptrace)
342
343/* kernel/sched.c */
344#define __NR_sched_setparam 118
345__SYSCALL(__NR_sched_setparam, sys_sched_setparam)
346#define __NR_sched_setscheduler 119
347__SYSCALL(__NR_sched_setscheduler, sys_sched_setscheduler)
348#define __NR_sched_getscheduler 120
349__SYSCALL(__NR_sched_getscheduler, sys_sched_getscheduler)
350#define __NR_sched_getparam 121
351__SYSCALL(__NR_sched_getparam, sys_sched_getparam)
352#define __NR_sched_setaffinity 122
353__SYSCALL(__NR_sched_setaffinity, sys_sched_setaffinity)
354#define __NR_sched_getaffinity 123
355__SYSCALL(__NR_sched_getaffinity, sys_sched_getaffinity)
356#define __NR_sched_yield 124
357__SYSCALL(__NR_sched_yield, sys_sched_yield)
358#define __NR_sched_get_priority_max 125
359__SYSCALL(__NR_sched_get_priority_max, sys_sched_get_priority_max)
360#define __NR_sched_get_priority_min 126
361__SYSCALL(__NR_sched_get_priority_min, sys_sched_get_priority_min)
362#define __NR_sched_rr_get_interval 127
363__SYSCALL(__NR_sched_rr_get_interval, sys_sched_rr_get_interval)
364
365/* kernel/signal.c */
366#define __NR_restart_syscall 128
367__SYSCALL(__NR_restart_syscall, sys_restart_syscall)
368#define __NR_kill 129
369__SYSCALL(__NR_kill, sys_kill)
370#define __NR_tkill 130
371__SYSCALL(__NR_tkill, sys_tkill)
372#define __NR_tgkill 131
373__SYSCALL(__NR_tgkill, sys_tgkill)
374#define __NR_sigaltstack 132
375__SYSCALL(__NR_sigaltstack, sys_sigaltstack)
376#define __NR_rt_sigsuspend 133
377__SYSCALL(__NR_rt_sigsuspend, sys_rt_sigsuspend) /* __ARCH_WANT_SYS_RT_SIGSUSPEND */
378#define __NR_rt_sigaction 134
379__SYSCALL(__NR_rt_sigaction, sys_rt_sigaction) /* __ARCH_WANT_SYS_RT_SIGACTION */
380#define __NR_rt_sigprocmask 135
381__SYSCALL(__NR_rt_sigprocmask, sys_rt_sigprocmask)
382#define __NR_rt_sigpending 136
383__SYSCALL(__NR_rt_sigpending, sys_rt_sigpending)
384#define __NR_rt_sigtimedwait 137
385__SYSCALL(__NR_rt_sigtimedwait, sys_rt_sigtimedwait)
386#define __NR_rt_sigqueueinfo 138
387__SYSCALL(__NR_rt_sigqueueinfo, sys_rt_sigqueueinfo)
388#define __NR_rt_sigreturn 139
389__SYSCALL(__NR_rt_sigreturn, sys_rt_sigreturn) /* sys_rt_sigreturn_wrapper, */
390
391/* kernel/sys.c */
392#define __NR_setpriority 140
393__SYSCALL(__NR_setpriority, sys_setpriority)
394#define __NR_getpriority 141
395__SYSCALL(__NR_getpriority, sys_getpriority)
396#define __NR_reboot 142
397__SYSCALL(__NR_reboot, sys_reboot)
398#define __NR_setregid 143
399__SYSCALL(__NR_setregid, sys_setregid)
400#define __NR_setgid 144
401__SYSCALL(__NR_setgid, sys_setgid)
402#define __NR_setreuid 145
403__SYSCALL(__NR_setreuid, sys_setreuid)
404#define __NR_setuid 146
405__SYSCALL(__NR_setuid, sys_setuid)
406#define __NR_setresuid 147
407__SYSCALL(__NR_setresuid, sys_setresuid)
408#define __NR_getresuid 148
409__SYSCALL(__NR_getresuid, sys_getresuid)
410#define __NR_setresgid 149
411__SYSCALL(__NR_setresgid, sys_setresgid)
412#define __NR_getresgid 150
413__SYSCALL(__NR_getresgid, sys_getresgid)
414#define __NR_setfsuid 151
415__SYSCALL(__NR_setfsuid, sys_setfsuid)
416#define __NR_setfsgid 152
417__SYSCALL(__NR_setfsgid, sys_setfsgid)
418#define __NR_times 153
419__SYSCALL(__NR_times, sys_times)
420#define __NR_setpgid 154
421__SYSCALL(__NR_setpgid, sys_setpgid)
422#define __NR_getpgid 155
423__SYSCALL(__NR_getpgid, sys_getpgid)
424#define __NR_getsid 156
425__SYSCALL(__NR_getsid, sys_getsid)
426#define __NR_setsid 157
427__SYSCALL(__NR_setsid, sys_setsid)
428#define __NR_getgroups 158
429__SYSCALL(__NR_getgroups, sys_getgroups)
430#define __NR_setgroups 159
431__SYSCALL(__NR_setgroups, sys_setgroups)
432#define __NR_uname 160
433__SYSCALL(__NR_uname, sys_newuname)
434#define __NR_sethostname 161
435__SYSCALL(__NR_sethostname, sys_sethostname)
436#define __NR_setdomainname 162
437__SYSCALL(__NR_setdomainname, sys_setdomainname)
438#define __NR_getrlimit 163
439__SYSCALL(__NR_getrlimit, sys_getrlimit)
440#define __NR_setrlimit 164
441__SYSCALL(__NR_setrlimit, sys_setrlimit)
442#define __NR_getrusage 165
443__SYSCALL(__NR_getrusage, sys_getrusage)
444#define __NR_umask 166
445__SYSCALL(__NR_umask, sys_umask)
446#define __NR_prctl 167
447__SYSCALL(__NR_prctl, sys_prctl)
448#define __NR_getcpu 168
449__SYSCALL(__NR_getcpu, sys_getcpu)
450
451/* kernel/time.c */
452#define __NR_gettimeofday 169
453__SYSCALL(__NR_gettimeofday, sys_gettimeofday)
454#define __NR_settimeofday 170
455__SYSCALL(__NR_settimeofday, sys_settimeofday)
456#define __NR_adjtimex 171
457__SYSCALL(__NR_adjtimex, sys_adjtimex)
458
459/* kernel/timer.c */
460#define __NR_getpid 172
461__SYSCALL(__NR_getpid, sys_getpid)
462#define __NR_getppid 173
463__SYSCALL(__NR_getppid, sys_getppid)
464#define __NR_getuid 174
465__SYSCALL(__NR_getuid, sys_getuid)
466#define __NR_geteuid 175
467__SYSCALL(__NR_geteuid, sys_geteuid)
468#define __NR_getgid 176
469__SYSCALL(__NR_getgid, sys_getgid)
470#define __NR_getegid 177
471__SYSCALL(__NR_getegid, sys_getegid)
472#define __NR_gettid 178
473__SYSCALL(__NR_gettid, sys_gettid)
474#define __NR_sysinfo 179
475__SYSCALL(__NR_sysinfo, sys_sysinfo)
476
477/* ipc/mqueue.c */
478#define __NR_mq_open 180
479__SYSCALL(__NR_mq_open, sys_mq_open)
480#define __NR_mq_unlink 181
481__SYSCALL(__NR_mq_unlink, sys_mq_unlink)
482#define __NR_mq_timedsend 182
483__SYSCALL(__NR_mq_timedsend, sys_mq_timedsend)
484#define __NR_mq_timedreceive 183
485__SYSCALL(__NR_mq_timedreceive, sys_mq_timedreceive)
486#define __NR_mq_notify 184
487__SYSCALL(__NR_mq_notify, sys_mq_notify)
488#define __NR_mq_getsetattr 185
489__SYSCALL(__NR_mq_getsetattr, sys_mq_getsetattr)
490
491/* ipc/msg.c */
492#define __NR_msgget 186
493__SYSCALL(__NR_msgget, sys_msgget)
494#define __NR_msgctl 187
495__SYSCALL(__NR_msgctl, sys_msgctl)
496#define __NR_msgrcv 188
497__SYSCALL(__NR_msgrcv, sys_msgrcv)
498#define __NR_msgsnd 189
499__SYSCALL(__NR_msgsnd, sys_msgsnd)
500
501/* ipc/sem.c */
502#define __NR_semget 190
503__SYSCALL(__NR_semget, sys_semget)
504#define __NR_semctl 191
505__SYSCALL(__NR_semctl, sys_semctl)
506#define __NR_semtimedop 192
507__SYSCALL(__NR_semtimedop, sys_semtimedop)
508#define __NR_semop 193
509__SYSCALL(__NR_semop, sys_semop)
510
511/* ipc/shm.c */
512#define __NR_shmget 194
513__SYSCALL(__NR_shmget, sys_shmget)
514#define __NR_shmctl 195
515__SYSCALL(__NR_shmctl, sys_shmctl)
516#define __NR_shmat 196
517__SYSCALL(__NR_shmat, sys_shmat)
518#define __NR_shmdt 197
519__SYSCALL(__NR_shmdt, sys_shmdt)
520
521/* net/socket.c */
522#define __NR_socket 198
523__SYSCALL(__NR_socket, sys_socket)
524#define __NR_socketpair 199
525__SYSCALL(__NR_socketpair, sys_socketpair)
526#define __NR_bind 200
527__SYSCALL(__NR_bind, sys_bind)
528#define __NR_listen 201
529__SYSCALL(__NR_listen, sys_listen)
530#define __NR_accept 202
531__SYSCALL(__NR_accept, sys_accept)
532#define __NR_connect 203
533__SYSCALL(__NR_connect, sys_connect)
534#define __NR_getsockname 204
535__SYSCALL(__NR_getsockname, sys_getsockname)
536#define __NR_getpeername 205
537__SYSCALL(__NR_getpeername, sys_getpeername)
538#define __NR_sendto 206
539__SYSCALL(__NR_sendto, sys_sendto)
540#define __NR_recvfrom 207
541__SYSCALL(__NR_recvfrom, sys_recvfrom)
542#define __NR_setsockopt 208
543__SYSCALL(__NR_setsockopt, sys_setsockopt)
544#define __NR_getsockopt 209
545__SYSCALL(__NR_getsockopt, sys_getsockopt)
546#define __NR_shutdown 210
547__SYSCALL(__NR_shutdown, sys_shutdown)
548#define __NR_sendmsg 211
549__SYSCALL(__NR_sendmsg, sys_sendmsg)
550#define __NR_recvmsg 212
551__SYSCALL(__NR_recvmsg, sys_recvmsg)
552
553/* mm/filemap.c */
554#define __NR_readahead 213
555__SYSCALL(__NR_readahead, sys_readahead)
556
557/* mm/nommu.c, also with MMU */
558#define __NR_brk 214
559__SYSCALL(__NR_brk, sys_brk)
560#define __NR_munmap 215
561__SYSCALL(__NR_munmap, sys_munmap)
562#define __NR_mremap 216
563__SYSCALL(__NR_mremap, sys_mremap)
564
565/* security/keys/keyctl.c */
566#define __NR_add_key 217
567__SYSCALL(__NR_add_key, sys_add_key)
568#define __NR_request_key 218
569__SYSCALL(__NR_request_key, sys_request_key)
570#define __NR_keyctl 219
571__SYSCALL(__NR_keyctl, sys_keyctl)
572
573/* arch/example/kernel/sys_example.c */
574#define __NR_clone 220
575__SYSCALL(__NR_clone, sys_clone) /* .long sys_clone_wrapper */
576#define __NR_execve 221
577__SYSCALL(__NR_execve, sys_execve) /* .long sys_execve_wrapper */
578
579#define __NR3264_mmap 222
580__SC_3264(__NR3264_mmap, sys_mmap2, sys_mmap)
581/* mm/fadvise.c */
582#define __NR3264_fadvise64 223
583__SC_3264(__NR3264_fadvise64, sys_fadvise64_64, sys_fadvise64)
584
585/* mm/, CONFIG_MMU only */
586#ifndef __ARCH_NOMMU
587#define __NR_swapon 224
588__SYSCALL(__NR_swapon, sys_swapon)
589#define __NR_swapoff 225
590__SYSCALL(__NR_swapoff, sys_swapoff)
591#define __NR_mprotect 226
592__SYSCALL(__NR_mprotect, sys_mprotect)
593#define __NR_msync 227
594__SYSCALL(__NR_msync, sys_msync)
595#define __NR_mlock 228
596__SYSCALL(__NR_mlock, sys_mlock)
597#define __NR_munlock 229
598__SYSCALL(__NR_munlock, sys_munlock)
599#define __NR_mlockall 230
600__SYSCALL(__NR_mlockall, sys_mlockall)
601#define __NR_munlockall 231
602__SYSCALL(__NR_munlockall, sys_munlockall)
603#define __NR_mincore 232
604__SYSCALL(__NR_mincore, sys_mincore)
605#define __NR_madvise 233
606__SYSCALL(__NR_madvise, sys_madvise)
607#define __NR_remap_file_pages 234
608__SYSCALL(__NR_remap_file_pages, sys_remap_file_pages)
609#define __NR_mbind 235
610__SYSCALL(__NR_mbind, sys_mbind)
611#define __NR_get_mempolicy 236
612__SYSCALL(__NR_get_mempolicy, sys_get_mempolicy)
613#define __NR_set_mempolicy 237
614__SYSCALL(__NR_set_mempolicy, sys_set_mempolicy)
615#define __NR_migrate_pages 238
616__SYSCALL(__NR_migrate_pages, sys_migrate_pages)
617#define __NR_move_pages 239
618__SYSCALL(__NR_move_pages, sys_move_pages)
619#endif
620
621#undef __NR_syscalls
622#define __NR_syscalls 240
623
624/*
625 * All syscalls below here should go away really,
626 * these are provided for both review and as a porting
627 * help for the C library version.
628*
629 * Last chance: are any of these important enought to
630 * enable by default?
631 */
632#ifdef __ARCH_WANT_SYSCALL_NO_AT
633#define __NR_open 1024
634__SYSCALL(__NR_open, sys_open)
635#define __NR_link 1025
636__SYSCALL(__NR_link, sys_link)
637#define __NR_unlink 1026
638__SYSCALL(__NR_unlink, sys_unlink)
639#define __NR_mknod 1027
640__SYSCALL(__NR_mknod, sys_mknod)
641#define __NR_chmod 1028
642__SYSCALL(__NR_chmod, sys_chmod)
643#define __NR_chown 1029
644__SYSCALL(__NR_chown, sys_chown)
645#define __NR_mkdir 1030
646__SYSCALL(__NR_mkdir, sys_mkdir)
647#define __NR_rmdir 1031
648__SYSCALL(__NR_rmdir, sys_rmdir)
649#define __NR_lchown 1032
650__SYSCALL(__NR_lchown, sys_lchown)
651#define __NR_access 1033
652__SYSCALL(__NR_access, sys_access)
653#define __NR_rename 1034
654__SYSCALL(__NR_rename, sys_rename)
655#define __NR_readlink 1035
656__SYSCALL(__NR_readlink, sys_readlink)
657#define __NR_symlink 1036
658__SYSCALL(__NR_symlink, sys_symlink)
659#define __NR_utimes 1037
660__SYSCALL(__NR_utimes, sys_utimes)
661#define __NR3264_stat 1038
662__SC_3264(__NR3264_stat, sys_stat64, sys_newstat)
663#define __NR3264_lstat 1039
664__SC_3264(__NR3264_lstat, sys_lstat64, sys_newlstat)
665
666#undef __NR_syscalls
667#define __NR_syscalls (__NR3264_lstat+1)
668#endif /* __ARCH_WANT_SYSCALL_NO_AT */
669
670#ifdef __ARCH_WANT_SYSCALL_NO_FLAGS
671#define __NR_pipe 1040
672__SYSCALL(__NR_pipe, sys_pipe)
673#define __NR_dup2 1041
674__SYSCALL(__NR_dup2, sys_dup2)
675#define __NR_epoll_create 1042
676__SYSCALL(__NR_epoll_create, sys_epoll_create)
677#define __NR_inotify_init 1043
678__SYSCALL(__NR_inotify_init, sys_inotify_init)
679#define __NR_eventfd 1044
680__SYSCALL(__NR_eventfd, sys_eventfd)
681#define __NR_signalfd 1045
682__SYSCALL(__NR_signalfd, sys_signalfd)
683
684#undef __NR_syscalls
685#define __NR_syscalls (__NR_signalfd+1)
686#endif /* __ARCH_WANT_SYSCALL_NO_FLAGS */
687
688#if __BITS_PER_LONG == 32 && defined(__ARCH_WANT_SYSCALL_OFF_T)
689#define __NR_sendfile 1046
690__SYSCALL(__NR_sendfile, sys_sendfile)
691#define __NR_ftruncate 1047
692__SYSCALL(__NR_ftruncate, sys_ftruncate)
693#define __NR_truncate 1048
694__SYSCALL(__NR_truncate, sys_truncate)
695#define __NR_stat 1049
696__SYSCALL(__NR_stat, sys_newstat)
697#define __NR_lstat 1050
698__SYSCALL(__NR_lstat, sys_newlstat)
699#define __NR_fstat 1051
700__SYSCALL(__NR_fstat, sys_newfstat)
701#define __NR_fcntl 1052
702__SYSCALL(__NR_fcntl, sys_fcntl)
703#define __NR_fadvise64 1053
704#define __ARCH_WANT_SYS_FADVISE64
705__SYSCALL(__NR_fadvise64, sys_fadvise64)
706#define __NR_newfstatat 1054
707#define __ARCH_WANT_SYS_NEWFSTATAT
708__SYSCALL(__NR_newfstatat, sys_newfstatat)
709#define __NR_fstatfs 1055
710__SYSCALL(__NR_fstatfs, sys_fstatfs)
711#define __NR_statfs 1056
712__SYSCALL(__NR_statfs, sys_statfs)
713#define __NR_lseek 1057
714__SYSCALL(__NR_lseek, sys_lseek)
715#define __NR_mmap 1058
716__SYSCALL(__NR_mmap, sys_mmap)
717
718#undef __NR_syscalls
719#define __NR_syscalls (__NR_mmap+1)
720#endif /* 32 bit off_t syscalls */
721
722#ifdef __ARCH_WANT_SYSCALL_DEPRECATED
723#define __NR_alarm 1059
724#define __ARCH_WANT_SYS_ALARM
725__SYSCALL(__NR_alarm, sys_alarm)
726#define __NR_getpgrp 1060
727#define __ARCH_WANT_SYS_GETPGRP
728__SYSCALL(__NR_getpgrp, sys_getpgrp)
729#define __NR_pause 1061
730#define __ARCH_WANT_SYS_PAUSE
731__SYSCALL(__NR_pause, sys_pause)
732#define __NR_time 1062
733#define __ARCH_WANT_SYS_TIME
734__SYSCALL(__NR_time, sys_time)
735#define __NR_utime 1063
736#define __ARCH_WANT_SYS_UTIME
737__SYSCALL(__NR_utime, sys_utime)
738
739#define __NR_creat 1064
740__SYSCALL(__NR_creat, sys_creat)
741#define __NR_getdents 1065
742#define __ARCH_WANT_SYS_GETDENTS
743__SYSCALL(__NR_getdents, sys_getdents)
744#define __NR_futimesat 1066
745__SYSCALL(__NR_futimesat, sys_futimesat)
746#define __NR_select 1067
747#define __ARCH_WANT_SYS_SELECT
748__SYSCALL(__NR_select, sys_select)
749#define __NR_poll 1068
750__SYSCALL(__NR_poll, sys_poll)
751#define __NR_epoll_wait 1069
752__SYSCALL(__NR_epoll_wait, sys_epoll_wait)
753#define __NR_ustat 1070
754__SYSCALL(__NR_ustat, sys_ustat)
755#define __NR_vfork 1071
756__SYSCALL(__NR_vfork, sys_vfork)
757#define __NR_wait4 1072
758__SYSCALL(__NR_wait4, sys_wait4)
759#define __NR_recv 1073
760__SYSCALL(__NR_recv, sys_recv)
761#define __NR_send 1074
762__SYSCALL(__NR_send, sys_send)
763#define __NR_bdflush 1075
764__SYSCALL(__NR_bdflush, sys_bdflush)
765#define __NR_umount 1076
766__SYSCALL(__NR_umount, sys_oldumount)
767#define __ARCH_WANT_SYS_OLDUMOUNT
768#define __NR_uselib 1077
769__SYSCALL(__NR_uselib, sys_uselib)
770#define __NR__sysctl 1078
771__SYSCALL(__NR__sysctl, sys_sysctl)
772
773#define __NR_fork 1079
774#ifdef CONFIG_MMU
775__SYSCALL(__NR_fork, sys_fork)
776#else
777__SYSCALL(__NR_fork, sys_ni_syscall)
778#endif /* CONFIG_MMU */
779
780#undef __NR_syscalls
781#define __NR_syscalls (__NR_fork+1)
782
783#endif /* __ARCH_WANT_SYSCALL_DEPRECATED */
784
785/*
786 * 32 bit systems traditionally used different
787 * syscalls for off_t and loff_t arguments, while
788 * 64 bit systems only need the off_t version.
789 * For new 32 bit platforms, there is no need to
790 * implement the old 32 bit off_t syscalls, so
791 * they take different names.
792 * Here we map the numbers so that both versions
793 * use the same syscall table layout.
794 */
795#if __BITS_PER_LONG == 64
796#define __NR_fcntl __NR3264_fcntl
797#define __NR_statfs __NR3264_statfs
798#define __NR_fstatfs __NR3264_fstatfs
799#define __NR_truncate __NR3264_truncate
800#define __NR_ftruncate __NR3264_truncate
801#define __NR_lseek __NR3264_lseek
802#define __NR_sendfile __NR3264_sendfile
803#define __NR_newfstatat __NR3264_fstatat
804#define __NR_fstat __NR3264_fstat
805#define __NR_mmap __NR3264_mmap
806#define __NR_fadvise64 __NR3264_fadvise64
807#ifdef __NR3264_stat
808#define __NR_stat __NR3264_stat
809#define __NR_lstat __NR3264_lstat
810#endif
811#else
812#define __NR_fcntl64 __NR3264_fcntl
813#define __NR_statfs64 __NR3264_statfs
814#define __NR_fstatfs64 __NR3264_fstatfs
815#define __NR_truncate64 __NR3264_truncate
816#define __NR_ftruncate64 __NR3264_truncate
817#define __NR_llseek __NR3264_lseek
818#define __NR_sendfile64 __NR3264_sendfile
819#define __NR_fstatat64 __NR3264_fstatat
820#define __NR_fstat64 __NR3264_fstat
821#define __NR_mmap2 __NR3264_mmap
822#define __NR_fadvise64_64 __NR3264_fadvise64
823#ifdef __NR3264_stat
824#define __NR_stat64 __NR3264_stat
825#define __NR_lstat64 __NR3264_lstat
826#endif
827#endif
828
829#ifdef __KERNEL__
830
831/*
832 * These are required system calls, we should
833 * invert the logic eventually and let them
834 * be selected by default.
835 */
836#if __BITS_PER_LONG == 32
837#define __ARCH_WANT_STAT64
838#define __ARCH_WANT_SYS_LLSEEK
839#endif
840#define __ARCH_WANT_SYS_RT_SIGACTION
841#define __ARCH_WANT_SYS_RT_SIGSUSPEND
842
843/*
844 * "Conditional" syscalls
845 *
846 * What we want is __attribute__((weak,alias("sys_ni_syscall"))),
847 * but it doesn't work on all toolchains, so we just do it by hand
848 */
849#ifndef cond_syscall
850#define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall")
851#endif
852
853#endif /* __KERNEL__ */
854#endif /* _ASM_GENERIC_UNISTD_H */
diff --git a/scripts/checksyscalls.sh b/scripts/checksyscalls.sh
index 60d00d1c4eee..66ad375612f2 100755
--- a/scripts/checksyscalls.sh
+++ b/scripts/checksyscalls.sh
@@ -14,6 +14,57 @@ cat << EOF
14#include <asm/types.h> 14#include <asm/types.h>
15#include <asm/unistd.h> 15#include <asm/unistd.h>
16 16
17/* *at */
18#define __IGNORE_open /* openat */
19#define __IGNORE_link /* linkat */
20#define __IGNORE_unlink /* unlinkat */
21#define __IGNORE_mknod /* mknodat */
22#define __IGNORE_chmod /* fchmodat */
23#define __IGNORE_chown /* fchownat */
24#define __IGNORE_mkdir /* mkdirat */
25#define __IGNORE_rmdir /* unlinkat */
26#define __IGNORE_lchown /* fchownat */
27#define __IGNORE_access /* faccessat */
28#define __IGNORE_rename /* renameat */
29#define __IGNORE_readlink /* readlinkat */
30#define __IGNORE_symlink /* symlinkat */
31#define __IGNORE_utimes /* futimesat */
32#if BITS_PER_LONG == 64
33#define __IGNORE_stat /* fstatat */
34#define __IGNORE_lstat /* fstatat */
35#else
36#define __IGNORE_stat64 /* fstatat64 */
37#define __IGNORE_lstat64 /* fstatat64 */
38#endif
39
40/* CLOEXEC flag */
41#define __IGNORE_pipe /* pipe2 */
42#define __IGNORE_dup2 /* dup3 */
43#define __IGNORE_epoll_create /* epoll_create1 */
44#define __IGNORE_inotify_init /* inotify_init1 */
45#define __IGNORE_eventfd /* eventfd2 */
46#define __IGNORE_signalfd /* signalfd4 */
47
48/* MMU */
49#ifndef CONFIG_MMU
50#define __IGNORE_madvise
51#define __IGNORE_mbind
52#define __IGNORE_mincore
53#define __IGNORE_mlock
54#define __IGNORE_mlockall
55#define __IGNORE_munlock
56#define __IGNORE_munlockall
57#define __IGNORE_mprotect
58#define __IGNORE_msync
59#define __IGNORE_migrate_pages
60#define __IGNORE_move_pages
61#define __IGNORE_remap_file_pages
62#define __IGNORE_get_mempolicy
63#define __IGNORE_set_mempolicy
64#define __IGNORE_swapoff
65#define __IGNORE_swapon
66#endif
67
17/* System calls for 32-bit kernels only */ 68/* System calls for 32-bit kernels only */
18#if BITS_PER_LONG == 64 69#if BITS_PER_LONG == 64
19#define __IGNORE_sendfile64 70#define __IGNORE_sendfile64
@@ -27,6 +78,22 @@ cat << EOF
27#define __IGNORE_fstatat64 78#define __IGNORE_fstatat64
28#define __IGNORE_fstatfs64 79#define __IGNORE_fstatfs64
29#define __IGNORE_statfs64 80#define __IGNORE_statfs64
81#define __IGNORE_llseek
82#define __IGNORE_mmap2
83#else
84#define __IGNORE_sendfile
85#define __IGNORE_ftruncate
86#define __IGNORE_truncate
87#define __IGNORE_stat
88#define __IGNORE_lstat
89#define __IGNORE_fstat
90#define __IGNORE_fcntl
91#define __IGNORE_fadvise64
92#define __IGNORE_newfstatat
93#define __IGNORE_fstatfs
94#define __IGNORE_statfs
95#define __IGNORE_lseek
96#define __IGNORE_mmap
30#endif 97#endif
31 98
32/* i386-specific or historical system calls */ 99/* i386-specific or historical system calls */
@@ -44,7 +111,6 @@ cat << EOF
44#define __IGNORE_idle 111#define __IGNORE_idle
45#define __IGNORE_modify_ldt 112#define __IGNORE_modify_ldt
46#define __IGNORE_ugetrlimit 113#define __IGNORE_ugetrlimit
47#define __IGNORE_mmap2
48#define __IGNORE_vm86 114#define __IGNORE_vm86
49#define __IGNORE_vm86old 115#define __IGNORE_vm86old
50#define __IGNORE_set_thread_area 116#define __IGNORE_set_thread_area
@@ -55,7 +121,6 @@ cat << EOF
55#define __IGNORE_oldlstat 121#define __IGNORE_oldlstat
56#define __IGNORE_oldolduname 122#define __IGNORE_oldolduname
57#define __IGNORE_olduname 123#define __IGNORE_olduname
58#define __IGNORE_umount2
59#define __IGNORE_umount 124#define __IGNORE_umount
60#define __IGNORE_waitpid 125#define __IGNORE_waitpid
61#define __IGNORE_stime 126#define __IGNORE_stime
@@ -75,9 +140,12 @@ cat << EOF
75#define __IGNORE__llseek 140#define __IGNORE__llseek
76#define __IGNORE__newselect 141#define __IGNORE__newselect
77#define __IGNORE_create_module 142#define __IGNORE_create_module
78#define __IGNORE_delete_module
79#define __IGNORE_query_module 143#define __IGNORE_query_module
80#define __IGNORE_get_kernel_syms 144#define __IGNORE_get_kernel_syms
145#define __IGNORE_sysfs
146#define __IGNORE_uselib
147#define __IGNORE__sysctl
148
81/* ... including the "new" 32-bit uid syscalls */ 149/* ... including the "new" 32-bit uid syscalls */
82#define __IGNORE_lchown32 150#define __IGNORE_lchown32
83#define __IGNORE_getuid32 151#define __IGNORE_getuid32
@@ -99,6 +167,24 @@ cat << EOF
99#define __IGNORE_setfsuid32 167#define __IGNORE_setfsuid32
100#define __IGNORE_setfsgid32 168#define __IGNORE_setfsgid32
101 169
170/* these can be expressed using other calls */
171#define __IGNORE_alarm /* setitimer */
172#define __IGNORE_creat /* open */
173#define __IGNORE_fork /* clone */
174#define __IGNORE_futimesat /* utimensat */
175#define __IGNORE_getpgrp /* getpgid */
176#define __IGNORE_getdents /* getdents64 */
177#define __IGNORE_pause /* sigsuspend */
178#define __IGNORE_poll /* ppoll */
179#define __IGNORE_select /* pselect6 */
180#define __IGNORE_epoll_wait /* epoll_pwait */
181#define __IGNORE_time /* gettimeofday */
182#define __IGNORE_uname /* newuname */
183#define __IGNORE_ustat /* statfs */
184#define __IGNORE_utime /* utimes */
185#define __IGNORE_vfork /* clone */
186#define __IGNORE_wait4 /* waitid */
187
102/* sync_file_range had a stupid ABI. Allow sync_file_range2 instead */ 188/* sync_file_range had a stupid ABI. Allow sync_file_range2 instead */
103#ifdef __NR_sync_file_range2 189#ifdef __NR_sync_file_range2
104#define __IGNORE_sync_file_range 190#define __IGNORE_sync_file_range