1
2
3
4
5
6
7
8
9
10 #include <sys/param.h>
11 #include <sys/systm.h>
12 #include <sys/signal.h>
13 #include <sys/mount.h>
14 #include <sys/syscallargs.h>
15 #include <compat/linux/linux_types.h>
16 #include <compat/linux/linux_signal.h>
17 #include <compat/linux/linux_misc.h>
18 #include <compat/linux/linux_syscallargs.h>
19 #include <machine/linux_machdep.h>
20
21 #define s(type) sizeof(type)
22
23 struct sysent linux_sysent[] = {
24 { 0, 0,
25 sys_nosys },
26 { 1, s(struct sys_exit_args),
27 sys_exit },
28 { 0, 0,
29 sys_fork },
30 { 3, s(struct sys_read_args),
31 sys_read },
32 { 3, s(struct sys_write_args),
33 sys_write },
34 { 3, s(struct linux_sys_open_args),
35 linux_sys_open },
36 { 1, s(struct sys_close_args),
37 sys_close },
38 { 3, s(struct linux_sys_waitpid_args),
39 linux_sys_waitpid },
40 { 2, s(struct linux_sys_creat_args),
41 linux_sys_creat },
42 { 2, s(struct sys_link_args),
43 sys_link },
44 { 1, s(struct linux_sys_unlink_args),
45 linux_sys_unlink },
46 { 3, s(struct linux_sys_execve_args),
47 linux_sys_execve },
48 { 1, s(struct linux_sys_chdir_args),
49 linux_sys_chdir },
50 { 1, s(struct linux_sys_time_args),
51 linux_sys_time },
52 { 3, s(struct linux_sys_mknod_args),
53 linux_sys_mknod },
54 { 2, s(struct linux_sys_chmod_args),
55 linux_sys_chmod },
56 { 3, s(struct linux_sys_lchown16_args),
57 linux_sys_lchown16 },
58 { 1, s(struct linux_sys_break_args),
59 linux_sys_break },
60 { 0, 0,
61 linux_sys_ostat },
62 { 3, s(struct compat_43_sys_lseek_args),
63 compat_43_sys_lseek },
64 { 0, 0,
65 linux_sys_getpid },
66 { 5, s(struct linux_sys_mount_args),
67 linux_sys_mount },
68 { 1, s(struct linux_sys_umount_args),
69 linux_sys_umount },
70 { 1, s(struct sys_setuid_args),
71 sys_setuid },
72 { 0, 0,
73 linux_sys_getuid },
74 { 1, s(struct linux_sys_stime_args),
75 linux_sys_stime },
76 #ifdef PTRACE
77 { 0, 0,
78 linux_sys_ptrace },
79 #else
80 { 0, 0,
81 sys_nosys },
82 #endif
83 { 1, s(struct linux_sys_alarm_args),
84 linux_sys_alarm },
85 { 0, 0,
86 linux_sys_ofstat },
87 { 0, 0,
88 linux_sys_pause },
89 { 2, s(struct linux_sys_utime_args),
90 linux_sys_utime },
91 { 0, 0,
92 linux_sys_stty },
93 { 0, 0,
94 linux_sys_gtty },
95 { 2, s(struct linux_sys_access_args),
96 linux_sys_access },
97 { 1, s(struct linux_sys_nice_args),
98 linux_sys_nice },
99 { 0, 0,
100 linux_sys_ftime },
101 { 0, 0,
102 sys_sync },
103 { 2, s(struct linux_sys_kill_args),
104 linux_sys_kill },
105 { 2, s(struct linux_sys_rename_args),
106 linux_sys_rename },
107 { 2, s(struct linux_sys_mkdir_args),
108 linux_sys_mkdir },
109 { 1, s(struct linux_sys_rmdir_args),
110 linux_sys_rmdir },
111 { 1, s(struct sys_dup_args),
112 sys_dup },
113 { 1, s(struct linux_sys_pipe_args),
114 linux_sys_pipe },
115 { 1, s(struct linux_sys_times_args),
116 linux_sys_times },
117 { 0, 0,
118 linux_sys_prof },
119 { 1, s(struct linux_sys_brk_args),
120 linux_sys_brk },
121 { 1, s(struct sys_setgid_args),
122 sys_setgid },
123 { 0, 0,
124 linux_sys_getgid },
125 { 2, s(struct linux_sys_signal_args),
126 linux_sys_signal },
127 { 0, 0,
128 sys_geteuid },
129 { 0, 0,
130 sys_getegid },
131 #ifdef ACCOUNTING
132 { 1, s(struct sys_acct_args),
133 sys_acct },
134 #else
135 { 0, 0,
136 sys_nosys },
137 #endif
138 { 0, 0,
139 linux_sys_phys },
140 { 0, 0,
141 linux_sys_lock },
142 { 3, s(struct linux_sys_ioctl_args),
143 linux_sys_ioctl },
144 { 3, s(struct linux_sys_fcntl_args),
145 linux_sys_fcntl },
146 { 0, 0,
147 linux_sys_mpx },
148 { 2, s(struct sys_setpgid_args),
149 sys_setpgid },
150 { 0, 0,
151 linux_sys_ulimit },
152 { 1, s(struct linux_sys_oldolduname_args),
153 linux_sys_oldolduname },
154 { 1, s(struct sys_umask_args),
155 sys_umask },
156 { 1, s(struct sys_chroot_args),
157 sys_chroot },
158 { 0, 0,
159 linux_sys_ustat },
160 { 2, s(struct sys_dup2_args),
161 sys_dup2 },
162 { 0, 0,
163 sys_getppid },
164 { 0, 0,
165 sys_getpgrp },
166 { 0, 0,
167 sys_setsid },
168 { 3, s(struct linux_sys_sigaction_args),
169 linux_sys_sigaction },
170 { 0, 0,
171 linux_sys_siggetmask },
172 { 1, s(struct linux_sys_sigsetmask_args),
173 linux_sys_sigsetmask },
174 { 2, s(struct linux_sys_setreuid16_args),
175 linux_sys_setreuid16 },
176 { 2, s(struct linux_sys_setregid16_args),
177 linux_sys_setregid16 },
178 { 3, s(struct linux_sys_sigsuspend_args),
179 linux_sys_sigsuspend },
180 { 1, s(struct linux_sys_sigpending_args),
181 linux_sys_sigpending },
182 { 2, s(struct compat_43_sys_sethostname_args),
183 compat_43_sys_sethostname },
184 { 2, s(struct linux_sys_setrlimit_args),
185 linux_sys_setrlimit },
186 { 2, s(struct linux_sys_getrlimit_args),
187 linux_sys_getrlimit },
188 { 2, s(struct sys_getrusage_args),
189 sys_getrusage },
190 { 2, s(struct sys_gettimeofday_args),
191 sys_gettimeofday },
192 { 2, s(struct sys_settimeofday_args),
193 sys_settimeofday },
194 { 2, s(struct sys_getgroups_args),
195 sys_getgroups },
196 { 2, s(struct sys_setgroups_args),
197 sys_setgroups },
198 { 1, s(struct linux_sys_oldselect_args),
199 linux_sys_oldselect },
200 { 2, s(struct linux_sys_symlink_args),
201 linux_sys_symlink },
202 { 2, s(struct compat_43_sys_lstat_args),
203 compat_43_sys_lstat },
204 { 3, s(struct linux_sys_readlink_args),
205 linux_sys_readlink },
206 { 1, s(struct linux_sys_uselib_args),
207 linux_sys_uselib },
208 { 1, s(struct compat_25_sys_swapon_args),
209 compat_25_sys_swapon },
210 { 1, s(struct sys_reboot_args),
211 sys_reboot },
212 { 3, s(struct linux_sys_readdir_args),
213 linux_sys_readdir },
214 { 1, s(struct linux_sys_mmap_args),
215 linux_sys_mmap },
216 { 2, s(struct sys_munmap_args),
217 sys_munmap },
218 { 2, s(struct linux_sys_truncate_args),
219 linux_sys_truncate },
220 { 2, s(struct compat_43_sys_ftruncate_args),
221 compat_43_sys_ftruncate },
222 { 2, s(struct sys_fchmod_args),
223 sys_fchmod },
224 { 3, s(struct linux_sys_fchown16_args),
225 linux_sys_fchown16 },
226 { 2, s(struct sys_getpriority_args),
227 sys_getpriority },
228 { 3, s(struct sys_setpriority_args),
229 sys_setpriority },
230 { 4, s(struct sys_profil_args),
231 sys_profil },
232 { 2, s(struct linux_sys_statfs_args),
233 linux_sys_statfs },
234 { 2, s(struct linux_sys_fstatfs_args),
235 linux_sys_fstatfs },
236 #ifdef __i386__
237 { 3, s(struct linux_sys_ioperm_args),
238 linux_sys_ioperm },
239 #else
240 { 0, 0,
241 linux_sys_ioperm },
242 #endif
243 { 2, s(struct linux_sys_socketcall_args),
244 linux_sys_socketcall },
245 { 0, 0,
246 linux_sys_klog },
247 { 3, s(struct sys_setitimer_args),
248 sys_setitimer },
249 { 2, s(struct sys_getitimer_args),
250 sys_getitimer },
251 { 2, s(struct linux_sys_stat_args),
252 linux_sys_stat },
253 { 2, s(struct linux_sys_lstat_args),
254 linux_sys_lstat },
255 { 2, s(struct linux_sys_fstat_args),
256 linux_sys_fstat },
257 { 1, s(struct linux_sys_olduname_args),
258 linux_sys_olduname },
259 #ifdef __i386__
260 { 1, s(struct linux_sys_iopl_args),
261 linux_sys_iopl },
262 #else
263 { 0, 0,
264 linux_sys_iopl },
265 #endif
266 { 0, 0,
267 linux_sys_vhangup },
268 { 0, 0,
269 linux_sys_idle },
270 { 0, 0,
271 linux_sys_vm86old },
272 { 4, s(struct linux_sys_wait4_args),
273 linux_sys_wait4 },
274 { 0, 0,
275 linux_sys_swapoff },
276 { 1, s(struct linux_sys_sysinfo_args),
277 linux_sys_sysinfo },
278 { 5, s(struct linux_sys_ipc_args),
279 linux_sys_ipc },
280 { 1, s(struct sys_fsync_args),
281 sys_fsync },
282 { 1, s(struct linux_sys_sigreturn_args),
283 linux_sys_sigreturn },
284 { 2, s(struct linux_sys_clone_args),
285 linux_sys_clone },
286 { 2, s(struct compat_09_sys_setdomainname_args),
287 compat_09_sys_setdomainname },
288 { 1, s(struct linux_sys_uname_args),
289 linux_sys_uname },
290 #ifdef __i386__
291 { 3, s(struct linux_sys_modify_ldt_args),
292 linux_sys_modify_ldt },
293 #else
294 { 0, 0,
295 linux_sys_modify_ldt },
296 #endif
297 { 0, 0,
298 linux_sys_adjtimex },
299 { 3, s(struct sys_mprotect_args),
300 sys_mprotect },
301 { 3, s(struct linux_sys_sigprocmask_args),
302 linux_sys_sigprocmask },
303 { 0, 0,
304 linux_sys_create_module },
305 { 0, 0,
306 linux_sys_init_module },
307 { 0, 0,
308 linux_sys_delete_module },
309 { 0, 0,
310 linux_sys_get_kernel_syms },
311 { 0, 0,
312 linux_sys_quotactl },
313 { 1, s(struct linux_sys_getpgid_args),
314 linux_sys_getpgid },
315 { 1, s(struct sys_fchdir_args),
316 sys_fchdir },
317 { 0, 0,
318 linux_sys_bdflush },
319 { 0, 0,
320 linux_sys_sysfs },
321 { 1, s(struct linux_sys_personality_args),
322 linux_sys_personality },
323 { 0, 0,
324 linux_sys_afs_syscall },
325 { 1, s(struct linux_sys_setfsuid_args),
326 linux_sys_setfsuid },
327 { 0, 0,
328 linux_sys_getfsuid },
329 { 5, s(struct linux_sys_llseek_args),
330 linux_sys_llseek },
331 { 3, s(struct linux_sys_getdents_args),
332 linux_sys_getdents },
333 { 5, s(struct linux_sys_select_args),
334 linux_sys_select },
335 { 2, s(struct sys_flock_args),
336 sys_flock },
337 { 3, s(struct sys_msync_args),
338 sys_msync },
339 { 3, s(struct sys_readv_args),
340 sys_readv },
341 { 3, s(struct sys_writev_args),
342 sys_writev },
343 { 1, s(struct linux_sys_getsid_args),
344 linux_sys_getsid },
345 { 1, s(struct linux_sys_fdatasync_args),
346 linux_sys_fdatasync },
347 { 1, s(struct linux_sys___sysctl_args),
348 linux_sys___sysctl },
349 { 2, s(struct sys_mlock_args),
350 sys_mlock },
351 { 2, s(struct sys_munlock_args),
352 sys_munlock },
353 { 0, 0,
354 linux_sys_mlockall },
355 { 0, 0,
356 linux_sys_munlockall },
357 { 2, s(struct linux_sys_sched_setparam_args),
358 linux_sys_sched_setparam },
359 { 2, s(struct linux_sys_sched_getparam_args),
360 linux_sys_sched_getparam },
361 { 3, s(struct linux_sys_sched_setscheduler_args),
362 linux_sys_sched_setscheduler },
363 { 1, s(struct linux_sys_sched_getscheduler_args),
364 linux_sys_sched_getscheduler },
365 { 0, 0,
366 linux_sys_sched_yield },
367 { 1, s(struct linux_sys_sched_get_priority_max_args),
368 linux_sys_sched_get_priority_max },
369 { 1, s(struct linux_sys_sched_get_priority_min_args),
370 linux_sys_sched_get_priority_min },
371 { 0, 0,
372 linux_sys_sched_rr_get_interval },
373 { 2, s(struct sys_nanosleep_args),
374 sys_nanosleep },
375 { 4, s(struct linux_sys_mremap_args),
376 linux_sys_mremap },
377 { 3, s(struct linux_sys_setresuid16_args),
378 linux_sys_setresuid16 },
379 { 3, s(struct linux_sys_getresuid16_args),
380 linux_sys_getresuid16 },
381 { 0, 0,
382 linux_sys_vm86 },
383 { 0, 0,
384 linux_sys_query_module },
385 { 3, s(struct sys_poll_args),
386 sys_poll },
387 { 0, 0,
388 linux_sys_nfsservctl },
389 { 3, s(struct linux_sys_setresgid16_args),
390 linux_sys_setresgid16 },
391 { 3, s(struct linux_sys_getresgid16_args),
392 linux_sys_getresgid16 },
393 { 0, 0,
394 linux_sys_prctl },
395 { 1, s(struct linux_sys_rt_sigreturn_args),
396 linux_sys_rt_sigreturn },
397 { 4, s(struct linux_sys_rt_sigaction_args),
398 linux_sys_rt_sigaction },
399 { 4, s(struct linux_sys_rt_sigprocmask_args),
400 linux_sys_rt_sigprocmask },
401 { 2, s(struct linux_sys_rt_sigpending_args),
402 linux_sys_rt_sigpending },
403 { 0, 0,
404 linux_sys_rt_sigtimedwait },
405 { 0, 0,
406 linux_sys_rt_queueinfo },
407 { 2, s(struct linux_sys_rt_sigsuspend_args),
408 linux_sys_rt_sigsuspend },
409 { 4, s(struct linux_sys_pread_args),
410 linux_sys_pread },
411 { 4, s(struct linux_sys_pwrite_args),
412 linux_sys_pwrite },
413 { 3, s(struct linux_sys_chown16_args),
414 linux_sys_chown16 },
415 { 2, s(struct sys___getcwd_args),
416 sys___getcwd },
417 { 0, 0,
418 linux_sys_capget },
419 { 0, 0,
420 linux_sys_capset },
421 { 2, s(struct linux_sys_sigaltstack_args),
422 linux_sys_sigaltstack },
423 { 0, 0,
424 linux_sys_sendfile },
425 { 0, 0,
426 linux_sys_getpmsg },
427 { 0, 0,
428 linux_sys_putpmsg },
429 { 0, 0,
430 sys_vfork },
431 { 2, s(struct linux_sys_ugetrlimit_args),
432 linux_sys_ugetrlimit },
433 { 6, s(struct linux_sys_mmap2_args),
434 linux_sys_mmap2 },
435 { 2, s(struct linux_sys_truncate64_args),
436 linux_sys_truncate64 },
437 { 2, s(struct linux_sys_ftruncate64_args),
438 linux_sys_ftruncate64 },
439 { 2, s(struct linux_sys_stat64_args),
440 linux_sys_stat64 },
441 { 2, s(struct linux_sys_lstat64_args),
442 linux_sys_lstat64 },
443 { 2, s(struct linux_sys_fstat64_args),
444 linux_sys_fstat64 },
445 { 0, 0,
446 linux_sys_lchown },
447 { 0, 0,
448 linux_sys_getuid },
449 { 0, 0,
450 linux_sys_getgid },
451 { 0, 0,
452 sys_geteuid },
453 { 0, 0,
454 sys_getegid },
455 { 2, s(struct sys_setreuid_args),
456 sys_setreuid },
457 { 2, s(struct sys_setregid_args),
458 sys_setregid },
459 { 2, s(struct sys_getgroups_args),
460 sys_getgroups },
461 { 2, s(struct sys_setgroups_args),
462 sys_setgroups },
463 { 0, 0,
464 linux_sys_fchown },
465 { 3, s(struct sys_setresuid_args),
466 sys_setresuid },
467 { 3, s(struct sys_getresuid_args),
468 sys_getresuid },
469 { 3, s(struct sys_setresgid_args),
470 sys_setresgid },
471 { 3, s(struct sys_getresgid_args),
472 sys_getresgid },
473 { 0, 0,
474 linux_sys_chown },
475 { 1, s(struct sys_setuid_args),
476 sys_setuid },
477 { 1, s(struct sys_setgid_args),
478 sys_setgid },
479 { 1, s(struct linux_sys_setfsuid_args),
480 linux_sys_setfsuid },
481 { 0, 0,
482 linux_sys_setfsgid },
483 { 0, 0,
484 linux_sys_pivot_root },
485 { 0, 0,
486 linux_sys_mincore },
487 { 3, s(struct sys_madvise_args),
488 sys_madvise },
489 { 3, s(struct linux_sys_getdents64_args),
490 linux_sys_getdents64 },
491 { 3, s(struct linux_sys_fcntl64_args),
492 linux_sys_fcntl64 },
493 { 0, 0,
494 sys_nosys },
495 { 0, 0,
496 sys_nosys },
497 { 0, 0,
498 sys_nosys },
499 { 0, 0,
500 sys_nosys },
501 { 0, 0,
502 linux_sys_setxattr },
503 { 0, 0,
504 linux_sys_lsetxattr },
505 { 0, 0,
506 linux_sys_fsetxattr },
507 { 0, 0,
508 linux_sys_getxattr },
509 { 0, 0,
510 linux_sys_lgetxattr },
511 { 0, 0,
512 linux_sys_fgetxattr },
513 { 0, 0,
514 linux_sys_listxattr },
515 { 0, 0,
516 linux_sys_llistxattr },
517 { 0, 0,
518 linux_sys_flistxattr },
519 { 0, 0,
520 linux_sys_removexattr },
521 { 0, 0,
522 linux_sys_lremovexattr },
523 { 0, 0,
524 linux_sys_fremovexattr },
525 { 0, 0,
526 sys_nosys },
527 { 0, 0,
528 sys_nosys },
529 { 0, 0,
530 sys_nosys },
531 { 0, 0,
532 sys_nosys },
533 { 0, 0,
534 sys_nosys },
535 { 0, 0,
536 sys_nosys },
537 { 0, 0,
538 sys_nosys },
539 { 0, 0,
540 sys_nosys },
541 { 0, 0,
542 sys_nosys },
543 { 0, 0,
544 sys_nosys },
545 { 0, 0,
546 sys_nosys },
547 { 0, 0,
548 sys_nosys },
549 { 0, 0,
550 linux_sys_fadvise64 },
551 { 0, 0,
552 sys_nosys },
553 { 1, s(struct sys_exit_args),
554 sys_exit },
555 { 0, 0,
556 sys_nosys },
557 { 0, 0,
558 sys_nosys },
559 { 0, 0,
560 sys_nosys },
561 { 0, 0,
562 sys_nosys },
563 { 0, 0,
564 sys_nosys },
565 { 0, 0,
566 sys_nosys },
567 { 0, 0,
568 sys_nosys },
569 { 0, 0,
570 sys_nosys },
571 { 0, 0,
572 sys_nosys },
573 { 0, 0,
574 sys_nosys },
575 { 0, 0,
576 sys_nosys },
577 { 0, 0,
578 sys_nosys },
579 { 0, 0,
580 sys_nosys },
581 { 0, 0,
582 sys_nosys },
583 { 0, 0,
584 sys_nosys },
585 };
586