01)系统调用信息保存在哪儿?
保存在sys_call_table当中。以X86为例,sys_call_table的初始化如下:
arch/x86/kernel/syscall_32.c
#define __SYSCALL_I386(nr, sym, compat) [nr] = sym, typedef asmlinkage void (*sys_call_ptr_t)(void); extern asmlinkage void sys_ni_syscall(void); __visible const sys_call_ptr_t sys_call_table[__NR_syscall_max+1] = { /* * Smells like a compiler bug -- it doesn‘t work * when the & below is removed. */ [0 ... __NR_syscall_max] = &sys_ni_syscall, #include <asm/syscalls_32.h> };其中sys_call_table数组的初始化使用GCC的扩展语法,语句[0 ... __NR_syscall_max] = &sys_ni_syscall将数组内容全部初始化为未实现版本,然后包含asm/syscalls_32.h当中逐项初始化的内容进行初始化。
asm/syscalls_32.h为编译期间生成的一个头文件,该内容由/include/uapi/asm-generic/unistd.h等头文件共同生成,其内容如下:
__SYSCALL_I386(0, sys_restart_syscall, sys_restart_syscall) __SYSCALL_I386(1, sys_exit, sys_exit) __SYSCALL_I386(2, sys_fork, stub32_fork) __SYSCALL_I386(3, sys_read, sys_read) __SYSCALL_I386(4, sys_write, sys_write) __SYSCALL_I386(5, sys_open, compat_sys_open) __SYSCALL_I386(6, sys_close, sys_close) __SYSCALL_I386(7, sys_waitpid, sys32_waitpid) __SYSCALL_I386(8, sys_creat, sys_creat) __SYSCALL_I386(9, sys_link, sys_link) __SYSCALL_I386(10, sys_unlink, sys_unlink) __SYSCALL_I386(11, sys_execve, stub32_execve) __SYSCALL_I386(12, sys_chdir, sys_chdir) __SYSCALL_I386(13, sys_time, compat_sys_time) __SYSCALL_I386(14, sys_mknod, sys_mknod) __SYSCALL_I386(15, sys_chmod, sys_chmod) __SYSCALL_I386(16, sys_lchown16, sys_lchown16) __SYSCALL_I386(18, sys_stat, sys_stat) __SYSCALL_I386(19, sys_lseek, compat_sys_lseek) __SYSCALL_I386(20, sys_getpid, sys_getpid) __SYSCALL_I386(21, sys_mount, compat_sys_mount) __SYSCALL_I386(22, sys_oldumount, sys_oldumount) __SYSCALL_I386(23, sys_setuid16, sys_setuid16) __SYSCALL_I386(24, sys_getuid16, sys_getuid16) __SYSCALL_I386(25, sys_stime, compat_sys_stime) __SYSCALL_I386(26, sys_ptrace, compat_sys_ptrace) __SYSCALL_I386(27, sys_alarm, sys_alarm) __SYSCALL_I386(28, sys_fstat, sys_fstat) __SYSCALL_I386(29, sys_pause, sys_pause) __SYSCALL_I386(30, sys_utime, compat_sys_utime) __SYSCALL_I386(33, sys_access, sys_access) __SYSCALL_I386(34, sys_nice, sys_nice) __SYSCALL_I386(36, sys_sync, sys_sync) __SYSCALL_I386(37, sys_kill, sys_kill) __SYSCALL_I386(38, sys_rename, sys_rename) __SYSCALL_I386(39, sys_mkdir, sys_mkdir) __SYSCALL_I386(40, sys_rmdir, sys_rmdir) __SYSCALL_I386(41, sys_dup, sys_dup) __SYSCALL_I386(42, sys_pipe, sys_pipe) __SYSCALL_I386(43, sys_times, compat_sys_times) __SYSCALL_I386(45, sys_brk, sys_brk) __SYSCALL_I386(46, sys_setgid16, sys_setgid16) __SYSCALL_I386(47, sys_getgid16, sys_getgid16) __SYSCALL_I386(48, sys_signal, sys_signal) __SYSCALL_I386(49, sys_geteuid16, sys_geteuid16) __SYSCALL_I386(50, sys_getegid16, sys_getegid16) __SYSCALL_I386(51, sys_acct, sys_acct) __SYSCALL_I386(52, sys_umount, sys_umount) __SYSCALL_I386(54, sys_ioctl, compat_sys_ioctl) __SYSCALL_I386(55, sys_fcntl, compat_sys_fcntl64) __SYSCALL_I386(57, sys_setpgid, sys_setpgid) __SYSCALL_I386(59, sys_olduname, sys_olduname) __SYSCALL_I386(60, sys_umask, sys_umask) __SYSCALL_I386(61, sys_chroot, sys_chroot) __SYSCALL_I386(62, sys_ustat, compat_sys_ustat) __SYSCALL_I386(63, sys_dup2, sys_dup2) __SYSCALL_I386(64, sys_getppid, sys_getppid) __SYSCALL_I386(65, sys_getpgrp, sys_getpgrp) __SYSCALL_I386(66, sys_setsid, sys_setsid) __SYSCALL_I386(67, sys_sigaction, compat_sys_sigaction) __SYSCALL_I386(68, sys_sgetmask, sys_sgetmask) __SYSCALL_I386(69, sys_ssetmask, sys_ssetmask) __SYSCALL_I386(70, sys_setreuid16, sys_setreuid16) __SYSCALL_I386(71, sys_setregid16, sys_setregid16) __SYSCALL_I386(72, sys_sigsuspend, sys_sigsuspend) __SYSCALL_I386(73, sys_sigpending, compat_sys_sigpending) __SYSCALL_I386(74, sys_sethostname, sys_sethostname) __SYSCALL_I386(75, sys_setrlimit, compat_sys_setrlimit) __SYSCALL_I386(76, sys_old_getrlimit, compat_sys_old_getrlimit) __SYSCALL_I386(77, sys_getrusage, compat_sys_getrusage) __SYSCALL_I386(78, sys_gettimeofday, compat_sys_gettimeofday) __SYSCALL_I386(79, sys_settimeofday, compat_sys_settimeofday) __SYSCALL_I386(80, sys_getgroups16, sys_getgroups16) __SYSCALL_I386(81, sys_setgroups16, sys_setgroups16) __SYSCALL_I386(82, sys_old_select, compat_sys_old_select) __SYSCALL_I386(83, sys_symlink, sys_symlink) __SYSCALL_I386(84, sys_lstat, sys_lstat) __SYSCALL_I386(85, sys_readlink, sys_readlink) __SYSCALL_I386(86, sys_uselib, sys_uselib) __SYSCALL_I386(87, sys_swapon, sys_swapon) __SYSCALL_I386(88, sys_reboot, sys_reboot) __SYSCALL_I386(89, sys_old_readdir, compat_sys_old_readdir) __SYSCALL_I386(90, sys_old_mmap, sys32_mmap) __SYSCALL_I386(91, sys_munmap, sys_munmap) __SYSCALL_I386(92, sys_truncate, compat_sys_truncate) __SYSCALL_I386(93, sys_ftruncate, compat_sys_ftruncate) __SYSCALL_I386(94, sys_fchmod, sys_fchmod) __SYSCALL_I386(95, sys_fchown16, sys_fchown16) __SYSCALL_I386(96, sys_getpriority, sys_getpriority) __SYSCALL_I386(97, sys_setpriority, sys_setpriority) __SYSCALL_I386(99, sys_statfs, compat_sys_statfs) __SYSCALL_I386(100, sys_fstatfs, compat_sys_fstatfs) __SYSCALL_I386(101, sys_ioperm, sys_ioperm) __SYSCALL_I386(102, sys_socketcall, compat_sys_socketcall) __SYSCALL_I386(103, sys_syslog, sys_syslog) __SYSCALL_I386(104, sys_setitimer, compat_sys_setitimer) __SYSCALL_I386(105, sys_getitimer, compat_sys_getitimer) __SYSCALL_I386(106, sys_newstat, compat_sys_newstat) __SYSCALL_I386(107, sys_newlstat, compat_sys_newlstat) __SYSCALL_I386(108, sys_newfstat, compat_sys_newfstat) __SYSCALL_I386(109, sys_uname, sys_uname) __SYSCALL_I386(110, sys_iopl, sys_iopl) __SYSCALL_I386(111, sys_vhangup, sys_vhangup) __SYSCALL_I386(113, sys_vm86old, sys32_vm86_warning) __SYSCALL_I386(114, sys_wait4, compat_sys_wait4) __SYSCALL_I386(115, sys_swapoff, sys_swapoff) __SYSCALL_I386(116, sys_sysinfo, compat_sys_sysinfo) __SYSCALL_I386(117, sys_ipc, compat_sys_ipc) __SYSCALL_I386(118, sys_fsync, sys_fsync) __SYSCALL_I386(119, sys_sigreturn, stub32_sigreturn) __SYSCALL_I386(120, sys_clone, stub32_clone) __SYSCALL_I386(121, sys_setdomainname, sys_setdomainname) __SYSCALL_I386(122, sys_newuname, sys_newuname) __SYSCALL_I386(123, sys_modify_ldt, sys_modify_ldt) __SYSCALL_I386(124, sys_adjtimex, compat_sys_adjtimex) __SYSCALL_I386(125, sys_mprotect, sys_mprotect) __SYSCALL_I386(126, sys_sigprocmask, compat_sys_sigprocmask) __SYSCALL_I386(128, sys_init_module, sys_init_module) __SYSCALL_I386(129, sys_delete_module, sys_delete_module) __SYSCALL_I386(131, sys_quotactl, sys32_quotactl) __SYSCALL_I386(132, sys_getpgid, sys_getpgid) __SYSCALL_I386(133, sys_fchdir, sys_fchdir) __SYSCALL_I386(134, sys_bdflush, sys_bdflush) __SYSCALL_I386(135, sys_sysfs, sys_sysfs) __SYSCALL_I386(136, sys_personality, sys_personality) __SYSCALL_I386(138, sys_setfsuid16, sys_setfsuid16) __SYSCALL_I386(139, sys_setfsgid16, sys_setfsgid16) __SYSCALL_I386(140, sys_llseek, sys_llseek) __SYSCALL_I386(141, sys_getdents, compat_sys_getdents) __SYSCALL_I386(142, sys_select, compat_sys_select) __SYSCALL_I386(143, sys_flock, sys_flock) __SYSCALL_I386(144, sys_msync, sys_msync) __SYSCALL_I386(145, sys_readv, compat_sys_readv) __SYSCALL_I386(146, sys_writev, compat_sys_writev) __SYSCALL_I386(147, sys_getsid, sys_getsid) __SYSCALL_I386(148, sys_fdatasync, sys_fdatasync) __SYSCALL_I386(149, sys_sysctl, compat_sys_sysctl) __SYSCALL_I386(150, sys_mlock, sys_mlock) __SYSCALL_I386(151, sys_munlock, sys_munlock) __SYSCALL_I386(152, sys_mlockall, sys_mlockall) __SYSCALL_I386(153, sys_munlockall, sys_munlockall) __SYSCALL_I386(154, sys_sched_setparam, sys_sched_setparam) __SYSCALL_I386(155, sys_sched_getparam, sys_sched_getparam) __SYSCALL_I386(156, sys_sched_setscheduler, sys_sched_setscheduler) __SYSCALL_I386(157, sys_sched_getscheduler, sys_sched_getscheduler) __SYSCALL_I386(158, sys_sched_yield, sys_sched_yield) __SYSCALL_I386(159, sys_sched_get_priority_max, sys_sched_get_priority_max) __SYSCALL_I386(160, sys_sched_get_priority_min, sys_sched_get_priority_min) __SYSCALL_I386(161, sys_sched_rr_get_interval, compat_sys_sched_rr_get_interval) __SYSCALL_I386(162, sys_nanosleep, compat_sys_nanosleep) __SYSCALL_I386(163, sys_mremap, sys_mremap) __SYSCALL_I386(164, sys_setresuid16, sys_setresuid16) __SYSCALL_I386(165, sys_getresuid16, sys_getresuid16) __SYSCALL_I386(166, sys_vm86, sys32_vm86_warning) __SYSCALL_I386(168, sys_poll, sys_poll) __SYSCALL_I386(170, sys_setresgid16, sys_setresgid16) __SYSCALL_I386(171, sys_getresgid16, sys_getresgid16) __SYSCALL_I386(172, sys_prctl, sys_prctl) __SYSCALL_I386(173, sys_rt_sigreturn, stub32_rt_sigreturn) __SYSCALL_I386(174, sys_rt_sigaction, compat_sys_rt_sigaction) __SYSCALL_I386(175, sys_rt_sigprocmask, sys_rt_sigprocmask) __SYSCALL_I386(176, sys_rt_sigpending, compat_sys_rt_sigpending) __SYSCALL_I386(177, sys_rt_sigtimedwait, compat_sys_rt_sigtimedwait) __SYSCALL_I386(178, sys_rt_sigqueueinfo, compat_sys_rt_sigqueueinfo) __SYSCALL_I386(179, sys_rt_sigsuspend, sys_rt_sigsuspend) __SYSCALL_I386(180, sys_pread64, sys32_pread) __SYSCALL_I386(181, sys_pwrite64, sys32_pwrite) __SYSCALL_I386(182, sys_chown16, sys_chown16) __SYSCALL_I386(183, sys_getcwd, sys_getcwd) __SYSCALL_I386(184, sys_capget, sys_capget) __SYSCALL_I386(185, sys_capset, sys_capset) __SYSCALL_I386(186, sys_sigaltstack, compat_sys_sigaltstack) __SYSCALL_I386(187, sys_sendfile, compat_sys_sendfile) __SYSCALL_I386(190, sys_vfork, stub32_vfork) __SYSCALL_I386(191, sys_getrlimit, compat_sys_getrlimit) __SYSCALL_I386(192, sys_mmap_pgoff, sys_mmap_pgoff) __SYSCALL_I386(193, sys_truncate64, sys32_truncate64) __SYSCALL_I386(194, sys_ftruncate64, sys32_ftruncate64) __SYSCALL_I386(195, sys_stat64, sys32_stat64) __SYSCALL_I386(196, sys_lstat64, sys32_lstat64) __SYSCALL_I386(197, sys_fstat64, sys32_fstat64) __SYSCALL_I386(198, sys_lchown, sys_lchown) __SYSCALL_I386(199, sys_getuid, sys_getuid) __SYSCALL_I386(200, sys_getgid, sys_getgid) __SYSCALL_I386(201, sys_geteuid, sys_geteuid) __SYSCALL_I386(202, sys_getegid, sys_getegid) __SYSCALL_I386(203, sys_setreuid, sys_setreuid) __SYSCALL_I386(204, sys_setregid, sys_setregid) __SYSCALL_I386(205, sys_getgroups, sys_getgroups) __SYSCALL_I386(206, sys_setgroups, sys_setgroups) __SYSCALL_I386(207, sys_fchown, sys_fchown) __SYSCALL_I386(208, sys_setresuid, sys_setresuid) __SYSCALL_I386(209, sys_getresuid, sys_getresuid) __SYSCALL_I386(210, sys_setresgid, sys_setresgid) __SYSCALL_I386(211, sys_getresgid, sys_getresgid) __SYSCALL_I386(212, sys_chown, sys_chown) __SYSCALL_I386(213, sys_setuid, sys_setuid) __SYSCALL_I386(214, sys_setgid, sys_setgid) __SYSCALL_I386(215, sys_setfsuid, sys_setfsuid) __SYSCALL_I386(216, sys_setfsgid, sys_setfsgid) __SYSCALL_I386(217, sys_pivot_root, sys_pivot_root) __SYSCALL_I386(218, sys_mincore, sys_mincore) __SYSCALL_I386(219, sys_madvise, sys_madvise) __SYSCALL_I386(220, sys_getdents64, compat_sys_getdents64) __SYSCALL_I386(221, sys_fcntl64, compat_sys_fcntl64) __SYSCALL_I386(224, sys_gettid, sys_gettid) __SYSCALL_I386(225, sys_readahead, sys32_readahead) __SYSCALL_I386(226, sys_setxattr, sys_setxattr) __SYSCALL_I386(227, sys_lsetxattr, sys_lsetxattr) __SYSCALL_I386(228, sys_fsetxattr, sys_fsetxattr) __SYSCALL_I386(229, sys_getxattr, sys_getxattr) __SYSCALL_I386(230, sys_lgetxattr, sys_lgetxattr) __SYSCALL_I386(231, sys_fgetxattr, sys_fgetxattr) __SYSCALL_I386(232, sys_listxattr, sys_listxattr) __SYSCALL_I386(233, sys_llistxattr, sys_llistxattr) __SYSCALL_I386(234, sys_flistxattr, sys_flistxattr) __SYSCALL_I386(235, sys_removexattr, sys_removexattr) __SYSCALL_I386(236, sys_lremovexattr, sys_lremovexattr) __SYSCALL_I386(237, sys_fremovexattr, sys_fremovexattr) __SYSCALL_I386(238, sys_tkill, sys_tkill) __SYSCALL_I386(239, sys_sendfile64, sys_sendfile64) __SYSCALL_I386(240, sys_futex, compat_sys_futex) __SYSCALL_I386(241, sys_sched_setaffinity, compat_sys_sched_setaffinity) __SYSCALL_I386(242, sys_sched_getaffinity, compat_sys_sched_getaffinity) __SYSCALL_I386(243, sys_set_thread_area, sys_set_thread_area) __SYSCALL_I386(244, sys_get_thread_area, sys_get_thread_area) __SYSCALL_I386(245, sys_io_setup, compat_sys_io_setup) __SYSCALL_I386(246, sys_io_destroy, sys_io_destroy) __SYSCALL_I386(247, sys_io_getevents, compat_sys_io_getevents) __SYSCALL_I386(248, sys_io_submit, compat_sys_io_submit) __SYSCALL_I386(249, sys_io_cancel, sys_io_cancel) __SYSCALL_I386(250, sys_fadvise64, sys32_fadvise64) __SYSCALL_I386(252, sys_exit_group, sys_exit_group) __SYSCALL_I386(253, sys_lookup_dcookie, compat_sys_lookup_dcookie) __SYSCALL_I386(254, sys_epoll_create, sys_epoll_create) __SYSCALL_I386(255, sys_epoll_ctl, sys_epoll_ctl) __SYSCALL_I386(256, sys_epoll_wait, sys_epoll_wait) __SYSCALL_I386(257, sys_remap_file_pages, sys_remap_file_pages) __SYSCALL_I386(258, sys_set_tid_address, sys_set_tid_address) __SYSCALL_I386(259, sys_timer_create, compat_sys_timer_create) __SYSCALL_I386(260, sys_timer_settime, compat_sys_timer_settime) __SYSCALL_I386(261, sys_timer_gettime, compat_sys_timer_gettime) __SYSCALL_I386(262, sys_timer_getoverrun, sys_timer_getoverrun) __SYSCALL_I386(263, sys_timer_delete, sys_timer_delete) __SYSCALL_I386(264, sys_clock_settime, compat_sys_clock_settime) __SYSCALL_I386(265, sys_clock_gettime, compat_sys_clock_gettime) __SYSCALL_I386(266, sys_clock_getres, compat_sys_clock_getres) __SYSCALL_I386(267, sys_clock_nanosleep, compat_sys_clock_nanosleep) __SYSCALL_I386(268, sys_statfs64, compat_sys_statfs64) __SYSCALL_I386(269, sys_fstatfs64, compat_sys_fstatfs64) __SYSCALL_I386(270, sys_tgkill, sys_tgkill) __SYSCALL_I386(271, sys_utimes, compat_sys_utimes) __SYSCALL_I386(272, sys_fadvise64_64, sys32_fadvise64_64) __SYSCALL_I386(274, sys_mbind, sys_mbind) __SYSCALL_I386(275, sys_get_mempolicy, compat_sys_get_mempolicy) __SYSCALL_I386(276, sys_set_mempolicy, sys_set_mempolicy) __SYSCALL_I386(277, sys_mq_open, compat_sys_mq_open) __SYSCALL_I386(278, sys_mq_unlink, sys_mq_unlink) __SYSCALL_I386(279, sys_mq_timedsend, compat_sys_mq_timedsend) __SYSCALL_I386(280, sys_mq_timedreceive, compat_sys_mq_timedreceive) __SYSCALL_I386(281, sys_mq_notify, compat_sys_mq_notify) __SYSCALL_I386(282, sys_mq_getsetattr, compat_sys_mq_getsetattr) __SYSCALL_I386(283, sys_kexec_load, compat_sys_kexec_load) __SYSCALL_I386(284, sys_waitid, compat_sys_waitid) __SYSCALL_I386(286, sys_add_key, sys_add_key) __SYSCALL_I386(287, sys_request_key, sys_request_key) __SYSCALL_I386(288, sys_keyctl, sys_keyctl) __SYSCALL_I386(289, sys_ioprio_set, sys_ioprio_set) __SYSCALL_I386(290, sys_ioprio_get, sys_ioprio_get) __SYSCALL_I386(291, sys_inotify_init, sys_inotify_init) __SYSCALL_I386(292, sys_inotify_add_watch, sys_inotify_add_watch) __SYSCALL_I386(293, sys_inotify_rm_watch, sys_inotify_rm_watch) __SYSCALL_I386(294, sys_migrate_pages, sys_migrate_pages) __SYSCALL_I386(295, sys_openat, compat_sys_openat) __SYSCALL_I386(296, sys_mkdirat, sys_mkdirat) __SYSCALL_I386(297, sys_mknodat, sys_mknodat) __SYSCALL_I386(298, sys_fchownat, sys_fchownat) __SYSCALL_I386(299, sys_futimesat, compat_sys_futimesat) __SYSCALL_I386(300, sys_fstatat64, sys32_fstatat) __SYSCALL_I386(301, sys_unlinkat, sys_unlinkat) __SYSCALL_I386(302, sys_renameat, sys_renameat) __SYSCALL_I386(303, sys_linkat, sys_linkat) __SYSCALL_I386(304, sys_symlinkat, sys_symlinkat) __SYSCALL_I386(305, sys_readlinkat, sys_readlinkat) __SYSCALL_I386(306, sys_fchmodat, sys_fchmodat) __SYSCALL_I386(307, sys_faccessat, sys_faccessat) __SYSCALL_I386(308, sys_pselect6, compat_sys_pselect6) __SYSCALL_I386(309, sys_ppoll, compat_sys_ppoll) __SYSCALL_I386(310, sys_unshare, sys_unshare) __SYSCALL_I386(311, sys_set_robust_list, compat_sys_set_robust_list) __SYSCALL_I386(312, sys_get_robust_list, compat_sys_get_robust_list) __SYSCALL_I386(313, sys_splice, sys_splice) __SYSCALL_I386(314, sys_sync_file_range, sys32_sync_file_range) __SYSCALL_I386(315, sys_tee, sys_tee) __SYSCALL_I386(316, sys_vmsplice, compat_sys_vmsplice) __SYSCALL_I386(317, sys_move_pages, compat_sys_move_pages) __SYSCALL_I386(318, sys_getcpu, sys_getcpu) __SYSCALL_I386(319, sys_epoll_pwait, sys_epoll_pwait) __SYSCALL_I386(320, sys_utimensat, compat_sys_utimensat) __SYSCALL_I386(321, sys_signalfd, compat_sys_signalfd) __SYSCALL_I386(322, sys_timerfd_create, sys_timerfd_create) __SYSCALL_I386(323, sys_eventfd, sys_eventfd) __SYSCALL_I386(324, sys_fallocate, sys32_fallocate) __SYSCALL_I386(325, sys_timerfd_settime, compat_sys_timerfd_settime) __SYSCALL_I386(326, sys_timerfd_gettime, compat_sys_timerfd_gettime) __SYSCALL_I386(327, sys_signalfd4, compat_sys_signalfd4) __SYSCALL_I386(328, sys_eventfd2, sys_eventfd2) __SYSCALL_I386(329, sys_epoll_create1, sys_epoll_create1) __SYSCALL_I386(330, sys_dup3, sys_dup3) __SYSCALL_I386(331, sys_pipe2, sys_pipe2) __SYSCALL_I386(332, sys_inotify_init1, sys_inotify_init1) __SYSCALL_I386(333, sys_preadv, compat_sys_preadv) __SYSCALL_I386(334, sys_pwritev, compat_sys_pwritev) __SYSCALL_I386(335, sys_rt_tgsigqueueinfo, compat_sys_rt_tgsigqueueinfo) __SYSCALL_I386(336, sys_perf_event_open, sys_perf_event_open) __SYSCALL_I386(337, sys_recvmmsg, compat_sys_recvmmsg) __SYSCALL_I386(338, sys_fanotify_init, sys_fanotify_init) __SYSCALL_I386(339, sys_fanotify_mark, compat_sys_fanotify_mark) __SYSCALL_I386(340, sys_prlimit64, sys_prlimit64) __SYSCALL_I386(341, sys_name_to_handle_at, sys_name_to_handle_at) __SYSCALL_I386(342, sys_open_by_handle_at, compat_sys_open_by_handle_at) __SYSCALL_I386(343, sys_clock_adjtime, compat_sys_clock_adjtime) __SYSCALL_I386(344, sys_syncfs, sys_syncfs) __SYSCALL_I386(345, sys_sendmmsg, compat_sys_sendmmsg) __SYSCALL_I386(346, sys_setns, sys_setns) __SYSCALL_I386(347, sys_process_vm_readv, compat_sys_process_vm_readv) __SYSCALL_I386(348, sys_process_vm_writev, compat_sys_process_vm_writev) __SYSCALL_I386(349, sys_kcmp, sys_kcmp) __SYSCALL_I386(350, sys_finit_module, sys_finit_module)
02)系统调用如何被初始化?
将系统调用初始化到中断向量表当中,以便使用int 0x80可以触发。
见linux-3.12.4\arch\x86\kernel\traps.c:trap_init()
#ifdef CONFIG_X86_32 set_system_trap_gate(SYSCALL_VECTOR, &system_call); set_bit(SYSCALL_VECTOR, used_vectors); #endif
03)system_call函数是在哪儿定义的?。
见./arch/x86/kernel/entry_32.S:ENTRY(system_call)
该汇编主要做了下面几件事:
1.进入ring0特权级。
2.保存寄存器值。
3.检查trace标志是否被设置,若设置,为strace做额外工作。(主要供strace命令使用)
4.执行syscall_call函数,调用sys_call_table[%eax]中的系统调用服务例程。
5.退出,恢复信息。
/* * syscall stub including irq exit should be protected against kprobes */ .pushsection .kprobes.text, "ax" # system call handler stub ENTRY(system_call) RING0_INT_FRAME # can‘t unwind into user space anyway ASM_CLAC pushl_cfi %eax # save orig_eax SAVE_ALL GET_THREAD_INFO(%ebp) # system call tracing in operation / emulation testl $_TIF_WORK_SYSCALL_ENTRY,TI_flags(%ebp) jnz syscall_trace_entry cmpl $(NR_syscalls), %eax jae syscall_badsys syscall_call: call *sys_call_table(,%eax,4) movl %eax,PT_EAX(%esp) # store the return value syscall_exit: LOCKDEP_SYS_EXIT DISABLE_INTERRUPTS(CLBR_ANY) # make sure we don‘t miss an interrupt # setting need_resched or sigpending # between sampling and the iret TRACE_IRQS_OFF movl TI_flags(%ebp), %ecx testl $_TIF_ALLWORK_MASK, %ecx # current->work jne syscall_exit_work restore_all: TRACE_IRQS_IRET restore_all_notrace: movl PT_EFLAGS(%esp), %eax # mix EFLAGS, SS and CS # Warning: PT_OLDSS(%esp) contains the wrong/random values if we # are returning to the kernel. # See comments in process.c:copy_thread() for details. movb PT_OLDSS(%esp), %ah movb PT_CS(%esp), %al andl $(X86_EFLAGS_VM | (SEGMENT_TI_MASK << 8) | SEGMENT_RPL_MASK), %eax cmpl $((SEGMENT_LDT << 8) | USER_RPL), %eax CFI_REMEMBER_STATE je ldt_ss # returning to user-space with LDT SS restore_nocheck: RESTORE_REGS 4 # skip orig_eax/error_code irq_return: INTERRUPT_RETURN .section .fixup,"ax" ENTRY(iret_exc) pushl $0 # no error code pushl $do_iret_error jmp error_code .previous _ASM_EXTABLE(irq_return,iret_exc) CFI_RESTORE_STATE ldt_ss: larl PT_OLDSS(%esp), %eax jnz restore_nocheck testl $0x00400000, %eax # returning to 32bit stack? jnz restore_nocheck # allright, normal return #ifdef CONFIG_PARAVIRT /* * The kernel can‘t run on a non-flat stack if paravirt mode * is active. Rather than try to fixup the high bits of * ESP, bypass this code entirely. This may break DOSemu * and/or Wine support in a paravirt VM, although the option * is still available to implement the setting of the high * 16-bits in the INTERRUPT_RETURN paravirt-op. */ cmpl $0, pv_info+PARAVIRT_enabled jne restore_nocheck #endif /* * Setup and switch to ESPFIX stack * * We‘re returning to userspace with a 16 bit stack. The CPU will not * restore the high word of ESP for us on executing iret... This is an * "official" bug of all the x86-compatible CPUs, which we can work * around to make dosemu and wine happy. We do this by preloading the * high word of ESP with the high word of the userspace ESP while * compensating for the offset by changing to the ESPFIX segment with * a base address that matches for the difference. */ #define GDT_ESPFIX_SS PER_CPU_VAR(gdt_page) + (GDT_ENTRY_ESPFIX_SS * 8) mov %esp, %edx /* load kernel esp */ mov PT_OLDESP(%esp), %eax /* load userspace esp */ mov %dx, %ax /* eax: new kernel esp */ sub %eax, %edx /* offset (low word is 0) */ shr $16, %edx mov %dl, GDT_ESPFIX_SS + 4 /* bits 16..23 */ mov %dh, GDT_ESPFIX_SS + 7 /* bits 24..31 */ pushl_cfi $__ESPFIX_SS pushl_cfi %eax /* new kernel esp */ /* Disable interrupts, but do not irqtrace this section: we * will soon execute iret and the tracer was already set to * the irqstate after the iret */ DISABLE_INTERRUPTS(CLBR_EAX) lss (%esp), %esp /* switch to espfix segment */ CFI_ADJUST_CFA_OFFSET -8 jmp restore_nocheck CFI_ENDPROC ENDPROC(system_call
04)系统调用实现例程到底是如何定义的?
先来看看open系统调用的实现。open定义在fs/open.c当中,如下,其调用了SYSCALL_DEFINE3宏,该宏定义在include/linux/syscalls.h当中。
SYSCALL_DEFINE3(open, const char __user *, filename, int, flags, umode_t, mode) { if (force_o_largefile()) flags |= O_LARGEFILE; return do_sys_open(AT_FDCWD, filename, flags, mode); }
我们根据include/linux/syscalls.h当中的宏定义进行展开,得如下具体定义:
/*找所有的类型定义,以字符串存储*/ static const char *types__open[] = { __MAP(3,__SC_STR_TDECL,__VA_ARGS__) }; /*以字符串存储变量名*/ static const char *args__open[] = { __MAP(3,__SC_STR_ADECL,__VA_ARGS__) }; static struct syscall_metadata __used __syscall_meta__open = { .name = "sys_open", .syscall_nr = -1, /* Filled in at boot */ .nb_args = 3, .types = 3 ? types__open : NULL, .args = 3 ? args__open : NULL, .enter_event = &event_enter__open, .exit_event = &event_exit__open, .enter_fields = LIST_HEAD_INIT(__syscall_meta__open.enter_fields), }; static struct syscall_metadata __used __attribute__((section("__syscalls_metadata"))) *__p_syscall_meta__open = &__syscall_meta__open; static struct ftrace_event_call __used event_enter__open = { .name = "sys_enter_open", .class = &event_class_syscall_enter, .event.funcs = &enter_syscall_print_funcs, .data = (void *)&__syscall_meta__open, .flags = TRACE_EVENT_FL_CAP_ANY, }; static struct ftrace_event_call __used __attribute__((section("_ftrace_events"))) *__event_enter__open = &event_enter__open; static struct ftrace_event_call __used event_exit__open = { .name = "sys_exit_open", .class = &event_class_syscall_exit, .event.funcs = &exit_syscall_print_funcs, .data = (void *)&__syscall_meta__open, .flags = TRACE_EVENT_FL_CAP_ANY, }; static struct ftrace_event_call __used __attribute__((section("_ftrace_events"))) *__event_exit__open = &event_exit__open; asmlinkage long sys_open(__MAP(3,__SC_DECL,__VA_ARGS__)); static inline long SYSC_open(__MAP(3,__SC_DECL,__VA_ARGS__)); asmlinkage long SyS_open(__MAP(3,__SC_LONG,__VA_ARGS__)); static inline long SYSC_open(__MAP(3,__SC_DECL,__VA_ARGS__)) { if (force_o_largefile()) flags |= O_LARGEFILE; return do_sys_open(AT_FDCWD, filename, flags, mode); } asmlinkage long SyS_open(__MAP(3,__SC_LONG,__VA_ARGS__)) { long ret = SYSC_open(__MAP(3,__SC_CAST,__VA_ARGS__)); __MAP(3,__SC_TEST,__VA_ARGS__); __PROTECT(3, ret,__MAP(3,__SC_ARGS,__VA_ARGS__)); return ret; } SYSCALL_ALIAS(sys_open, SyS_open);
由上可知每一个系统调用都会定义一个syscall_metadata类型的静态数据变量,该变量的名称为__syscall_meta__name,name为系统变量的名称。
定义一个系统调用可以使用7种宏进行实现,它们分别是:
SYSCALL_DEFINE0
SYSCALL_DEFINE1
SYSCALL_DEFINE2
SYSCALL_DEFINE3
SYSCALL_DEFINE4
SYSCALL_DEFINE5
SYSCALL_DEFINE6
这7个宏后面的数字表示参数的个数,由此可见系统调用最多可支持6个参数,多余6个参数就要考虑使用指针进行传递,另外值得注意的是这7个宏的参数,它们在类型和名称之间添加了逗号,像open系统调用:
SYSCALL_DEFINE3(open,
const
char
__user *, filename,
int
, flags, umode_t, mode)
这看起来像是有7个参数,但是恰恰是使用这种方式include/linux/syscalls.h当中的
__MAP宏才能知道参数的类型名和参数名称。
05)如何找到系统调用的具体函数位置?
这个根据经验进行判断。
系统及进程相关的系统调用在kernel/sys.c。
文件系统相关的在fs/open.c和fs/read_write.c当中。
进程通信的在ipc目录下。
内存相关的在mm目录下。
网络相关的在net目录下。
另外一个很简答的方法是使用grep进行查找
zhangys@debian:/usr/src/linux-3.12.4$ find . -name *.c | xargs grep SYSCALL_DEFINE[0-6] 2&> syscall.txt
下面是我查找好的,希望对你有帮助
grep: 2: No such file or directory ./security/keys/keyctl.c:SYSCALL_DEFINE5(add_key, const char __user *, _type, ./security/keys/keyctl.c:SYSCALL_DEFINE4(request_key, const char __user *, _type, ./security/keys/keyctl.c:SYSCALL_DEFINE5(keyctl, int, option, unsigned long, arg2, unsigned long, arg3, grep: 2: No such file or directory ./drivers/pci/syscall.c:SYSCALL_DEFINE5(pciconfig_read, unsigned long, bus, unsigned long, dfn, ./drivers/pci/syscall.c:SYSCALL_DEFINE5(pciconfig_write, unsigned long, bus, unsigned long, dfn, grep: 2: No such file or directory grep: 2: No such file or directory ./kernel/signal.c:SYSCALL_DEFINE0(restart_syscall) ./kernel/signal.c:SYSCALL_DEFINE4(rt_sigprocmask, int, how, sigset_t __user *, nset, ./kernel/signal.c:COMPAT_SYSCALL_DEFINE4(rt_sigprocmask, int, how, compat_sigset_t __user *, nset, ./kernel/signal.c:SYSCALL_DEFINE2(rt_sigpending, sigset_t __user *, uset, size_t, sigsetsize) ./kernel/signal.c:COMPAT_SYSCALL_DEFINE2(rt_sigpending, compat_sigset_t __user *, uset, ./kernel/signal.c:SYSCALL_DEFINE4(rt_sigtimedwait, const sigset_t __user *, uthese, ./kernel/signal.c:SYSCALL_DEFINE2(kill, pid_t, pid, int, sig) ./kernel/signal.c:SYSCALL_DEFINE3(tgkill, pid_t, tgid, pid_t, pid, int, sig) ./kernel/signal.c:SYSCALL_DEFINE2(tkill, pid_t, pid, int, sig) ./kernel/signal.c:SYSCALL_DEFINE3(rt_sigqueueinfo, pid_t, pid, int, sig, ./kernel/signal.c:COMPAT_SYSCALL_DEFINE3(rt_sigqueueinfo, ./kernel/signal.c:SYSCALL_DEFINE4(rt_tgsigqueueinfo, pid_t, tgid, pid_t, pid, int, sig, ./kernel/signal.c:COMPAT_SYSCALL_DEFINE4(rt_tgsigqueueinfo, ./kernel/signal.c:SYSCALL_DEFINE2(sigaltstack,const stack_t __user *,uss, stack_t __user *,uoss) ./kernel/signal.c:COMPAT_SYSCALL_DEFINE2(sigaltstack, ./kernel/signal.c:SYSCALL_DEFINE1(sigpending, old_sigset_t __user *, set) ./kernel/signal.c:SYSCALL_DEFINE3(sigprocmask, int, how, old_sigset_t __user *, nset, ./kernel/signal.c:SYSCALL_DEFINE4(rt_sigaction, int, sig, ./kernel/signal.c:COMPAT_SYSCALL_DEFINE4(rt_sigaction, int, sig, ./kernel/signal.c:SYSCALL_DEFINE3(sigaction, int, sig, ./kernel/signal.c:COMPAT_SYSCALL_DEFINE3(sigaction, int, sig, ./kernel/signal.c:SYSCALL_DEFINE0(sgetmask) ./kernel/signal.c:SYSCALL_DEFINE1(ssetmask, int, newmask) ./kernel/signal.c:SYSCALL_DEFINE2(signal, int, sig, __sighandler_t, handler) ./kernel/signal.c:SYSCALL_DEFINE0(pause) ./kernel/signal.c:SYSCALL_DEFINE2(rt_sigsuspend, sigset_t __user *, unewset, size_t, sigsetsize) ./kernel/signal.c:COMPAT_SYSCALL_DEFINE2(rt_sigsuspend, compat_sigset_t __user *, unewset, compat_size_t, sigsetsize) ./kernel/signal.c:SYSCALL_DEFINE1(sigsuspend, old_sigset_t, mask) ./kernel/signal.c:SYSCALL_DEFINE3(sigsuspend, int, unused1, int, unused2, old_sigset_t, mask) ./kernel/exec_domain.c:SYSCALL_DEFINE1(personality, unsigned int, personality) ./kernel/kcmp.c:SYSCALL_DEFINE5(kcmp, pid_t, pid1, pid_t, pid2, int, type, ./kernel/futex.c:SYSCALL_DEFINE2(set_robust_list, struct robust_list_head __user *, head, ./kernel/futex.c:SYSCALL_DEFINE3(get_robust_list, int, pid, ./kernel/futex.c:SYSCALL_DEFINE6(futex, u32 __user *, uaddr, int, op, u32, val, ./kernel/reboot.c:SYSCALL_DEFINE4(reboot, int, magic1, int, magic2, unsigned int, cmd, ./kernel/itimer.c:SYSCALL_DEFINE2(getitimer, int, which, struct itimerval __user *, value) ./kernel/itimer.c:SYSCALL_DEFINE3(setitimer, int, which, struct itimerval __user *, value, ./kernel/exit.c:SYSCALL_DEFINE1(exit, int, error_code) ./kernel/exit.c:SYSCALL_DEFINE1(exit_group, int, error_code) ./kernel/exit.c:SYSCALL_DEFINE5(waitid, int, which, pid_t, upid, struct siginfo __user *, ./kernel/exit.c:SYSCALL_DEFINE4(wait4, pid_t, upid, int __user *, stat_addr, ./kernel/exit.c:SYSCALL_DEFINE3(waitpid, pid_t, pid, int __user *, stat_addr, int, options) ./kernel/events/core.c:SYSCALL_DEFINE5(perf_event_open, ./kernel/fork.c:SYSCALL_DEFINE1(set_tid_address, int __user *, tidptr) ./kernel/fork.c:SYSCALL_DEFINE0(fork) ./kernel/fork.c:SYSCALL_DEFINE0(vfork) ./kernel/fork.c:SYSCALL_DEFINE5(clone, unsigned long, clone_flags, unsigned long, newsp, ./kernel/fork.c:SYSCALL_DEFINE5(clone, unsigned long, newsp, unsigned long, clone_flags, ./kernel/fork.c:SYSCALL_DEFINE6(clone, unsigned long, clone_flags, unsigned long, newsp, ./kernel/fork.c:SYSCALL_DEFINE5(clone, unsigned long, clone_flags, unsigned long, newsp, ./kernel/fork.c:SYSCALL_DEFINE1(unshare, unsigned long, unshare_flags) ./kernel/uid16.c:SYSCALL_DEFINE3(chown16, const char __user *, filename, old_uid_t, user, old_gid_t, group) ./kernel/uid16.c:SYSCALL_DEFINE3(lchown16, const char __user *, filename, old_uid_t, user, old_gid_t, group) ./kernel/uid16.c:SYSCALL_DEFINE3(fchown16, unsigned int, fd, old_uid_t, user, old_gid_t, group) ./kernel/uid16.c:SYSCALL_DEFINE2(setregid16, old_gid_t, rgid, old_gid_t, egid) ./kernel/uid16.c:SYSCALL_DEFINE1(setgid16, old_gid_t, gid) ./kernel/uid16.c:SYSCALL_DEFINE2(setreuid16, old_uid_t, ruid, old_uid_t, euid) ./kernel/uid16.c:SYSCALL_DEFINE1(setuid16, old_uid_t, uid) ./kernel/uid16.c:SYSCALL_DEFINE3(setresuid16, old_uid_t, ruid, old_uid_t, euid, old_uid_t, suid) ./kernel/uid16.c:SYSCALL_DEFINE3(getresuid16, old_uid_t __user *, ruidp, old_uid_t __user *, euidp, old_uid_t __user *, suidp) ./kernel/uid16.c:SYSCALL_DEFINE3(setresgid16, old_gid_t, rgid, old_gid_t, egid, old_gid_t, sgid) ./kernel/uid16.c:SYSCALL_DEFINE3(getresgid16, old_gid_t __user *, rgidp, old_gid_t __user *, egidp, old_gid_t __user *, sgidp) ./kernel/uid16.c:SYSCALL_DEFINE1(setfsuid16, old_uid_t, uid) ./kernel/uid16.c:SYSCALL_DEFINE1(setfsgid16, old_gid_t, gid) ./kernel/uid16.c:SYSCALL_DEFINE2(getgroups16, int, gidsetsize, old_gid_t __user *, grouplist) ./kernel/uid16.c:SYSCALL_DEFINE2(setgroups16, int, gidsetsize, old_gid_t __user *, grouplist) ./kernel/uid16.c:SYSCALL_DEFINE0(getuid16) ./kernel/uid16.c:SYSCALL_DEFINE0(geteuid16) ./kernel/uid16.c:SYSCALL_DEFINE0(getgid16) ./kernel/uid16.c:SYSCALL_DEFINE0(getegid16) ./kernel/sysctl_binary.c:SYSCALL_DEFINE1(sysctl, struct __sysctl_args __user *, args) ./kernel/sysctl_binary.c:COMPAT_SYSCALL_DEFINE1(sysctl, struct compat_sysctl_args __user *, args) ./kernel/timer.c:SYSCALL_DEFINE1(alarm, unsigned int, seconds) ./kernel/hrtimer.c:SYSCALL_DEFINE2(nanosleep, struct timespec __user *, rqtp, ./kernel/acct.c:SYSCALL_DEFINE1(acct, const char __user *, name) ./kernel/module.c:SYSCALL_DEFINE2(delete_module, const char __user *, name_user, ./kernel/module.c:SYSCALL_DEFINE3(init_module, void __user *, umod, ./kernel/module.c:SYSCALL_DEFINE3(finit_module, int, fd, const char __user *, uargs, int, flags) ./kernel/nsproxy.c:SYSCALL_DEFINE2(setns, int, fd, int, nstype) ./kernel/sched/core.c:SYSCALL_DEFINE1(nice, int, increment) ./kernel/sched/core.c:SYSCALL_DEFINE3(sched_setscheduler, pid_t, pid, int, policy, ./kernel/sched/core.c:SYSCALL_DEFINE2(sched_setparam, pid_t, pid, struct sched_param __user *, param) ./kernel/sched/core.c:SYSCALL_DEFINE1(sched_getscheduler, pid_t, pid) ./kernel/sched/core.c:SYSCALL_DEFINE2(sched_getparam, pid_t, pid, struct sched_param __user *, param) ./kernel/sched/core.c:SYSCALL_DEFINE3(sched_setaffinity, pid_t, pid, unsigned int, len, ./kernel/sched/core.c:SYSCALL_DEFINE3(sched_getaffinity, pid_t, pid, unsigned int, len, ./kernel/sched/core.c:SYSCALL_DEFINE0(sched_yield) ./kernel/sched/core.c:SYSCALL_DEFINE1(sched_get_priority_max, int, policy) ./kernel/sched/core.c:SYSCALL_DEFINE1(sched_get_priority_min, int, policy) ./kernel/sched/core.c:SYSCALL_DEFINE2(sched_rr_get_interval, pid_t, pid, ./kernel/capability.c:SYSCALL_DEFINE2(capget, cap_user_header_t, header, cap_user_data_t, dataptr) ./kernel/capability.c:SYSCALL_DEFINE2(capset, cap_user_header_t, header, const cap_user_data_t, data) ./kernel/ptrace.c:SYSCALL_DEFINE4(ptrace, long, request, long, pid, unsigned long, addr, ./kernel/groups.c:SYSCALL_DEFINE2(getgroups, int, gidsetsize, gid_t __user *, grouplist) ./kernel/groups.c:SYSCALL_DEFINE2(setgroups, int, gidsetsize, gid_t __user *, grouplist) ./kernel/time.c:SYSCALL_DEFINE1(time, time_t __user *, tloc) ./kernel/time.c:SYSCALL_DEFINE1(stime, time_t __user *, tptr) ./kernel/time.c:SYSCALL_DEFINE2(gettimeofday, struct timeval __user *, tv, ./kernel/time.c:SYSCALL_DEFINE2(settimeofday, struct timeval __user *, tv, ./kernel/time.c:SYSCALL_DEFINE1(adjtimex, struct timex __user *, txc_p) ./kernel/kexec.c:SYSCALL_DEFINE4(kexec_load, unsigned long, entry, unsigned long, nr_segments, ./kernel/futex_compat.c:COMPAT_SYSCALL_DEFINE2(set_robust_list, ./kernel/futex_compat.c:COMPAT_SYSCALL_DEFINE3(get_robust_list, int, pid, ./kernel/futex_compat.c:COMPAT_SYSCALL_DEFINE6(futex, u32 __user *, uaddr, int, op, u32, val, ./kernel/sys.c:SYSCALL_DEFINE3(setpriority, int, which, int, who, int, niceval) ./kernel/sys.c:SYSCALL_DEFINE2(getpriority, int, which, int, who) ./kernel/sys.c:SYSCALL_DEFINE2(setregid, gid_t, rgid, gid_t, egid) ./kernel/sys.c:SYSCALL_DEFINE1(setgid, gid_t, gid) ./kernel/sys.c:SYSCALL_DEFINE2(setreuid, uid_t, ruid, uid_t, euid) ./kernel/sys.c:SYSCALL_DEFINE1(setuid, uid_t, uid) ./kernel/sys.c:SYSCALL_DEFINE3(setresuid, uid_t, ruid, uid_t, euid, uid_t, suid) ./kernel/sys.c:SYSCALL_DEFINE3(getresuid, uid_t __user *, ruidp, uid_t __user *, euidp, uid_t __user *, suidp) ./kernel/sys.c:SYSCALL_DEFINE3(setresgid, gid_t, rgid, gid_t, egid, gid_t, sgid) ./kernel/sys.c:SYSCALL_DEFINE3(getresgid, gid_t __user *, rgidp, gid_t __user *, egidp, gid_t __user *, sgidp) ./kernel/sys.c:SYSCALL_DEFINE1(setfsuid, uid_t, uid) ./kernel/sys.c:SYSCALL_DEFINE1(setfsgid, gid_t, gid) ./kernel/sys.c:SYSCALL_DEFINE0(getpid) ./kernel/sys.c:SYSCALL_DEFINE0(gettid) ./kernel/sys.c:SYSCALL_DEFINE0(getppid) ./kernel/sys.c:SYSCALL_DEFINE0(getuid) ./kernel/sys.c:SYSCALL_DEFINE0(geteuid) ./kernel/sys.c:SYSCALL_DEFINE0(getgid) ./kernel/sys.c:SYSCALL_DEFINE0(getegid) ./kernel/sys.c:SYSCALL_DEFINE1(times, struct tms __user *, tbuf) ./kernel/sys.c:SYSCALL_DEFINE2(setpgid, pid_t, pid, pid_t, pgid) ./kernel/sys.c:SYSCALL_DEFINE1(getpgid, pid_t, pid) ./kernel/sys.c:SYSCALL_DEFINE0(getpgrp) ./kernel/sys.c:SYSCALL_DEFINE1(getsid, pid_t, pid) ./kernel/sys.c:SYSCALL_DEFINE0(setsid) ./kernel/sys.c:SYSCALL_DEFINE1(newuname, struct new_utsname __user *, name) ./kernel/sys.c:SYSCALL_DEFINE1(uname, struct old_utsname __user *, name) ./kernel/sys.c:SYSCALL_DEFINE1(olduname, struct oldold_utsname __user *, name) ./kernel/sys.c:SYSCALL_DEFINE2(sethostname, char __user *, name, int, len) ./kernel/sys.c:SYSCALL_DEFINE2(gethostname, char __user *, name, int, len) ./kernel/sys.c:SYSCALL_DEFINE2(setdomainname, char __user *, name, int, len) ./kernel/sys.c:SYSCALL_DEFINE2(getrlimit, unsigned int, resource, struct rlimit __user *, rlim) ./kernel/sys.c:SYSCALL_DEFINE2(old_getrlimit, unsigned int, resource, ./kernel/sys.c:SYSCALL_DEFINE4(prlimit64, pid_t, pid, unsigned int, resource, ./kernel/sys.c:SYSCALL_DEFINE2(setrlimit, unsigned int, resource, struct rlimit __user *, rlim) ./kernel/sys.c:SYSCALL_DEFINE2(getrusage, int, who, struct rusage __user *, ru) ./kernel/sys.c:COMPAT_SYSCALL_DEFINE2(getrusage, int, who, struct compat_rusage __user *, ru) ./kernel/sys.c:SYSCALL_DEFINE1(umask, int, mask) ./kernel/sys.c:SYSCALL_DEFINE5(prctl, int, option, unsigned long, arg2, unsigned long, arg3, ./kernel/sys.c:SYSCALL_DEFINE3(getcpu, unsigned __user *, cpup, unsigned __user *, nodep, ./kernel/sys.c:SYSCALL_DEFINE1(sysinfo, struct sysinfo __user *, info) ./kernel/sys.c:COMPAT_SYSCALL_DEFINE1(sysinfo, struct compat_sysinfo __user *, info) ./kernel/printk/printk.c:SYSCALL_DEFINE3(syslog, int, type, char __user *, buf, int, len) ./kernel/posix-timers.c:SYSCALL_DEFINE3(timer_create, const clockid_t, which_clock, ./kernel/posix-timers.c:SYSCALL_DEFINE2(timer_gettime, timer_t, timer_id, ./kernel/posix-timers.c:SYSCALL_DEFINE1(timer_getoverrun, timer_t, timer_id) ./kernel/posix-timers.c:SYSCALL_DEFINE4(timer_settime, timer_t, timer_id, int, flags, ./kernel/posix-timers.c:SYSCALL_DEFINE1(timer_delete, timer_t, timer_id) ./kernel/posix-timers.c:SYSCALL_DEFINE2(clock_settime, const clockid_t, which_clock, ./kernel/posix-timers.c:SYSCALL_DEFINE2(clock_gettime, const clockid_t, which_clock, ./kernel/posix-timers.c:SYSCALL_DEFINE2(clock_adjtime, const clockid_t, which_clock, ./kernel/posix-timers.c:SYSCALL_DEFINE2(clock_getres, const clockid_t, which_clock, ./kernel/posix-timers.c:SYSCALL_DEFINE4(clock_nanosleep, const clockid_t, which_clock, int, flags, ./kernel/compat.c:COMPAT_SYSCALL_DEFINE2(getitimer, int, which, ./kernel/compat.c:COMPAT_SYSCALL_DEFINE3(setitimer, int, which, ./kernel/compat.c:COMPAT_SYSCALL_DEFINE3(sigprocmask, int, how, ./kernel/compat.c:COMPAT_SYSCALL_DEFINE4(wait4, ./kernel/compat.c:COMPAT_SYSCALL_DEFINE5(waitid, ./kernel/compat.c:COMPAT_SYSCALL_DEFINE4(rt_sigtimedwait, compat_sigset_t __user *, uthese, ./kernel/compat.c:COMPAT_SYSCALL_DEFINE2(sched_rr_get_interval, ./mm/process_vm_access.c:SYSCALL_DEFINE6(process_vm_readv, pid_t, pid, const struct iovec __user *, lvec, ./mm/process_vm_access.c:SYSCALL_DEFINE6(process_vm_writev, pid_t, pid, ./mm/mincore.c:SYSCALL_DEFINE3(mincore, unsigned long, start, size_t, len, ./mm/madvise.c:SYSCALL_DEFINE3(madvise, unsigned long, start, size_t, len_in, int, behavior) ./mm/mlock.c:SYSCALL_DEFINE2(mlock, unsigned long, start, size_t, len) ./mm/mlock.c:SYSCALL_DEFINE2(munlock, unsigned long, start, size_t, len) ./mm/mlock.c:SYSCALL_DEFINE1(mlockall, int, flags) ./mm/mlock.c:SYSCALL_DEFINE0(munlockall) ./mm/fremap.c:SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size, ./mm/fadvise.c:SYSCALL_DEFINE4(fadvise64_64, int, fd, loff_t, offset, loff_t, len, int, advice) ./mm/fadvise.c:SYSCALL_DEFINE4(fadvise64, int, fd, loff_t, offset, size_t, len, int, advice) ./mm/mremap.c:SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len, ./mm/swapfile.c:SYSCALL_DEFINE1(swapoff, const char __user *, specialfile) ./mm/swapfile.c:SYSCALL_DEFINE2(swapon, const char __user *, specialfile, int, swap_flags) ./mm/msync.c:SYSCALL_DEFINE3(msync, unsigned long, start, size_t, len, int, flags) ./mm/readahead.c:SYSCALL_DEFINE3(readahead, int, fd, loff_t, offset, size_t, count) ./mm/nommu.c:SYSCALL_DEFINE1(brk, unsigned long, brk) ./mm/nommu.c:SYSCALL_DEFINE6(mmap_pgoff, unsigned long, addr, unsigned long, len, ./mm/nommu.c:SYSCALL_DEFINE1(old_mmap, struct mmap_arg_struct __user *, arg) ./mm/nommu.c:SYSCALL_DEFINE2(munmap, unsigned long, addr, size_t, len) ./mm/nommu.c:SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len, ./mm/migrate.c:SYSCALL_DEFINE6(move_pages, pid_t, pid, unsigned long, nr_pages, ./mm/mempolicy.c:SYSCALL_DEFINE6(mbind, unsigned long, start, unsigned long, len, ./mm/mempolicy.c:SYSCALL_DEFINE3(set_mempolicy, int, mode, unsigned long __user *, nmask, ./mm/mempolicy.c:SYSCALL_DEFINE4(migrate_pages, pid_t, pid, unsigned long, maxnode, ./mm/mempolicy.c:SYSCALL_DEFINE5(get_mempolicy, int __user *, policy, ./mm/mprotect.c:SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len, ./mm/mmap.c:SYSCALL_DEFINE1(brk, unsigned long, brk) ./mm/mmap.c:SYSCALL_DEFINE6(mmap_pgoff, unsigned long, addr, unsigned long, len, ./mm/mmap.c:SYSCALL_DEFINE1(old_mmap, struct mmap_arg_struct __user *, arg) ./mm/mmap.c:SYSCALL_DEFINE2(munmap, unsigned long, addr, size_t, len) ./arch/sparc/kernel/sys_sparc32.c:COMPAT_SYSCALL_DEFINE3(sparc_sigaction, int, sig, ./arch/sparc/kernel/sys_sparc32.c:COMPAT_SYSCALL_DEFINE5(rt_sigaction, int, sig, ./arch/sparc/kernel/sys_sparc_64.c:SYSCALL_DEFINE1(sparc_pipe_real, struct pt_regs *, regs) ./arch/sparc/kernel/sys_sparc_64.c:SYSCALL_DEFINE6(sparc_ipc, unsigned int, call, int, first, unsigned long, second, ./arch/sparc/kernel/sys_sparc_64.c:SYSCALL_DEFINE1(sparc64_personality, unsigned long, personality) ./arch/sparc/kernel/sys_sparc_64.c:SYSCALL_DEFINE6(mmap, unsigned long, addr, unsigned long, len, ./arch/sparc/kernel/sys_sparc_64.c:SYSCALL_DEFINE2(64_munmap, unsigned long, addr, size_t, len) ./arch/sparc/kernel/sys_sparc_64.c:SYSCALL_DEFINE5(64_mremap, unsigned long, addr, unsigned long, old_len, ./arch/sparc/kernel/sys_sparc_64.c:SYSCALL_DEFINE2(getdomainname, char __user *, name, int, len) ./arch/sparc/kernel/sys_sparc_64.c:SYSCALL_DEFINE5(utrap_install, utrap_entry_t, type, ./arch/sparc/kernel/sys_sparc_64.c:SYSCALL_DEFINE5(rt_sigaction, int, sig, const struct sigaction __user *, act, ./arch/sparc/kernel/sys_sparc_32.c:SYSCALL_DEFINE3(sparc_sigaction, int, sig, ./arch/sparc/kernel/sys_sparc_32.c:SYSCALL_DEFINE5(rt_sigaction, int, sig, ./arch/tile/kernel/signal.c:SYSCALL_DEFINE0(rt_sigreturn) ./arch/tile/kernel/sys.c:SYSCALL_DEFINE3(cacheflush, unsigned long, addr, unsigned long, len, ./arch/tile/kernel/sys.c:SYSCALL_DEFINE6(mmap2, unsigned long, addr, unsigned long, len, ./arch/tile/kernel/sys.c:SYSCALL_DEFINE6(mmap, unsigned long, addr, unsigned long, len, ./arch/tile/kernel/compat.c:COMPAT_SYSCALL_DEFINE4(truncate64, char __user *, filename, u32, dummy, ./arch/tile/kernel/compat.c:COMPAT_SYSCALL_DEFINE4(ftruncate64, unsigned int, fd, u32, dummy, ./arch/tile/kernel/compat.c:COMPAT_SYSCALL_DEFINE6(pread64, unsigned int, fd, char __user *, ubuf, ./arch/tile/kernel/compat.c:COMPAT_SYSCALL_DEFINE6(pwrite64, unsigned int, fd, char __user *, ubuf, ./arch/tile/kernel/compat.c:COMPAT_SYSCALL_DEFINE6(sync_file_range2, int, fd, unsigned int, flags, ./arch/tile/kernel/compat.c:COMPAT_SYSCALL_DEFINE6(fallocate, int, fd, int, mode, ./arch/tile/kernel/compat.c:COMPAT_SYSCALL_DEFINE5(llseek, unsigned int, fd, unsigned int, offset_high, ./arch/tile/mm/fault.c:SYSCALL_DEFINE1(cmpxchg_badaddr, unsigned long, address) ./arch/x86/um/tls_32.c:SYSCALL_DEFINE1(set_thread_area, struct user_desc __user *, user_desc) ./arch/x86/um/tls_32.c:SYSCALL_DEFINE1(get_thread_area, struct user_desc __user *, user_desc) ./arch/x86/kernel/vm86_32.c:SYSCALL_DEFINE1(vm86old, struct vm86_struct __user *, v86) ./arch/x86/kernel/vm86_32.c:SYSCALL_DEFINE2(vm86, unsigned long, cmd, unsigned long, arg) ./arch/x86/kernel/sys_x86_64.c:SYSCALL_DEFINE6(mmap, unsigned long, addr, unsigned long, len, ./arch/x86/kernel/tls.c:SYSCALL_DEFINE1(set_thread_area, struct user_desc __user *, u_info) ./arch/x86/kernel/tls.c:SYSCALL_DEFINE1(get_thread_area, struct user_desc __user *, u_info) ./arch/x86/kernel/ioport.c:SYSCALL_DEFINE1(iopl, unsigned int, level) grep: 2: No such file or directory ./arch/powerpc/platforms/cell/spu_syscalls.c:SYSCALL_DEFINE4(spu_create, const char __user *, name, unsigned int, flags, ./arch/mips/kernel/signal.c:SYSCALL_DEFINE1(sigsuspend, sigset_t __user *, uset) ./arch/mips/kernel/signal.c:SYSCALL_DEFINE3(sigaction, int, sig, const struct sigaction __user *, act, ./arch/mips/kernel/signal32.c:SYSCALL_DEFINE3(32_sigaction, long, sig, const struct compat_sigaction __user *, act, ./arch/mips/kernel/syscall.c:SYSCALL_DEFINE6(mips_mmap, unsigned long, addr, unsigned long, len, ./arch/mips/kernel/syscall.c:SYSCALL_DEFINE6(mips_mmap2, unsigned long, addr, unsigned long, len, ./arch/mips/kernel/syscall.c:SYSCALL_DEFINE1(set_thread_area, unsigned long, addr) ./arch/mips/kernel/syscall.c:SYSCALL_DEFINE3(sysmips, long, cmd, long, arg1, long, arg2) ./arch/mips/kernel/syscall.c:SYSCALL_DEFINE3(cachectl, char *, addr, int, nbytes, int, op) ./arch/mips/kernel/linux32.c:SYSCALL_DEFINE6(32_mmap2, unsigned long, addr, unsigned long, len, ./arch/mips/kernel/linux32.c:SYSCALL_DEFINE4(32_truncate64, const char __user *, path, ./arch/mips/kernel/linux32.c:SYSCALL_DEFINE4(32_ftruncate64, unsigned long, fd, unsigned long, __dummy, ./arch/mips/kernel/linux32.c:SYSCALL_DEFINE5(32_llseek, unsigned int, fd, unsigned int, offset_high, ./arch/mips/kernel/linux32.c:SYSCALL_DEFINE6(32_pread, unsigned long, fd, char __user *, buf, size_t, count, ./arch/mips/kernel/linux32.c:SYSCALL_DEFINE6(32_pwrite, unsigned int, fd, const char __user *, buf, ./arch/mips/kernel/linux32.c:SYSCALL_DEFINE1(32_personality, unsigned long, personality) ./arch/mips/mm/cache.c:SYSCALL_DEFINE3(cacheflush, unsigned long, addr, unsigned long, bytes, ./arch/s390/kernel/signal.c:SYSCALL_DEFINE0(sigreturn) ./arch/s390/kernel/signal.c:SYSCALL_DEFINE0(rt_sigreturn) ./arch/s390/kernel/sys_s390.c:SYSCALL_DEFINE1(mmap2, struct s390_mmap_arg_struct __user *, arg) ./arch/s390/kernel/sys_s390.c:SYSCALL_DEFINE5(s390_ipc, uint, call, int, first, unsigned long, second, ./arch/s390/kernel/sys_s390.c:SYSCALL_DEFINE1(s390_personality, unsigned int, personality) ./arch/s390/kernel/sys_s390.c:SYSCALL_DEFINE5(s390_fadvise64, int, fd, u32, offset_high, u32, offset_low, ./arch/s390/kernel/sys_s390.c:SYSCALL_DEFINE1(s390_fadvise64_64, struct fadvise64_64_args __user *, args) ./arch/s390/kernel/sys_s390.c:SYSCALL_DEFINE5(s390_fallocate, int, fd, int, mode, loff_t, offset, ./arch/s390/kernel/runtime_instr.c:SYSCALL_DEFINE2(s390_runtime_instr, int, command, int, signum) ./arch/s390/kernel/compat_linux.c:COMPAT_SYSCALL_DEFINE5(s390_ipc, uint, call, int, first, unsigned long, second, ./arch/blackfin/kernel/sys_bfin.c:SYSCALL_DEFINE3(cacheflush, unsigned long, addr, unsigned long, len, int, op) ./arch/arc/kernel/signal.c:SYSCALL_DEFINE0(rt_sigreturn) ./arch/arc/kernel/process.c:SYSCALL_DEFINE1(arc_settls, void *, user_tls_data_ptr) ./arch/arc/kernel/process.c:SYSCALL_DEFINE0(arc_gettls) ./arch/arc/mm/cache_arc700.c:SYSCALL_DEFINE3(cacheflush, uint32_t, start, uint32_t, sz, uint32_t, flags) ./arch/alpha/kernel/signal.c:SYSCALL_DEFINE2(osf_sigprocmask, int, how, unsigned long, newmask) ./arch/alpha/kernel/signal.c:SYSCALL_DEFINE3(osf_sigaction, int, sig, ./arch/alpha/kernel/signal.c:SYSCALL_DEFINE5(rt_sigaction, int, sig, const struct sigaction __user *, act, ./arch/alpha/kernel/osf_sys.c:SYSCALL_DEFINE1(osf_brk, unsigned long, brk) ./arch/alpha/kernel/osf_sys.c:SYSCALL_DEFINE4(osf_set_program_attributes, unsigned long, text_start, ./arch/alpha/kernel/osf_sys.c:SYSCALL_DEFINE4(osf_getdirentries, unsigned int, fd, ./arch/alpha/kernel/osf_sys.c:SYSCALL_DEFINE6(osf_mmap, unsigned long, addr, unsigned long, len, ./arch/alpha/kernel/osf_sys.c:SYSCALL_DEFINE3(osf_statfs, const char __user *, pathname, ./arch/alpha/kernel/osf_sys.c:SYSCALL_DEFINE2(osf_stat, char __user *, name, struct osf_stat __user *, buf) ./arch/alpha/kernel/osf_sys.c:SYSCALL_DEFINE2(osf_lstat, char __user *, name, struct osf_stat __user *, buf) ./arch/alpha/kernel/osf_sys.c:SYSCALL_DEFINE2(osf_fstat, int, fd, struct osf_stat __user *, buf) ./arch/alpha/kernel/osf_sys.c:SYSCALL_DEFINE3(osf_fstatfs, unsigned long, fd, ./arch/alpha/kernel/osf_sys.c:SYSCALL_DEFINE3(osf_statfs64, char __user *, pathname, ./arch/alpha/kernel/osf_sys.c:SYSCALL_DEFINE3(osf_fstatfs64, unsigned long, fd, ./arch/alpha/kernel/osf_sys.c:SYSCALL_DEFINE4(osf_mount, unsigned long, typenr, const char __user *, path, ./arch/alpha/kernel/osf_sys.c:SYSCALL_DEFINE1(osf_utsname, char __user *, name) ./arch/alpha/kernel/osf_sys.c:SYSCALL_DEFINE0(getpagesize) ./arch/alpha/kernel/osf_sys.c:SYSCALL_DEFINE0(getdtablesize) ./arch/alpha/kernel/osf_sys.c:SYSCALL_DEFINE2(osf_getdomainname, char __user *, name, int, namelen) ./arch/alpha/kernel/osf_sys.c:SYSCALL_DEFINE2(osf_proplist_syscall, enum pl_code, code, ./arch/alpha/kernel/osf_sys.c:SYSCALL_DEFINE2(osf_sigstack, struct sigstack __user *, uss, ./arch/alpha/kernel/osf_sys.c:SYSCALL_DEFINE3(osf_sysinfo, int, command, char __user *, buf, long, count) ./arch/alpha/kernel/osf_sys.c:SYSCALL_DEFINE5(osf_getsysinfo, unsigned long, op, void __user *, buffer, ./arch/alpha/kernel/osf_sys.c:SYSCALL_DEFINE5(osf_setsysinfo, unsigned long, op, void __user *, buffer, ./arch/alpha/kernel/osf_sys.c:SYSCALL_DEFINE2(osf_gettimeofday, struct timeval32 __user *, tv, ./arch/alpha/kernel/osf_sys.c:SYSCALL_DEFINE2(osf_settimeofday, struct timeval32 __user *, tv, ./arch/alpha/kernel/osf_sys.c:SYSCALL_DEFINE2(osf_getitimer, int, which, struct itimerval32 __user *, it) ./arch/alpha/kernel/osf_sys.c:SYSCALL_DEFINE3(osf_setitimer, int, which, struct itimerval32 __user *, in, ./arch/alpha/kernel/osf_sys.c:SYSCALL_DEFINE2(osf_utimes, const char __user *, filename, ./arch/alpha/kernel/osf_sys.c:SYSCALL_DEFINE5(osf_select, int, n, fd_set __user *, inp, fd_set __user *, outp, ./arch/alpha/kernel/osf_sys.c:SYSCALL_DEFINE2(osf_getrusage, int, who, struct rusage32 __user *, ru) ./arch/alpha/kernel/osf_sys.c:SYSCALL_DEFINE4(osf_wait4, pid_t, pid, int __user *, ustatus, int, options, ./arch/alpha/kernel/osf_sys.c:SYSCALL_DEFINE2(osf_usleep_thread, struct timeval32 __user *, sleep, ./arch/alpha/kernel/osf_sys.c:SYSCALL_DEFINE1(old_adjtimex, struct timex32 __user *, txc_p) ./arch/alpha/kernel/osf_sys.c:SYSCALL_DEFINE3(osf_readv, unsigned long, fd, ./arch/alpha/kernel/osf_sys.c:SYSCALL_DEFINE3(osf_writev, unsigned long, fd, ./arch/alpha/kernel/osf_sys.c:SYSCALL_DEFINE2(osf_getpriority, int, which, int, who) ./arch/alpha/kernel/osf_sys.c:SYSCALL_DEFINE0(getxuid) ./arch/alpha/kernel/osf_sys.c:SYSCALL_DEFINE0(getxgid) ./arch/alpha/kernel/osf_sys.c:SYSCALL_DEFINE0(getxpid) ./arch/alpha/kernel/osf_sys.c:SYSCALL_DEFINE0(alpha_pipe) ./arch/alpha/kernel/osf_sys.c:SYSCALL_DEFINE1(sethae, unsigned long, val) ./ipc/mqueue.c:SYSCALL_DEFINE4(mq_open, const char __user *, u_name, int, oflag, umode_t, mode, ./ipc/mqueue.c:SYSCALL_DEFINE1(mq_unlink, const char __user *, u_name) ./ipc/mqueue.c:SYSCALL_DEFINE5(mq_timedsend, mqd_t, mqdes, const char __user *, u_msg_ptr, ./ipc/mqueue.c:SYSCALL_DEFINE5(mq_timedreceive, mqd_t, mqdes, char __user *, u_msg_ptr, ./ipc/mqueue.c:SYSCALL_DEFINE2(mq_notify, mqd_t, mqdes, ./ipc/mqueue.c:SYSCALL_DEFINE3(mq_getsetattr, mqd_t, mqdes, ./ipc/sem.c:SYSCALL_DEFINE3(semget, key_t, key, int, nsems, int, semflg) ./ipc/sem.c:SYSCALL_DEFINE4(semctl, int, semid, int, semnum, int, cmd, unsigned long, arg) ./ipc/sem.c:SYSCALL_DEFINE4(semtimedop, int, semid, struct sembuf __user *, tsops, ./ipc/sem.c:SYSCALL_DEFINE3(semop, int, semid, struct sembuf __user *, tsops, ./ipc/msg.c:SYSCALL_DEFINE2(msgget, key_t, key, int, msgflg) ./ipc/msg.c:SYSCALL_DEFINE3(msgctl, int, msqid, int, cmd, struct msqid_ds __user *, buf) ./ipc/msg.c:SYSCALL_DEFINE4(msgsnd, int, msqid, struct msgbuf __user *, msgp, size_t, msgsz, ./ipc/msg.c:SYSCALL_DEFINE5(msgrcv, int, msqid, struct msgbuf __user *, msgp, size_t, msgsz, ./ipc/shm.c:SYSCALL_DEFINE3(shmget, key_t, key, size_t, size, int, shmflg) ./ipc/shm.c:SYSCALL_DEFINE3(shmctl, int, shmid, int, cmd, struct shmid_ds __user *, buf) ./ipc/shm.c:SYSCALL_DEFINE3(shmat, int, shmid, char __user *, shmaddr, int, shmflg) ./ipc/shm.c:SYSCALL_DEFINE1(shmdt, char __user *, shmaddr) ./ipc/syscall.c:SYSCALL_DEFINE6(ipc, unsigned int, call, int, first, unsigned long, second, ./ipc/compat.c:COMPAT_SYSCALL_DEFINE6(ipc, u32, call, int, first, int, second, ./ipc/compat.c:COMPAT_SYSCALL_DEFINE4(semctl, int, semid, int, semnum, int, cmd, int, arg) ./ipc/compat.c:COMPAT_SYSCALL_DEFINE4(msgsnd, int, msqid, compat_uptr_t, msgp, ./ipc/compat.c:COMPAT_SYSCALL_DEFINE5(msgrcv, int, msqid, compat_uptr_t, msgp, ./ipc/compat.c:COMPAT_SYSCALL_DEFINE3(shmat, int, shmid, compat_uptr_t, shmaddr, int, shmflg) ./fs/statfs.c:SYSCALL_DEFINE2(statfs, const char __user *, pathname, struct statfs __user *, buf) ./fs/statfs.c:SYSCALL_DEFINE3(statfs64, const char __user *, pathname, size_t, sz, struct statfs64 __user *, buf) ./fs/statfs.c:SYSCALL_DEFINE2(fstatfs, unsigned int, fd, struct statfs __user *, buf) ./fs/statfs.c:SYSCALL_DEFINE3(fstatfs64, unsigned int, fd, size_t, sz, struct statfs64 __user *, buf) ./fs/statfs.c:SYSCALL_DEFINE2(ustat, unsigned, dev, struct ustat __user *, ubuf) ./fs/namei.c:SYSCALL_DEFINE4(mknodat, int, dfd, const char __user *, filename, umode_t, mode, ./fs/namei.c:SYSCALL_DEFINE3(mknod, const char __user *, filename, umode_t, mode, unsigned, dev) ./fs/namei.c:SYSCALL_DEFINE3(mkdirat, int, dfd, const char __user *, pathname, umode_t, mode) ./fs/namei.c:SYSCALL_DEFINE2(mkdir, const char __user *, pathname, umode_t, mode) ./fs/namei.c:SYSCALL_DEFINE1(rmdir, const char __user *, pathname) ./fs/namei.c:SYSCALL_DEFINE3(unlinkat, int, dfd, const char __user *, pathname, int, flag) ./fs/namei.c:SYSCALL_DEFINE1(unlink, const char __user *, pathname) ./fs/namei.c:SYSCALL_DEFINE3(symlinkat, const char __user *, oldname, ./fs/namei.c:SYSCALL_DEFINE2(symlink, const char __user *, oldname, const char __user *, newname) ./fs/namei.c:SYSCALL_DEFINE5(linkat, int, olddfd, const char __user *, oldname, ./fs/namei.c:SYSCALL_DEFINE2(link, const char __user *, oldname, const char __user *, newname) ./fs/namei.c:SYSCALL_DEFINE4(renameat, int, olddfd, const char __user *, oldname, ./fs/namei.c:SYSCALL_DEFINE2(rename, const char __user *, oldname, const char __user *, newname) ./fs/pipe.c:SYSCALL_DEFINE2(pipe2, int __user *, fildes, int, flags) ./fs/pipe.c:SYSCALL_DEFINE1(pipe, int __user *, fildes) ./fs/open.c:SYSCALL_DEFINE2(truncate, const char __user *, path, long, length) ./fs/open.c:COMPAT_SYSCALL_DEFINE2(truncate, const char __user *, path, compat_off_t, length) ./fs/open.c:SYSCALL_DEFINE2(ftruncate, unsigned int, fd, unsigned long, length) ./fs/open.c:COMPAT_SYSCALL_DEFINE2(ftruncate, unsigned int, fd, compat_ulong_t, length) ./fs/open.c:SYSCALL_DEFINE2(truncate64, const char __user *, path, loff_t, length) ./fs/open.c:SYSCALL_DEFINE2(ftruncate64, unsigned int, fd, loff_t, length) ./fs/open.c:SYSCALL_DEFINE4(fallocate, int, fd, int, mode, loff_t, offset, loff_t, len) ./fs/open.c:SYSCALL_DEFINE3(faccessat, int, dfd, const char __user *, filename, int, mode) ./fs/open.c:SYSCALL_DEFINE2(access, const char __user *, filename, int, mode) ./fs/open.c:SYSCALL_DEFINE1(chdir, const char __user *, filename) ./fs/open.c:SYSCALL_DEFINE1(fchdir, unsigned int, fd) ./fs/open.c:SYSCALL_DEFINE1(chroot, const char __user *, filename) ./fs/open.c:SYSCALL_DEFINE2(fchmod, unsigned int, fd, umode_t, mode) ./fs/open.c:SYSCALL_DEFINE3(fchmodat, int, dfd, const char __user *, filename, umode_t, mode) ./fs/open.c:SYSCALL_DEFINE2(chmod, const char __user *, filename, umode_t, mode) ./fs/open.c:SYSCALL_DEFINE5(fchownat, int, dfd, const char __user *, filename, uid_t, user, ./fs/open.c:SYSCALL_DEFINE3(chown, const char __user *, filename, uid_t, user, gid_t, group) ./fs/open.c:SYSCALL_DEFINE3(lchown, const char __user *, filename, uid_t, user, gid_t, group) ./fs/open.c:SYSCALL_DEFINE3(fchown, unsigned int, fd, uid_t, user, gid_t, group) ./fs/open.c:SYSCALL_DEFINE3(open, const char __user *, filename, int, flags, umode_t, mode) ./fs/open.c:SYSCALL_DEFINE4(openat, int, dfd, const char __user *, filename, int, flags, ./fs/open.c:SYSCALL_DEFINE2(creat, const char __user *, pathname, umode_t, mode) ./fs/open.c:SYSCALL_DEFINE1(close, unsigned int, fd) ./fs/open.c:SYSCALL_DEFINE0(vhangup) ./fs/timerfd.c:SYSCALL_DEFINE2(timerfd_create, int, clockid, int, flags) ./fs/timerfd.c:SYSCALL_DEFINE4(timerfd_settime, int, ufd, int, flags, ./fs/timerfd.c:SYSCALL_DEFINE2(timerfd_gettime, int, ufd, struct itimerspec __user *, otmr) ./fs/timerfd.c:COMPAT_SYSCALL_DEFINE4(timerfd_settime, int, ufd, int, flags, ./fs/timerfd.c:COMPAT_SYSCALL_DEFINE2(timerfd_gettime, int, ufd, ./fs/buffer.c:SYSCALL_DEFINE2(bdflush, int, func, long, data) ./fs/filesystems.c:SYSCALL_DEFINE3(sysfs, int, option, unsigned long, arg1, unsigned long, arg2) ./fs/aio.c:SYSCALL_DEFINE2(io_setup, unsigned, nr_events, aio_context_t __user *, ctxp) ./fs/aio.c:SYSCALL_DEFINE1(io_destroy, aio_context_t, ctx) ./fs/aio.c:SYSCALL_DEFINE3(io_submit, aio_context_t, ctx_id, long, nr, ./fs/aio.c:SYSCALL_DEFINE3(io_cancel, aio_context_t, ctx_id, struct iocb __user *, iocb, ./fs/aio.c:SYSCALL_DEFINE5(io_getevents, aio_context_t, ctx_id, ./fs/dcookies.c:SYSCALL_DEFINE3(lookup_dcookie, u64, cookie64, char __user *, buf, size_t, len) ./fs/dcookies.c:COMPAT_SYSCALL_DEFINE4(lookup_dcookie, u32, w0, u32, w1, char __user *, buf, size_t, len) ./fs/utimes.c:SYSCALL_DEFINE2(utime, char __user *, filename, struct utimbuf __user *, times) ./fs/utimes.c:SYSCALL_DEFINE4(utimensat, int, dfd, const char __user *, filename, ./fs/utimes.c:SYSCALL_DEFINE3(futimesat, int, dfd, const char __user *, filename, ./fs/utimes.c:SYSCALL_DEFINE2(utimes, char __user *, filename, ./fs/signalfd.c:SYSCALL_DEFINE4(signalfd4, int, ufd, sigset_t __user *, user_mask, ./fs/signalfd.c:SYSCALL_DEFINE3(signalfd, int, ufd, sigset_t __user *, user_mask, ./fs/signalfd.c:COMPAT_SYSCALL_DEFINE4(signalfd4, int, ufd, ./fs/signalfd.c:COMPAT_SYSCALL_DEFINE3(signalfd, int, ufd, ./fs/fhandle.c:SYSCALL_DEFINE5(name_to_handle_at, int, dfd, const char __user *, name, ./fs/fhandle.c:SYSCALL_DEFINE3(open_by_handle_at, int, mountdirfd, ./fs/read_write.c:SYSCALL_DEFINE3(lseek, unsigned int, fd, off_t, offset, unsigned int, whence) ./fs/read_write.c:COMPAT_SYSCALL_DEFINE3(lseek, unsigned int, fd, compat_off_t, offset, unsigned int, whence) ./fs/read_write.c:SYSCALL_DEFINE5(llseek, unsigned int, fd, unsigned long, offset_high, ./fs/read_write.c:SYSCALL_DEFINE3(read, unsigned int, fd, char __user *, buf, size_t, count) ./fs/read_write.c:SYSCALL_DEFINE3(write, unsigned int, fd, const char __user *, buf, ./fs/read_write.c:SYSCALL_DEFINE4(pread64, unsigned int, fd, char __user *, buf, ./fs/read_write.c:SYSCALL_DEFINE4(pwrite64, unsigned int, fd, const char __user *, buf, ./fs/read_write.c:SYSCALL_DEFINE3(readv, unsigned long, fd, const struct iovec __user *, vec, ./fs/read_write.c:SYSCALL_DEFINE3(writev, unsigned long, fd, const struct iovec __user *, vec, ./fs/read_write.c:SYSCALL_DEFINE5(preadv, unsigned long, fd, const struct iovec __user *, vec, ./fs/read_write.c:SYSCALL_DEFINE5(pwritev, unsigned long, fd, const struct iovec __user *, vec, ./fs/read_write.c:COMPAT_SYSCALL_DEFINE3(readv, unsigned long, fd, ./fs/read_write.c:COMPAT_SYSCALL_DEFINE4(preadv64, unsigned long, fd, ./fs/read_write.c:COMPAT_SYSCALL_DEFINE5(preadv, unsigned long, fd, ./fs/read_write.c:COMPAT_SYSCALL_DEFINE3(writev, unsigned long, fd, ./fs/read_write.c:COMPAT_SYSCALL_DEFINE4(pwritev64, unsigned long, fd, ./fs/read_write.c:COMPAT_SYSCALL_DEFINE5(pwritev, unsigned long, fd, ./fs/read_write.c:SYSCALL_DEFINE4(sendfile, int, out_fd, int, in_fd, off_t __user *, offset, size_t, count) ./fs/read_write.c:SYSCALL_DEFINE4(sendfile64, int, out_fd, int, in_fd, loff_t __user *, offset, size_t, count) ./fs/read_write.c:COMPAT_SYSCALL_DEFINE4(sendfile, int, out_fd, int, in_fd, ./fs/read_write.c:COMPAT_SYSCALL_DEFINE4(sendfile64, int, out_fd, int, in_fd, ./fs/file.c:SYSCALL_DEFINE3(dup3, unsigned int, oldfd, unsigned int, newfd, int, flags) ./fs/file.c:SYSCALL_DEFINE2(dup2, unsigned int, oldfd, unsigned int, newfd) ./fs/file.c:SYSCALL_DEFINE1(dup, unsigned int, fildes) ./fs/ioprio.c:SYSCALL_DEFINE3(ioprio_set, int, which, int, who, int, ioprio) ./fs/ioprio.c:SYSCALL_DEFINE2(ioprio_get, int, which, int, who) ./fs/exec.c:SYSCALL_DEFINE1(uselib, const char __user *, library) ./fs/exec.c:SYSCALL_DEFINE3(execve, ./fs/dcache.c:SYSCALL_DEFINE2(getcwd, char __user *, buf, unsigned long, size) ./fs/eventfd.c:SYSCALL_DEFINE2(eventfd2, unsigned int, count, int, flags) ./fs/eventfd.c:SYSCALL_DEFINE1(eventfd, unsigned int, count) ./fs/ioctl.c:SYSCALL_DEFINE3(ioctl, unsigned int, fd, unsigned int, cmd, unsigned long, arg) ./fs/splice.c:SYSCALL_DEFINE4(vmsplice, int, fd, const struct iovec __user *, iov, ./fs/splice.c:COMPAT_SYSCALL_DEFINE4(vmsplice, int, fd, const struct compat_iovec __user *, iov32, ./fs/splice.c:SYSCALL_DEFINE6(splice, int, fd_in, loff_t __user *, off_in, ./fs/splice.c:SYSCALL_DEFINE4(tee, int, fdin, int, fdout, size_t, len, unsigned int, flags) ./fs/namespace.c:SYSCALL_DEFINE2(umount, char __user *, name, int, flags) ./fs/namespace.c:SYSCALL_DEFINE1(oldumount, char __user *, name) ./fs/namespace.c:SYSCALL_DEFINE5(mount, char __user *, dev_name, char __user *, dir_name, ./fs/namespace.c:SYSCALL_DEFINE2(pivot_root, const char __user *, new_root, ./fs/fcntl.c:SYSCALL_DEFINE3(fcntl, unsigned int, fd, unsigned int, cmd, unsigned long, arg) ./fs/fcntl.c:SYSCALL_DEFINE3(fcntl64, unsigned int, fd, unsigned int, cmd, grep: 2: No such file or directory ./fs/stat.c:SYSCALL_DEFINE2(stat, const char __user *, filename, ./fs/stat.c:SYSCALL_DEFINE2(lstat, const char __user *, filename, ./fs/stat.c:SYSCALL_DEFINE2(fstat, unsigned int, fd, struct __old_kernel_stat __user *, statbuf) ./fs/stat.c:SYSCALL_DEFINE2(newstat, const char __user *, filename, ./fs/stat.c:SYSCALL_DEFINE2(newlstat, const char __user *, filename, ./fs/stat.c:SYSCALL_DEFINE4(newfstatat, int, dfd, const char __user *, filename, ./fs/stat.c:SYSCALL_DEFINE2(newfstat, unsigned int, fd, struct stat __user *, statbuf) ./fs/stat.c:SYSCALL_DEFINE4(readlinkat, int, dfd, const char __user *, pathname, ./fs/stat.c:SYSCALL_DEFINE3(readlink, const char __user *, path, char __user *, buf, ./fs/stat.c:SYSCALL_DEFINE2(stat64, const char __user *, filename, ./fs/stat.c:SYSCALL_DEFINE2(lstat64, const char __user *, filename, ./fs/stat.c:SYSCALL_DEFINE2(fstat64, unsigned long, fd, struct stat64 __user *, statbuf) ./fs/stat.c:SYSCALL_DEFINE4(fstatat64, int, dfd, const char __user *, filename, ./fs/xattr.c:SYSCALL_DEFINE5(setxattr, const char __user *, pathname, ./fs/xattr.c:SYSCALL_DEFINE5(lsetxattr, const char __user *, pathname, ./fs/xattr.c:SYSCALL_DEFINE5(fsetxattr, int, fd, const char __user *, name, ./fs/xattr.c:SYSCALL_DEFINE4(getxattr, const char __user *, pathname, ./fs/xattr.c:SYSCALL_DEFINE4(lgetxattr, const char __user *, pathname, ./fs/xattr.c:SYSCALL_DEFINE4(fgetxattr, int, fd, const char __user *, name, ./fs/xattr.c:SYSCALL_DEFINE3(listxattr, const char __user *, pathname, char __user *, list, ./fs/xattr.c:SYSCALL_DEFINE3(llistxattr, const char __user *, pathname, char __user *, list, ./fs/xattr.c:SYSCALL_DEFINE3(flistxattr, int, fd, char __user *, list, size_t, size) ./fs/xattr.c:SYSCALL_DEFINE2(removexattr, const char __user *, pathname, ./fs/xattr.c:SYSCALL_DEFINE2(lremovexattr, const char __user *, pathname, ./fs/xattr.c:SYSCALL_DEFINE2(fremovexattr, int, fd, const char __user *, name) ./fs/sync.c:SYSCALL_DEFINE0(sync) ./fs/sync.c:SYSCALL_DEFINE1(syncfs, int, fd) ./fs/sync.c:SYSCALL_DEFINE1(fsync, unsigned int, fd) ./fs/sync.c:SYSCALL_DEFINE1(fdatasync, unsigned int, fd) ./fs/sync.c:SYSCALL_DEFINE4(sync_file_range, int, fd, loff_t, offset, loff_t, nbytes, ./fs/sync.c:SYSCALL_DEFINE4(sync_file_range2, int, fd, unsigned int, flags, ./fs/readdir.c:SYSCALL_DEFINE3(old_readdir, unsigned int, fd, ./fs/readdir.c:SYSCALL_DEFINE3(getdents, unsigned int, fd, ./fs/readdir.c:SYSCALL_DEFINE3(getdents64, unsigned int, fd, ./fs/notify/fanotify/fanotify_user.c:SYSCALL_DEFINE2(fanotify_init, unsigned int, flags, unsigned int, event_f_flags) ./fs/notify/fanotify/fanotify_user.c:SYSCALL_DEFINE5(fanotify_mark, int, fanotify_fd, unsigned int, flags, ./fs/notify/fanotify/fanotify_user.c:COMPAT_SYSCALL_DEFINE6(fanotify_mark, ./fs/notify/inotify/inotify_user.c:SYSCALL_DEFINE1(inotify_init1, int, flags) ./fs/notify/inotify/inotify_user.c:SYSCALL_DEFINE0(inotify_init) ./fs/notify/inotify/inotify_user.c:SYSCALL_DEFINE3(inotify_add_watch, int, fd, const char __user *, pathname, ./fs/notify/inotify/inotify_user.c:SYSCALL_DEFINE2(inotify_rm_watch, int, fd, __s32, wd) ./fs/eventpoll.c:SYSCALL_DEFINE1(epoll_create1, int, flags) ./fs/eventpoll.c:SYSCALL_DEFINE1(epoll_create, int, size) ./fs/eventpoll.c:SYSCALL_DEFINE4(epoll_ctl, int, epfd, int, op, int, fd, ./fs/eventpoll.c:SYSCALL_DEFINE4(epoll_wait, int, epfd, struct epoll_event __user *, events, ./fs/eventpoll.c:SYSCALL_DEFINE6(epoll_pwait, int, epfd, struct epoll_event __user *, events, ./fs/eventpoll.c:COMPAT_SYSCALL_DEFINE6(epoll_pwait, int, epfd, ./fs/select.c:SYSCALL_DEFINE5(select, int, n, fd_set __user *, inp, fd_set __user *, outp, ./fs/select.c:SYSCALL_DEFINE6(pselect6, int, n, fd_set __user *, inp, fd_set __user *, outp, ./fs/select.c:SYSCALL_DEFINE1(old_select, struct sel_arg_struct __user *, arg) ./fs/select.c:SYSCALL_DEFINE3(poll, struct pollfd __user *, ufds, unsigned int, nfds, ./fs/select.c:SYSCALL_DEFINE5(ppoll, struct pollfd __user *, ufds, unsigned int, nfds, ./fs/locks.c:SYSCALL_DEFINE2(flock, unsigned int, fd, unsigned int, cmd) ./fs/quota/quota.c:SYSCALL_DEFINE4(quotactl, unsigned int, cmd, const char __user *, special, ./fs/compat.c:COMPAT_SYSCALL_DEFINE3(open, const char __user *, filename, int, flags, umode_t, mode) ./fs/compat.c:COMPAT_SYSCALL_DEFINE4(openat, int, dfd, const char __user *, filename, int, flags, umode_t, mode) ./fs/compat.c:COMPAT_SYSCALL_DEFINE3(open_by_handle_at, int, mountdirfd, ./net/socket.c:SYSCALL_DEFINE3(socket, int, family, int, type, int, protocol) ./net/socket.c:SYSCALL_DEFINE4(socketpair, int, family, int, type, int, protocol, ./net/socket.c:SYSCALL_DEFINE3(bind, int, fd, struct sockaddr __user *, umyaddr, int, addrlen) ./net/socket.c:SYSCALL_DEFINE2(listen, int, fd, int, backlog) ./net/socket.c:SYSCALL_DEFINE4(accept4, int, fd, struct sockaddr __user *, upeer_sockaddr, ./net/socket.c:SYSCALL_DEFINE3(accept, int, fd, struct sockaddr __user *, upeer_sockaddr, ./net/socket.c:SYSCALL_DEFINE3(connect, int, fd, struct sockaddr __user *, uservaddr, ./net/socket.c:SYSCALL_DEFINE3(getsockname, int, fd, struct sockaddr __user *, usockaddr, ./net/socket.c:SYSCALL_DEFINE3(getpeername, int, fd, struct sockaddr __user *, usockaddr, ./net/socket.c:SYSCALL_DEFINE6(sendto, int, fd, void __user *, buff, size_t, len, ./net/socket.c:SYSCALL_DEFINE4(send, int, fd, void __user *, buff, size_t, len, ./net/socket.c:SYSCALL_DEFINE6(recvfrom, int, fd, void __user *, ubuf, size_t, size, ./net/socket.c:SYSCALL_DEFINE5(setsockopt, int, fd, int, level, int, optname, ./net/socket.c:SYSCALL_DEFINE5(getsockopt, int, fd, int, level, int, optname, ./net/socket.c:SYSCALL_DEFINE2(shutdown, int, fd, int, how) ./net/socket.c:SYSCALL_DEFINE3(sendmsg, int, fd, struct msghdr __user *, msg, unsigned int, flags) ./net/socket.c:SYSCALL_DEFINE4(sendmmsg, int, fd, struct mmsghdr __user *, mmsg, ./net/socket.c:SYSCALL_DEFINE3(recvmsg, int, fd, struct msghdr __user *, msg, ./net/socket.c:SYSCALL_DEFINE5(recvmmsg, int, fd, struct mmsghdr __user *, mmsg, ./net/socket.c:SYSCALL_DEFINE2(socketcall, int, call, unsigned long __user *, args)