linux 3.12内核里系统调用常见的问题

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)
    

    

linux 3.12内核里系统调用常见的问题,布布扣,bubuko.com

linux 3.12内核里系统调用常见的问题

上一篇:linux下安装中文输入法


下一篇:Linux内核中双向链表的经典实现