diff options
author | H. Peter Anvin <hpa@linux.intel.com> | 2011-11-11 18:55:49 -0500 |
---|---|---|
committer | H. Peter Anvin <hpa@linux.intel.com> | 2011-11-17 16:35:36 -0500 |
commit | d181764ccf6207e02abb95fb3052639b947f4833 (patch) | |
tree | cd37381b20d437d5d352a07b20fd4a01d332759b /arch/x86/syscalls | |
parent | d5e553d6e0a4bdea43adae7373e3fa144b9a1aaa (diff) |
x86: Machine-readable syscall tables and scripts to process them
Create a simple set of syscall tables and scripts to turn them into
both header files (unistd_*.h) and macros for generating the system
call tables.
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Diffstat (limited to 'arch/x86/syscalls')
-rw-r--r-- | arch/x86/syscalls/Makefile | 43 | ||||
-rw-r--r-- | arch/x86/syscalls/syscall_32.tbl | 357 | ||||
-rw-r--r-- | arch/x86/syscalls/syscall_64.tbl | 320 | ||||
-rw-r--r-- | arch/x86/syscalls/syscallhdr.sh | 36 | ||||
-rw-r--r-- | arch/x86/syscalls/syscalltbl.sh | 15 |
5 files changed, 771 insertions, 0 deletions
diff --git a/arch/x86/syscalls/Makefile b/arch/x86/syscalls/Makefile new file mode 100644 index 000000000000..564b2476fede --- /dev/null +++ b/arch/x86/syscalls/Makefile | |||
@@ -0,0 +1,43 @@ | |||
1 | out := $(obj)/../include/generated/asm | ||
2 | |||
3 | # Create output directory if not already present | ||
4 | _dummy := $(shell [ -d '$(out)' ] || mkdir -p '$(out)') | ||
5 | |||
6 | syscall32 := $(srctree)/$(src)/syscall_32.tbl | ||
7 | syscall64 := $(srctree)/$(src)/syscall_64.tbl | ||
8 | |||
9 | syshdr := $(srctree)/$(src)/syscallhdr.sh | ||
10 | systbl := $(srctree)/$(src)/syscalltbl.sh | ||
11 | |||
12 | quiet_cmd_syshdr = SYSHDR $@ | ||
13 | cmd_syshdr = $(CONFIG_SHELL) '$(syshdr)' $< $@ \ | ||
14 | $(syshdr_abi_$(basetarget)) $(syshdr_pfx_$(basetarget)) | ||
15 | quiet_cmd_systbl = SYSTBL $@ | ||
16 | cmd_systbl = $(CONFIG_SHELL) '$(systbl)' $< $@ | ||
17 | |||
18 | syshdr_abi_unistd_32 := i386 | ||
19 | $(out)/unistd_32.h: $(syscall32) $(syshdr) | ||
20 | $(call if_changed,syshdr) | ||
21 | |||
22 | syshdr_abi_unistd_32_ia32 := i386 | ||
23 | syshdr_pfx_unistd_32_ia32 := ia32_ | ||
24 | $(out)/unistd_32_ia32.h: $(syscall32) $(syshdr) | ||
25 | $(call if_changed,syshdr) | ||
26 | |||
27 | syshdr_abi_unistd_64 := 64 | ||
28 | $(out)/unistd_64.h: $(syscall64) $(syshdr) | ||
29 | $(call if_changed,syshdr) | ||
30 | |||
31 | $(out)/syscalls_32.h: $(syscall32) $(systbl) | ||
32 | $(call if_changed,systbl) | ||
33 | $(out)/syscalls_64.h: $(syscall64) $(systbl) | ||
34 | $(call if_changed,systbl) | ||
35 | |||
36 | syshdr-y += unistd_32.h unistd_64.h | ||
37 | syshdr-y += syscalls_32.h | ||
38 | syshdr-$(CONFIG_X86_64) += unistd_32_ia32.h | ||
39 | syshdr-$(CONFIG_X86_64) += syscalls_64.h | ||
40 | |||
41 | targets += $(syshdr-y) | ||
42 | |||
43 | all: $(addprefix $(out)/,$(targets)) | ||
diff --git a/arch/x86/syscalls/syscall_32.tbl b/arch/x86/syscalls/syscall_32.tbl new file mode 100644 index 000000000000..ce98e287c066 --- /dev/null +++ b/arch/x86/syscalls/syscall_32.tbl | |||
@@ -0,0 +1,357 @@ | |||
1 | # | ||
2 | # 32-bit system call numbers and entry vectors | ||
3 | # | ||
4 | # The format is: | ||
5 | # <number> <abi> <name> <entry point> <compat entry point> | ||
6 | # | ||
7 | # The abi is always "i386" for this file. | ||
8 | # | ||
9 | 0 i386 restart_syscall sys_restart_syscall | ||
10 | 1 i386 exit sys_exit | ||
11 | 2 i386 fork ptregs_fork stub32_fork | ||
12 | 3 i386 read sys_read | ||
13 | 4 i386 write sys_write | ||
14 | 5 i386 open sys_open compat_sys_open | ||
15 | 6 i386 close sys_close | ||
16 | 7 i386 waitpid sys_waitpid sys32_waitpid | ||
17 | 8 i386 creat sys_creat | ||
18 | 9 i386 link sys_link | ||
19 | 10 i386 unlink sys_unlink | ||
20 | 11 i386 execve ptregs_execve stub32_execve | ||
21 | 12 i386 chdir sys_chdir | ||
22 | 13 i386 time sys_time compat_sys_time | ||
23 | 14 i386 mknod sys_mknod | ||
24 | 15 i386 chmod sys_chmod | ||
25 | 16 i386 lchown sys_lchown16 | ||
26 | 17 i386 break | ||
27 | 18 i386 oldstat sys_stat | ||
28 | 19 i386 lseek sys_lseek sys32_lseek | ||
29 | 20 i386 getpid sys_getpid | ||
30 | 21 i386 mount sys_mount compat_sys_mount | ||
31 | 22 i386 umount sys_oldumount | ||
32 | 23 i386 setuid sys_setuid16 | ||
33 | 24 i386 getuid sys_getuid16 | ||
34 | 25 i386 stime sys_stime compat_sys_stime | ||
35 | 26 i386 ptrace sys_ptrace compat_sys_ptrace | ||
36 | 27 i386 alarm sys_alarm | ||
37 | 28 i386 oldfstat sys_fstat | ||
38 | 29 i386 pause sys_pause | ||
39 | 30 i386 utime sys_utime compat_sys_utime | ||
40 | 31 i386 stty | ||
41 | 32 i386 gtty | ||
42 | 33 i386 access sys_access | ||
43 | 34 i386 nice sys_nice | ||
44 | 35 i386 ftime | ||
45 | 36 i386 sync sys_sync | ||
46 | 37 i386 kill sys_kill sys32_kill | ||
47 | 38 i386 rename sys_rename | ||
48 | 39 i386 mkdir sys_mkdir | ||
49 | 40 i386 rmdir sys_rmdir | ||
50 | 41 i386 dup sys_dup | ||
51 | 42 i386 pipe sys_pipe | ||
52 | 43 i386 times sys_times compat_sys_times | ||
53 | 44 i386 prof | ||
54 | 45 i386 brk sys_brk | ||
55 | 46 i386 setgid sys_setgid16 | ||
56 | 47 i386 getgid sys_getgid16 | ||
57 | 48 i386 signal sys_signal | ||
58 | 49 i386 geteuid sys_geteuid16 | ||
59 | 50 i386 getegid sys_getegid16 | ||
60 | 51 i386 acct sys_acct | ||
61 | 52 i386 umount2 sys_umount | ||
62 | 53 i386 lock | ||
63 | 54 i386 ioctl sys_ioctl compat_sys_ioctl | ||
64 | 55 i386 fcntl sys_fcntl compat_sys_fcntl64 | ||
65 | 56 i386 mpx | ||
66 | 57 i386 setpgid sys_setpgid | ||
67 | 58 i386 ulimit | ||
68 | 59 i386 oldolduname sys_olduname | ||
69 | 60 i386 umask sys_umask | ||
70 | 61 i386 chroot sys_chroot | ||
71 | 62 i386 ustat sys_ustat compat_sys_ustat | ||
72 | 63 i386 dup2 sys_dup2 | ||
73 | 64 i386 getppid sys_getppid | ||
74 | 65 i386 getpgrp sys_getpgrp | ||
75 | 66 i386 setsid sys_setsid | ||
76 | 67 i386 sigaction sys_sigaction sys32_sigaction | ||
77 | 68 i386 sgetmask sys_sgetmask | ||
78 | 69 i386 ssetmask sys_ssetmask | ||
79 | 70 i386 setreuid sys_setreuid16 | ||
80 | 71 i386 setregid sys_setregid16 | ||
81 | 72 i386 sigsuspend sys_sigsuspend sys32_sigsuspend | ||
82 | 73 i386 sigpending sys_sigpending compat_sys_sigpending | ||
83 | 74 i386 sethostname sys_sethostname | ||
84 | 75 i386 setrlimit sys_setrlimit compat_sys_setrlimit | ||
85 | 76 i386 getrlimit sys_old_getrlimit compat_sys_old_getrlimit | ||
86 | 77 i386 getrusage sys_getrusage compat_sys_getrusage | ||
87 | 78 i386 gettimeofday sys_gettimeofday compat_sys_gettimeofday | ||
88 | 79 i386 settimeofday sys_settimeofday compat_sys_settimeofday | ||
89 | 80 i386 getgroups sys_getgroups16 | ||
90 | 81 i386 setgroups sys_setgroups16 | ||
91 | 82 i386 select sys_old_select compat_sys_old_select | ||
92 | 83 i386 symlink sys_symlink | ||
93 | 84 i386 oldlstat sys_lstat | ||
94 | 85 i386 readlink sys_readlink | ||
95 | 86 i386 uselib sys_uselib | ||
96 | 87 i386 swapon sys_swapon | ||
97 | 88 i386 reboot sys_reboot | ||
98 | 89 i386 readdir sys_old_readdir compat_sys_old_readdir | ||
99 | 90 i386 mmap sys_old_mmap sys32_mmap | ||
100 | 91 i386 munmap sys_munmap | ||
101 | 92 i386 truncate sys_truncate | ||
102 | 93 i386 ftruncate sys_ftruncate | ||
103 | 94 i386 fchmod sys_fchmod | ||
104 | 95 i386 fchown sys_fchown16 | ||
105 | 96 i386 getpriority sys_getpriority | ||
106 | 97 i386 setpriority sys_setpriority | ||
107 | 98 i386 profil | ||
108 | 99 i386 statfs sys_statfs compat_sys_statfs | ||
109 | 100 i386 fstatfs sys_fstatfs compat_sys_fstatfs | ||
110 | 101 i386 ioperm sys_ioperm | ||
111 | 102 i386 socketcall sys_socketcall compat_sys_socketcall | ||
112 | 103 i386 syslog sys_syslog | ||
113 | 104 i386 setitimer sys_setitimer compat_sys_setitimer | ||
114 | 105 i386 getitimer sys_getitimer compat_sys_getitimer | ||
115 | 106 i386 stat sys_newstat compat_sys_newstat | ||
116 | 107 i386 lstat sys_newlstat compat_sys_newlstat | ||
117 | 108 i386 fstat sys_newfstat compat_sys_newfstat | ||
118 | 109 i386 olduname sys_uname | ||
119 | 110 i386 iopl ptregs_iopl stub32_iopl | ||
120 | 111 i386 vhangup sys_vhangup | ||
121 | 112 i386 idle | ||
122 | 113 i386 vm86old ptregs_vm86old sys32_vm86_warning | ||
123 | 114 i386 wait4 sys_wait4 compat_sys_wait4 | ||
124 | 115 i386 swapoff sys_swapoff | ||
125 | 116 i386 sysinfo sys_sysinfo compat_sys_sysinfo | ||
126 | 117 i386 ipc sys_ipc sys32_ipc | ||
127 | 118 i386 fsync sys_fsync | ||
128 | 119 i386 sigreturn ptregs_sigreturn stub32_sigreturn | ||
129 | 120 i386 clone ptregs_clone stub32_clone | ||
130 | 121 i386 setdomainname sys_setdomainname | ||
131 | 122 i386 uname sys_newuname | ||
132 | 123 i386 modify_ldt sys_modify_ldt | ||
133 | 124 i386 adjtimex sys_adjtimex compat_sys_adjtimex | ||
134 | 125 i386 mprotect sys_mprotect sys32_mprotect | ||
135 | 126 i386 sigprocmask sys_sigprocmask compat_sys_sigprocmask | ||
136 | 127 i386 create_module | ||
137 | 128 i386 init_module sys_init_module | ||
138 | 129 i386 delete_module sys_delete_module | ||
139 | 130 i386 get_kernel_syms | ||
140 | 131 i386 quotactl sys_quotactl sys32_quotactl | ||
141 | 132 i386 getpgid sys_getpgid | ||
142 | 133 i386 fchdir sys_fchdir | ||
143 | 134 i386 bdflush sys_bdflush | ||
144 | 135 i386 sysfs sys_sysfs | ||
145 | 136 i386 personality sys_personality | ||
146 | 137 i386 afs_syscall | ||
147 | 138 i386 setfsuid sys_setfsuid16 | ||
148 | 139 i386 setfsgid sys_setfsgid16 | ||
149 | 140 i386 _llseek sys_llseek | ||
150 | 141 i386 getdents sys_getdents compat_sys_getdents | ||
151 | 142 i386 _newselect sys_select compat_sys_select | ||
152 | 143 i386 flock sys_flock | ||
153 | 144 i386 msync sys_msync | ||
154 | 145 i386 readv sys_readv compat_sys_readv | ||
155 | 146 i386 writev sys_writev compat_sys_writev | ||
156 | 147 i386 getsid sys_getsid | ||
157 | 148 i386 fdatasync sys_fdatasync | ||
158 | 149 i386 _sysctl sys_sysctl compat_sys_sysctl | ||
159 | 150 i386 mlock sys_mlock | ||
160 | 151 i386 munlock sys_munlock | ||
161 | 152 i386 mlockall sys_mlockall | ||
162 | 153 i386 munlockall sys_munlockall | ||
163 | 154 i386 sched_setparam sys_sched_setparam | ||
164 | 155 i386 sched_getparam sys_sched_getparam | ||
165 | 156 i386 sched_setscheduler sys_sched_setscheduler | ||
166 | 157 i386 sched_getscheduler sys_sched_getscheduler | ||
167 | 158 i386 sched_yield sys_sched_yield | ||
168 | 159 i386 sched_get_priority_max sys_sched_get_priority_max | ||
169 | 160 i386 sched_get_priority_min sys_sched_get_priority_min | ||
170 | 161 i386 sched_rr_get_interval sys_sched_rr_get_interval sys32_sched_rr_get_interval | ||
171 | 162 i386 nanosleep sys_nanosleep compat_sys_nanosleep | ||
172 | 163 i386 mremap sys_mremap | ||
173 | 164 i386 setresuid sys_setresuid16 | ||
174 | 165 i386 getresuid sys_getresuid16 | ||
175 | 166 i386 vm86 ptregs_vm86 sys32_vm86_warning | ||
176 | 167 i386 query_module | ||
177 | 168 i386 poll sys_poll | ||
178 | 169 i386 nfsservctl | ||
179 | 170 i386 setresgid sys_setresgid16 | ||
180 | 171 i386 getresgid sys_getresgid16 | ||
181 | 172 i386 prctl sys_prctl | ||
182 | 173 i386 rt_sigreturn ptregs_rt_sigreturn stub32_rt_sigreturn | ||
183 | 174 i386 rt_sigaction sys_rt_sigaction sys32_rt_sigaction | ||
184 | 175 i386 rt_sigprocmask sys_rt_sigprocmask sys32_rt_sigprocmask | ||
185 | 176 i386 rt_sigpending sys_rt_sigpending sys32_rt_sigpending | ||
186 | 177 i386 rt_sigtimedwait sys_rt_sigtimedwait compat_sys_rt_sigtimedwait | ||
187 | 178 i386 rt_sigqueueinfo sys_rt_sigqueueinfo sys32_rt_sigqueueinfo | ||
188 | 179 i386 rt_sigsuspend sys_rt_sigsuspend | ||
189 | 180 i386 pread64 sys_pread64 sys32_pread | ||
190 | 181 i386 pwrite64 sys_pwrite64 sys32_pwrite | ||
191 | 182 i386 chown sys_chown16 | ||
192 | 183 i386 getcwd sys_getcwd | ||
193 | 184 i386 capget sys_capget | ||
194 | 185 i386 capset sys_capset | ||
195 | 186 i386 sigaltstack ptregs_sigaltstack stub32_sigaltstack | ||
196 | 187 i386 sendfile sys_sendfile sys32_sendfile | ||
197 | 188 i386 getpmsg | ||
198 | 189 i386 putpmsg | ||
199 | 190 i386 vfork ptregs_vfork stub32_vfork | ||
200 | 191 i386 ugetrlimit sys_getrlimit compat_sys_getrlimit | ||
201 | 192 i386 mmap2 sys_mmap_pgoff | ||
202 | 193 i386 truncate64 sys_truncate64 sys32_truncate64 | ||
203 | 194 i386 ftruncate64 sys_ftruncate64 sys32_ftruncate64 | ||
204 | 195 i386 stat64 sys_stat64 sys32_stat64 | ||
205 | 196 i386 lstat64 sys_lstat64 sys32_lstat64 | ||
206 | 197 i386 fstat64 sys_fstat64 sys32_fstat64 | ||
207 | 198 i386 lchown32 sys_lchown | ||
208 | 199 i386 getuid32 sys_getuid | ||
209 | 200 i386 getgid32 sys_getgid | ||
210 | 201 i386 geteuid32 sys_geteuid | ||
211 | 202 i386 getegid32 sys_getegid | ||
212 | 203 i386 setreuid32 sys_setreuid | ||
213 | 204 i386 setregid32 sys_setregid | ||
214 | 205 i386 getgroups32 sys_getgroups | ||
215 | 206 i386 setgroups32 sys_setgroups | ||
216 | 207 i386 fchown32 sys_fchown | ||
217 | 208 i386 setresuid32 sys_setresuid | ||
218 | 209 i386 getresuid32 sys_getresuid | ||
219 | 210 i386 setresgid32 sys_setresgid | ||
220 | 211 i386 getresgid32 sys_getresgid | ||
221 | 212 i386 chown32 sys_chown | ||
222 | 213 i386 setuid32 sys_setuid | ||
223 | 214 i386 setgid32 sys_setgid | ||
224 | 215 i386 setfsuid32 sys_setfsuid | ||
225 | 216 i386 setfsgid32 sys_setfsgid | ||
226 | 217 i386 pivot_root sys_pivot_root | ||
227 | 218 i386 mincore sys_mincore | ||
228 | 219 i386 madvise sys_madvise | ||
229 | 220 i386 getdents64 sys_getdents64 compat_sys_getdents64 | ||
230 | 221 i386 fcntl64 sys_fcntl64 compat_sys_fcntl64 | ||
231 | # 222 is unused | ||
232 | # 223 is unused | ||
233 | 224 i386 gettid sys_gettid | ||
234 | 225 i386 readahead sys_readahead sys32_readahead | ||
235 | 226 i386 setxattr sys_setxattr | ||
236 | 227 i386 lsetxattr sys_lsetxattr | ||
237 | 228 i386 fsetxattr sys_fsetxattr | ||
238 | 229 i386 getxattr sys_getxattr | ||
239 | 230 i386 lgetxattr sys_lgetxattr | ||
240 | 231 i386 fgetxattr sys_fgetxattr | ||
241 | 232 i386 listxattr sys_listxattr | ||
242 | 233 i386 llistxattr sys_llistxattr | ||
243 | 234 i386 flistxattr sys_flistxattr | ||
244 | 235 i386 removexattr sys_removexattr | ||
245 | 236 i386 lremovexattr sys_lremovexattr | ||
246 | 237 i386 fremovexattr sys_fremovexattr | ||
247 | 238 i386 tkill sys_tkill | ||
248 | 239 i386 sendfile64 sys_sendfile64 | ||
249 | 240 i386 futex sys_futex compat_sys_futex | ||
250 | 241 i386 sched_setaffinity sys_sched_setaffinity compat_sys_sched_setaffinity | ||
251 | 242 i386 sched_getaffinity sys_sched_getaffinity compat_sys_sched_getaffinity | ||
252 | 243 i386 set_thread_area sys_set_thread_area | ||
253 | 244 i386 get_thread_area sys_get_thread_area | ||
254 | 245 i386 io_setup sys_io_setup compat_sys_io_setup | ||
255 | 246 i386 io_destroy sys_io_destroy | ||
256 | 247 i386 io_getevents sys_io_getevents compat_sys_io_getevents | ||
257 | 248 i386 io_submit sys_io_submit compat_sys_io_submit | ||
258 | 249 i386 io_cancel sys_io_cancel | ||
259 | 250 i386 fadvise64 sys_fadvise64 sys32_fadvise64 | ||
260 | # 251 is available for reuse (was briefly sys_set_zone_reclaim) | ||
261 | 252 i386 exit_group sys_exit_group | ||
262 | 253 i386 lookup_dcookie sys_lookup_dcookie sys32_lookup_dcookie | ||
263 | 254 i386 epoll_create sys_epoll_create | ||
264 | 255 i386 epoll_ctl sys_epoll_ctl | ||
265 | 256 i386 epoll_wait sys_epoll_wait | ||
266 | 257 i386 remap_file_pages sys_remap_file_pages | ||
267 | 258 i386 set_tid_address sys_set_tid_address | ||
268 | 259 i386 timer_create sys_timer_create compat_sys_timer_create | ||
269 | 260 i386 timer_settime sys_timer_settime compat_sys_timer_settime | ||
270 | 261 i386 timer_gettime sys_timer_gettime compat_sys_timer_gettime | ||
271 | 262 i386 timer_getoverrun sys_timer_getoverrun | ||
272 | 263 i386 timer_delete sys_timer_delete | ||
273 | 264 i386 clock_settime sys_clock_settime compat_sys_clock_settime | ||
274 | 265 i386 clock_gettime sys_clock_gettime compat_sys_clock_gettime | ||
275 | 266 i386 clock_getres sys_clock_getres compat_sys_clock_getres | ||
276 | 267 i386 clock_nanosleep sys_clock_nanosleep compat_sys_clock_nanosleep | ||
277 | 268 i386 statfs64 sys_statfs64 compat_sys_statfs64 | ||
278 | 269 i386 fstatfs64 sys_fstatfs64 compat_sys_fstatfs64 | ||
279 | 270 i386 tgkill sys_tgkill | ||
280 | 271 i386 utimes sys_utimes compat_sys_utimes | ||
281 | 272 i386 fadvise64_64 sys_fadvise64_64 sys32_fadvise64_64 | ||
282 | 273 i386 vserver | ||
283 | 274 i386 mbind sys_mbind | ||
284 | 275 i386 get_mempolicy sys_get_mempolicy compat_sys_get_mempolicy | ||
285 | 276 i386 set_mempolicy sys_set_mempolicy | ||
286 | 277 i386 mq_open sys_mq_open compat_sys_mq_open | ||
287 | 278 i386 mq_unlink sys_mq_unlink | ||
288 | 279 i386 mq_timedsend sys_mq_timedsend compat_sys_mq_timedsend | ||
289 | 280 i386 mq_timedreceive sys_mq_timedreceive compat_sys_mq_timedreceive | ||
290 | 281 i386 mq_notify sys_mq_notify compat_sys_mq_notify | ||
291 | 282 i386 mq_getsetaddr sys_mq_getsetattr compat_sys_mq_getsetattr | ||
292 | 283 i386 kexec_load sys_kexec_load compat_sys_kexec_load | ||
293 | 284 i386 waitid sys_waitid compat_sys_waitid | ||
294 | # 285 sys_setaltroot | ||
295 | 286 i386 add_key sys_add_key | ||
296 | 287 i386 request_key sys_request_key | ||
297 | 288 i386 keyctl sys_keyctl | ||
298 | 289 i386 ioprio_set sys_ioprio_set | ||
299 | 290 i386 ioprio_get sys_ioprio_get | ||
300 | 291 i386 inotify_init sys_inotify_init | ||
301 | 292 i386 inotify_add_watch sys_inotify_add_watch | ||
302 | 293 i386 inotify_rm_watch sys_inotify_rm_watch | ||
303 | 294 i386 migrate_pages sys_migrate_pages | ||
304 | 295 i386 openat sys_openat compat_sys_openat | ||
305 | 296 i386 mkdirat sys_mkdirat | ||
306 | 297 i386 mknodat sys_mknodat | ||
307 | 298 i386 fchownat sys_fchownat | ||
308 | 299 i386 futimesat sys_futimesat compat_sys_futimesat | ||
309 | 300 i386 fstatat64 sys_fstatat64 sys32_fstatat | ||
310 | 301 i386 unlinkat sys_unlinkat | ||
311 | 302 i386 renameat sys_renameat | ||
312 | 303 i386 linkat sys_linkat | ||
313 | 304 i386 symlinkat sys_symlinkat | ||
314 | 305 i386 readlinkat sys_readlinkat | ||
315 | 306 i386 fchmodat sys_fchmodat | ||
316 | 307 i386 faccessat sys_faccessat | ||
317 | 308 i386 pselect6 sys_pselect6 compat_sys_pselect6 | ||
318 | 309 i386 ppoll sys_ppoll compat_sys_ppoll | ||
319 | 310 i386 unshare sys_unshare | ||
320 | 311 i386 set_robust_list sys_set_robust_list compat_sys_set_robust_list | ||
321 | 312 i386 get_robust_list sys_get_robust_list compat_sys_get_robust_list | ||
322 | 313 i386 splice sys_splice | ||
323 | 314 i386 sync_file_range sys_sync_file_range sys32_sync_file_range | ||
324 | 315 i386 tee sys_tee | ||
325 | 316 i386 vmsplice sys_vmsplice compat_sys_vmsplice | ||
326 | 317 i386 move_pages sys_move_pages compat_sys_move_pages | ||
327 | 318 i386 getcpu sys_getcpu | ||
328 | 319 i386 epoll_pwait sys_epoll_pwait | ||
329 | 320 i386 utimensat sys_utimensat compat_sys_utimensat | ||
330 | 321 i386 signalfd sys_signalfd compat_sys_signalfd | ||
331 | 322 i386 timerfd_create sys_timerfd_create | ||
332 | 323 i386 eventfd sys_eventfd | ||
333 | 324 i386 fallocate sys_fallocate sys32_fallocate | ||
334 | 325 i386 timerfd_settime sys_timerfd_settime compat_sys_timerfd_settime | ||
335 | 326 i386 timerfd_gettime sys_timerfd_gettime compat_sys_timerfd_gettime | ||
336 | 327 i386 signalfd4 sys_signalfd4 compat_sys_signalfd4 | ||
337 | 328 i386 eventfd2 sys_eventfd2 | ||
338 | 329 i386 epoll_create1 sys_epoll_create1 | ||
339 | 330 i386 dup3 sys_dup3 | ||
340 | 331 i386 pipe2 sys_pipe2 | ||
341 | 332 i386 inotify_init1 sys_inotify_init1 | ||
342 | 333 i386 preadv sys_preadv compat_sys_preadv | ||
343 | 334 i386 pwritev sys_pwritev compat_sys_pwritev | ||
344 | 335 i386 rt_tgsigqueueinfo sys_rt_tgsigqueueinfo compat_sys_rt_tgsigqueueinfo | ||
345 | 336 i386 perf_event_open sys_perf_event_open | ||
346 | 337 i386 recvmmsg sys_recvmmsg compat_sys_recvmmsg | ||
347 | 338 i386 fanotify_init sys_fanotify_init | ||
348 | 339 i386 fanotify_mark sys_fanotify_mark sys32_fanotify_mark | ||
349 | 340 i386 prlimit64 sys_prlimit64 | ||
350 | 341 i386 name_to_handle_at sys_name_to_handle_at | ||
351 | 342 i386 open_by_handle_at sys_open_by_handle_at compat_sys_open_by_handle_at | ||
352 | 343 i386 clock_adjtime sys_clock_adjtime compat_sys_clock_adjtime | ||
353 | 344 i386 syncfs sys_syncfs | ||
354 | 345 i386 sendmmsg sys_sendmmsg compat_sys_sendmmsg | ||
355 | 346 i386 setns sys_setns | ||
356 | 347 i386 process_vm_readv sys_process_vm_readv compat_sys_process_vm_readv | ||
357 | 348 i386 process_vm_writev sys_process_vm_writev compat_sys_process_vm_writev | ||
diff --git a/arch/x86/syscalls/syscall_64.tbl b/arch/x86/syscalls/syscall_64.tbl new file mode 100644 index 000000000000..b440a8f7eefa --- /dev/null +++ b/arch/x86/syscalls/syscall_64.tbl | |||
@@ -0,0 +1,320 @@ | |||
1 | # | ||
2 | # 64-bit system call numbers and entry vectors | ||
3 | # | ||
4 | # The format is: | ||
5 | # <number> <abi> <name> <entry point> | ||
6 | # | ||
7 | # The abi is always "64" for this file (for now.) | ||
8 | # | ||
9 | 0 64 read sys_read | ||
10 | 1 64 write sys_write | ||
11 | 2 64 open sys_open | ||
12 | 3 64 close sys_close | ||
13 | 4 64 stat sys_newstat | ||
14 | 5 64 fstat sys_newfstat | ||
15 | 6 64 lstat sys_newlstat | ||
16 | 7 64 poll sys_poll | ||
17 | 8 64 lseek sys_lseek | ||
18 | 9 64 mmap sys_mmap | ||
19 | 10 64 mprotect sys_mprotect | ||
20 | 11 64 munmap sys_munmap | ||
21 | 12 64 brk sys_brk | ||
22 | 13 64 rt_sigaction sys_rt_sigaction | ||
23 | 14 64 rt_sigprocmask sys_rt_sigprocmask | ||
24 | 15 64 rt_sigreturn stub_rt_sigreturn | ||
25 | 16 64 ioctl sys_ioctl | ||
26 | 17 64 pread64 sys_pread64 | ||
27 | 18 64 pwrite64 sys_pwrite64 | ||
28 | 19 64 readv sys_readv | ||
29 | 20 64 writev sys_writev | ||
30 | 21 64 access sys_access | ||
31 | 22 64 pipe sys_pipe | ||
32 | 23 64 select sys_select | ||
33 | 24 64 sched_yield sys_sched_yield | ||
34 | 25 64 mremap sys_mremap | ||
35 | 26 64 msync sys_msync | ||
36 | 27 64 mincore sys_mincore | ||
37 | 28 64 madvise sys_madvise | ||
38 | 29 64 shmget sys_shmget | ||
39 | 30 64 shmat sys_shmat | ||
40 | 31 64 shmctl sys_shmctl | ||
41 | 32 64 dup sys_dup | ||
42 | 33 64 dup2 sys_dup2 | ||
43 | 34 64 pause sys_pause | ||
44 | 35 64 nanosleep sys_nanosleep | ||
45 | 36 64 getitimer sys_getitimer | ||
46 | 37 64 alarm sys_alarm | ||
47 | 38 64 setitimer sys_setitimer | ||
48 | 39 64 getpid sys_getpid | ||
49 | 40 64 sendfile sys_sendfile64 | ||
50 | 41 64 socket sys_socket | ||
51 | 42 64 connect sys_connect | ||
52 | 43 64 accept sys_accept | ||
53 | 44 64 sendto sys_sendto | ||
54 | 45 64 recvfrom sys_recvfrom | ||
55 | 46 64 sendmsg sys_sendmsg | ||
56 | 47 64 recvmsg sys_recvmsg | ||
57 | 48 64 shutdown sys_shutdown | ||
58 | 49 64 bind sys_bind | ||
59 | 50 64 listen sys_listen | ||
60 | 51 64 getsockname sys_getsockname | ||
61 | 52 64 getpeername sys_getpeername | ||
62 | 53 64 socketpair sys_socketpair | ||
63 | 54 64 setsockopt sys_setsockopt | ||
64 | 55 64 getsockopt sys_getsockopt | ||
65 | 56 64 clone stub_clone | ||
66 | 57 64 fork stub_fork | ||
67 | 58 64 vfork stub_vfork | ||
68 | 59 64 execve stub_execve | ||
69 | 60 64 exit sys_exit | ||
70 | 61 64 wait4 sys_wait4 | ||
71 | 62 64 kill sys_kill | ||
72 | 63 64 uname sys_newuname | ||
73 | 64 64 semget sys_semget | ||
74 | 65 64 semop sys_semop | ||
75 | 66 64 semctl sys_semctl | ||
76 | 67 64 shmdt sys_shmdt | ||
77 | 68 64 msgget sys_msgget | ||
78 | 69 64 msgsnd sys_msgsnd | ||
79 | 70 64 msgrcv sys_msgrcv | ||
80 | 71 64 msgctl sys_msgctl | ||
81 | 72 64 fcntl sys_fcntl | ||
82 | 73 64 flock sys_flock | ||
83 | 74 64 fsync sys_fsync | ||
84 | 75 64 fdatasync sys_fdatasync | ||
85 | 76 64 truncate sys_truncate | ||
86 | 77 64 ftruncate sys_ftruncate | ||
87 | 78 64 getdents sys_getdents | ||
88 | 79 64 getcwd sys_getcwd | ||
89 | 80 64 chdir sys_chdir | ||
90 | 81 64 fchdir sys_fchdir | ||
91 | 82 64 rename sys_rename | ||
92 | 83 64 mkdir sys_mkdir | ||
93 | 84 64 rmdir sys_rmdir | ||
94 | 85 64 creat sys_creat | ||
95 | 86 64 link sys_link | ||
96 | 87 64 unlink sys_unlink | ||
97 | 88 64 symlink sys_symlink | ||
98 | 89 64 readlink sys_readlink | ||
99 | 90 64 chmod sys_chmod | ||
100 | 91 64 fchmod sys_fchmod | ||
101 | 92 64 chown sys_chown | ||
102 | 93 64 fchown sys_fchown | ||
103 | 94 64 lchown sys_lchown | ||
104 | 95 64 umask sys_umask | ||
105 | 96 64 gettimeofday sys_gettimeofday | ||
106 | 97 64 getrlimit sys_getrlimit | ||
107 | 98 64 getrusage sys_getrusage | ||
108 | 99 64 sysinfo sys_sysinfo | ||
109 | 100 64 times sys_times | ||
110 | 101 64 ptrace sys_ptrace | ||
111 | 102 64 getuid sys_getuid | ||
112 | 103 64 syslog sys_syslog | ||
113 | 104 64 getgid sys_getgid | ||
114 | 105 64 setuid sys_setuid | ||
115 | 106 64 setgid sys_setgid | ||
116 | 107 64 geteuid sys_geteuid | ||
117 | 108 64 getegid sys_getegid | ||
118 | 109 64 setpgid sys_setpgid | ||
119 | 110 64 getppid sys_getppid | ||
120 | 111 64 getpgrp sys_getpgrp | ||
121 | 112 64 setsid sys_setsid | ||
122 | 113 64 setreuid sys_setreuid | ||
123 | 114 64 setregid sys_setregid | ||
124 | 115 64 getgroups sys_getgroups | ||
125 | 116 64 setgroups sys_setgroups | ||
126 | 117 64 setresuid sys_setresuid | ||
127 | 118 64 getresuid sys_getresuid | ||
128 | 119 64 setresgid sys_setresgid | ||
129 | 120 64 getresgid sys_getresgid | ||
130 | 121 64 getpgid sys_getpgid | ||
131 | 122 64 setfsuid sys_setfsuid | ||
132 | 123 64 setfsgid sys_setfsgid | ||
133 | 124 64 getsid sys_getsid | ||
134 | 125 64 capget sys_capget | ||
135 | 126 64 capset sys_capset | ||
136 | 127 64 rt_sigpending sys_rt_sigpending | ||
137 | 128 64 rt_sigtimedwait sys_rt_sigtimedwait | ||
138 | 129 64 rt_sigqueueinfo sys_rt_sigqueueinfo | ||
139 | 130 64 rt_sigsuspend sys_rt_sigsuspend | ||
140 | 131 64 sigaltstack stub_sigaltstack | ||
141 | 132 64 utime sys_utime | ||
142 | 133 64 mknod sys_mknod | ||
143 | 134 64 uselib | ||
144 | 135 64 personality sys_personality | ||
145 | 136 64 ustat sys_ustat | ||
146 | 137 64 statfs sys_statfs | ||
147 | 138 64 fstatfs sys_fstatfs | ||
148 | 139 64 sysfs sys_sysfs | ||
149 | 140 64 getpriority sys_getpriority | ||
150 | 141 64 setpriority sys_setpriority | ||
151 | 142 64 sched_setparam sys_sched_setparam | ||
152 | 143 64 sched_getparam sys_sched_getparam | ||
153 | 144 64 sched_setscheduler sys_sched_setscheduler | ||
154 | 145 64 sched_getscheduler sys_sched_getscheduler | ||
155 | 146 64 sched_get_priority_max sys_sched_get_priority_max | ||
156 | 147 64 sched_get_priority_min sys_sched_get_priority_min | ||
157 | 148 64 sched_rr_get_interval sys_sched_rr_get_interval | ||
158 | 149 64 mlock sys_mlock | ||
159 | 150 64 munlock sys_munlock | ||
160 | 151 64 mlockall sys_mlockall | ||
161 | 152 64 munlockall sys_munlockall | ||
162 | 153 64 vhangup sys_vhangup | ||
163 | 154 64 modify_ldt sys_modify_ldt | ||
164 | 155 64 pivot_root sys_pivot_root | ||
165 | 156 64 _sysctl sys_sysctl | ||
166 | 157 64 prctl sys_prctl | ||
167 | 158 64 arch_prctl sys_arch_prctl | ||
168 | 159 64 adjtimex sys_adjtimex | ||
169 | 160 64 setrlimit sys_setrlimit | ||
170 | 161 64 chroot sys_chroot | ||
171 | 162 64 sync sys_sync | ||
172 | 163 64 acct sys_acct | ||
173 | 164 64 settimeofday sys_settimeofday | ||
174 | 165 64 mount sys_mount | ||
175 | 166 64 umount2 sys_umount | ||
176 | 167 64 swapon sys_swapon | ||
177 | 168 64 swapoff sys_swapoff | ||
178 | 169 64 reboot sys_reboot | ||
179 | 170 64 sethostname sys_sethostname | ||
180 | 171 64 setdomainname sys_setdomainname | ||
181 | 172 64 iopl stub_iopl | ||
182 | 173 64 ioperm sys_ioperm | ||
183 | 174 64 create_module | ||
184 | 175 64 init_module sys_init_module | ||
185 | 176 64 delete_module sys_delete_module | ||
186 | 177 64 get_kernel_syms | ||
187 | 178 64 query_module | ||
188 | 179 64 quotactl sys_quotactl | ||
189 | 180 64 nfsservctl | ||
190 | 181 64 getpmsg | ||
191 | 182 64 putpmsg | ||
192 | 183 64 afs_syscall | ||
193 | 184 64 tuxcall | ||
194 | 185 64 security | ||
195 | 186 64 gettid sys_gettid | ||
196 | 187 64 readahead sys_readahead | ||
197 | 188 64 setxattr sys_setxattr | ||
198 | 189 64 lsetxattr sys_lsetxattr | ||
199 | 190 64 fsetxattr sys_fsetxattr | ||
200 | 191 64 getxattr sys_getxattr | ||
201 | 192 64 lgetxattr sys_lgetxattr | ||
202 | 193 64 fgetxattr sys_fgetxattr | ||
203 | 194 64 listxattr sys_listxattr | ||
204 | 195 64 llistxattr sys_llistxattr | ||
205 | 196 64 flistxattr sys_flistxattr | ||
206 | 197 64 removexattr sys_removexattr | ||
207 | 198 64 lremovexattr sys_lremovexattr | ||
208 | 199 64 fremovexattr sys_fremovexattr | ||
209 | 200 64 tkill sys_tkill | ||
210 | 201 64 time sys_time | ||
211 | 202 64 futex sys_futex | ||
212 | 203 64 sched_setaffinity sys_sched_setaffinity | ||
213 | 204 64 sched_getaffinity sys_sched_getaffinity | ||
214 | 205 64 set_thread_area | ||
215 | 206 64 io_setup sys_io_setup | ||
216 | 207 64 io_destroy sys_io_destroy | ||
217 | 208 64 io_getevents sys_io_getevents | ||
218 | 209 64 io_submit sys_io_submit | ||
219 | 210 64 io_cancel sys_io_cancel | ||
220 | 211 64 get_thread_area | ||
221 | 212 64 lookup_dcookie sys_lookup_dcookie | ||
222 | 213 64 epoll_create sys_epoll_create | ||
223 | 214 64 epoll_ctl_old | ||
224 | 215 64 epoll_wait_old | ||
225 | 216 64 remap_file_pages sys_remap_file_pages | ||
226 | 217 64 getdents64 sys_getdents64 | ||
227 | 218 64 set_tid_address sys_set_tid_address | ||
228 | 219 64 restart_syscall sys_restart_syscall | ||
229 | 220 64 semtimedop sys_semtimedop | ||
230 | 221 64 fadvise64 sys_fadvise64 | ||
231 | 222 64 timer_create sys_timer_create | ||
232 | 223 64 timer_settime sys_timer_settime | ||
233 | 224 64 timer_gettime sys_timer_gettime | ||
234 | 225 64 timer_getoverrun sys_timer_getoverrun | ||
235 | 226 64 timer_delete sys_timer_delete | ||
236 | 227 64 clock_settime sys_clock_settime | ||
237 | 228 64 clock_gettime sys_clock_gettime | ||
238 | 229 64 clock_getres sys_clock_getres | ||
239 | 230 64 clock_nanosleep sys_clock_nanosleep | ||
240 | 231 64 exit_group sys_exit_group | ||
241 | 232 64 epoll_wait sys_epoll_wait | ||
242 | 233 64 epoll_ctl sys_epoll_ctl | ||
243 | 234 64 tgkill sys_tgkill | ||
244 | 235 64 utimes sys_utimes | ||
245 | 236 64 vserver | ||
246 | 237 64 mbind sys_mbind | ||
247 | 238 64 set_mempolicy sys_set_mempolicy | ||
248 | 239 64 get_mempolicy sys_get_mempolicy | ||
249 | 240 64 mq_open sys_mq_open | ||
250 | 241 64 mq_unlink sys_mq_unlink | ||
251 | 242 64 mq_timedsend sys_mq_timedsend | ||
252 | 243 64 mq_timedreceive sys_mq_timedreceive | ||
253 | 244 64 mq_notify sys_mq_notify | ||
254 | 245 64 mq_getsetattr sys_mq_getsetattr | ||
255 | 246 64 kexec_load sys_kexec_load | ||
256 | 247 64 waitid sys_waitid | ||
257 | 248 64 add_key sys_add_key | ||
258 | 249 64 request_key sys_request_key | ||
259 | 250 64 keyctl sys_keyctl | ||
260 | 251 64 ioprio_set sys_ioprio_set | ||
261 | 252 64 ioprio_get sys_ioprio_get | ||
262 | 253 64 inotify_init sys_inotify_init | ||
263 | 254 64 inotify_add_watch sys_inotify_add_watch | ||
264 | 255 64 inotify_rm_watch sys_inotify_rm_watch | ||
265 | 256 64 migrate_pages sys_migrate_pages | ||
266 | 257 64 openat sys_openat | ||
267 | 258 64 mkdirat sys_mkdirat | ||
268 | 259 64 mknodat sys_mknodat | ||
269 | 260 64 fchownat sys_fchownat | ||
270 | 261 64 futimesat sys_futimesat | ||
271 | 262 64 newfstatat sys_newfstatat | ||
272 | 263 64 unlinkat sys_unlinkat | ||
273 | 264 64 renameat sys_renameat | ||
274 | 265 64 linkat sys_linkat | ||
275 | 266 64 symlinkat sys_symlinkat | ||
276 | 267 64 readlinkat sys_readlinkat | ||
277 | 268 64 fchmodat sys_fchmodat | ||
278 | 269 64 faccessat sys_faccessat | ||
279 | 270 64 pselect6 sys_pselect6 | ||
280 | 271 64 ppoll sys_ppoll | ||
281 | 272 64 unshare sys_unshare | ||
282 | 273 64 set_robust_list sys_set_robust_list | ||
283 | 274 64 get_robust_list sys_get_robust_list | ||
284 | 275 64 splice sys_splice | ||
285 | 276 64 tee sys_tee | ||
286 | 277 64 sync_file_range sys_sync_file_range | ||
287 | 278 64 vmsplice sys_vmsplice | ||
288 | 279 64 move_pages sys_move_pages | ||
289 | 280 64 utimensat sys_utimensat | ||
290 | 281 64 epoll_pwait sys_epoll_pwait | ||
291 | 282 64 signalfd sys_signalfd | ||
292 | 283 64 timerfd_create sys_timerfd_create | ||
293 | 284 64 eventfd sys_eventfd | ||
294 | 285 64 fallocate sys_fallocate | ||
295 | 286 64 timerfd_settime sys_timerfd_settime | ||
296 | 287 64 timerfd_gettime sys_timerfd_gettime | ||
297 | 288 64 accept4 sys_accept4 | ||
298 | 289 64 signalfd4 sys_signalfd4 | ||
299 | 290 64 eventfd2 sys_eventfd2 | ||
300 | 291 64 epoll_create1 sys_epoll_create1 | ||
301 | 292 64 dup3 sys_dup3 | ||
302 | 293 64 pipe2 sys_pipe2 | ||
303 | 294 64 inotify_init1 sys_inotify_init1 | ||
304 | 295 64 preadv sys_preadv | ||
305 | 296 64 pwritev sys_pwritev | ||
306 | 297 64 rt_tgsigqueueinfo sys_rt_tgsigqueueinfo | ||
307 | 298 64 perf_event_open sys_perf_event_open | ||
308 | 299 64 recvmmsg sys_recvmmsg | ||
309 | 300 64 fanotify_init sys_fanotify_init | ||
310 | 301 64 fanotify_mark sys_fanotify_mark | ||
311 | 302 64 prlimit64 sys_prlimit64 | ||
312 | 303 64 name_to_handle_at sys_name_to_handle_at | ||
313 | 304 64 open_by_handle_at sys_open_by_handle_at | ||
314 | 305 64 clock_adjtime sys_clock_adjtime | ||
315 | 306 64 syncfs sys_syncfs | ||
316 | 307 64 sendmmsg sys_sendmmsg | ||
317 | 308 64 setns sys_setns | ||
318 | 309 64 getcpu sys_getcpu | ||
319 | 310 64 process_vm_readv sys_process_vm_readv | ||
320 | 311 64 process_vm_writev sys_process_vm_writev | ||
diff --git a/arch/x86/syscalls/syscallhdr.sh b/arch/x86/syscalls/syscallhdr.sh new file mode 100644 index 000000000000..0d473ff12eaf --- /dev/null +++ b/arch/x86/syscalls/syscallhdr.sh | |||
@@ -0,0 +1,36 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | in="$1" | ||
4 | out="$2" | ||
5 | my_abis=`echo "$3" | tr ',' ' '` | ||
6 | prefix="$4" | ||
7 | offset="$5" | ||
8 | |||
9 | fileguard=_ASM_X86_`basename "$out" | sed \ | ||
10 | -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \ | ||
11 | -e 's/[^A-Z0-9_]/_/g' -e 's/__/_/g'` | ||
12 | |||
13 | in_list () { | ||
14 | local x | ||
15 | for x in $1; do | ||
16 | if [ x"$x" = x"$2" ]; then | ||
17 | return 0 | ||
18 | fi | ||
19 | done | ||
20 | return 1 | ||
21 | } | ||
22 | |||
23 | grep '^[0-9]' "$in" | sort -n | ( | ||
24 | echo "#ifndef ${fileguard}" | ||
25 | echo "#define ${fileguard} 1" | ||
26 | echo "" | ||
27 | |||
28 | while read nr abi name entry ; do | ||
29 | if in_list "$my_abis" "$abi"; then | ||
30 | echo "#define __NR_${prefix}${name}" $((nr+offset)) | ||
31 | fi | ||
32 | done | ||
33 | |||
34 | echo "" | ||
35 | echo "#endif /* ${fileguard} */" | ||
36 | ) > "$out" | ||
diff --git a/arch/x86/syscalls/syscalltbl.sh b/arch/x86/syscalls/syscalltbl.sh new file mode 100644 index 000000000000..0e7f8ec071e7 --- /dev/null +++ b/arch/x86/syscalls/syscalltbl.sh | |||
@@ -0,0 +1,15 @@ | |||
1 | #!/bin/sh | ||
2 | |||
3 | in="$1" | ||
4 | out="$2" | ||
5 | |||
6 | grep '^[0-9]' "$in" | sort -n | ( | ||
7 | while read nr abi name entry compat; do | ||
8 | abi=`echo "$abi" | tr '[a-z]' '[A-Z]'` | ||
9 | if [ -n "$compat" ]; then | ||
10 | echo "__SYSCALL_${abi}($nr, $entry, $compat)" | ||
11 | elif [ -n "$entry" ]; then | ||
12 | echo "__SYSCALL_${abi}($nr, $entry, $entry)" | ||
13 | fi | ||
14 | done | ||
15 | ) > "$out" | ||