Linux 4.7 (pulled from on Jul 20 2016), x86_64

Note: 64-bit x86 uses syscall instead of interrupt 0x80. The result value will be in %rax

To find the implementation of a system call, grep the kernel tree for SYSCALL_DEFINE.\?(syscall,
For example, to find the read system call:

illusion:/usr/src/linux-source-3.19$ grep -rA3 'SYSCALL_DEFINE.\?(read,' *
fs/read_write.c:SYSCALL_DEFINE3(read, unsigned int, fd, char __user *, buf, size_t, count)
fs/read_write.c-        struct file *file;
fs/read_write.c-        ssize_t ret = -EBADF;
The results show that the implementation is in fs/read_write.c and that it takes 3 arguments (thus SYSCALL_DEFINE3).

Linux Cross Reference is another good tool for finding information about system calls.

Refer to the syscall numbers in arch/x86/entry/syscalls/syscall_64.tbl to determine if the table below is out of date

By the way, the system call numbers are different for 32-bit x86. A system call table for i386 (32-bit) can be found at

Information on the order of registers can be found on page 124 of the x86_64 ABI paper at

%raxSystem call%rdi%rsi%rdx%r10%r8%r9
0sys_readunsigned int fdchar *bufsize_t count
1sys_writeunsigned int fdconst char *bufsize_t count
2sys_openconst char *filenameint flagsint mode
3sys_closeunsigned int fd
4sys_statconst char *filenamestruct stat *statbuf
5sys_fstatunsigned int fdstruct stat *statbuf
6sys_lstatfconst char *filenamestruct stat *statbuf
7sys_pollstruct poll_fd *ufdsunsigned int nfdslong timeout_msecs
8sys_lseekunsigned int fdoff_t offsetunsigned int origin
9sys_mmapunsigned long addrunsigned long lenunsigned long protunsigned long flagsunsigned long fdunsigned long off
10sys_mprotectunsigned long startsize_t lenunsigned long prot
11sys_munmapunsigned long addrsize_t len
12sys_brkunsigned long brk
13sys_rt_sigactionint sigconst struct sigaction *actstruct sigaction *oactsize_t sigsetsize
14sys_rt_sigprocmaskint howsigset_t *nsetsigset_t *osetsize_t sigsetsize
15sys_rt_sigreturnunsigned long __unused
16sys_ioctlunsigned int fdunsigned int cmdunsigned long arg
17sys_pread64unsigned long fdchar *bufsize_t countloff_t pos
18sys_pwrite64unsigned int fdconst char *bufsize_t countloff_t pos
19sys_readvunsigned long fdconst struct iovec *vecunsigned long vlen
20sys_writevunsigned long fdconst struct iovec *vecunsigned long vlen
21sys_accessconst char *filenameint mode
22sys_pipeint *filedes
23sys_selectint nfd_set *inpfd_set *outpfd_set*expstruct timeval *tvp
25sys_mremapunsigned long addrunsigned long old_lenunsigned long new_lenunsigned long flagsunsigned long new_addr
26sys_msyncunsigned long startsize_t lenint flags
27sys_mincoreunsigned long startsize_t lenunsigned char *vec
28sys_madviseunsigned long startsize_t len_inint behavior
29sys_shmgetkey_t keysize_t sizeint shmflg
30sys_shmatint shmidchar *shmaddrint shmflg
31sys_shmctlint shmidint cmdstruct shmid_ds *buf
32sys_dupunsigned int fildes
33sys_dup2unsigned int oldfdunsigned int newfd
35sys_nanosleepstruct timespec *rqtpstruct timespec *rmtp
36sys_getitimerint whichstruct itimerval *value
37sys_alarmunsigned int seconds
38sys_setitimerint whichstruct itimerval *valuestruct itimerval *ovalue
40sys_sendfileint out_fdint in_fdoff_t *offsetsize_t count
41sys_socketint familyint typeint protocol
42sys_connectint fdstruct sockaddr *uservaddrint addrlen
43sys_acceptint fdstruct sockaddr *upeer_sockaddrint *upeer_addrlen
44sys_sendtoint fdvoid *buffsize_t lenunsigned flagsstruct sockaddr *addrint addr_len
45sys_recvfromint fdvoid *ubufsize_t sizeunsigned flagsstruct sockaddr *addrint *addr_len
46sys_sendmsgint fdstruct msghdr *msgunsigned flags
47sys_recvmsgint fdstruct msghdr *msgunsigned int flags
48sys_shutdownint fdint how
49sys_bindint fdstruct sokaddr *umyaddrint addrlen
50sys_listenint fdint backlog
51sys_getsocknameint fdstruct sockaddr *usockaddrint *usockaddr_len
52sys_getpeernameint fdstruct sockaddr *usockaddrint *usockaddr_len
53sys_socketpairint familyint typeint protocolint *usockvec
54sys_setsockoptint fdint levelint optnamechar *optvalint optlen
55sys_getsockoptint fdint levelint optnamechar *optvalint *optlen
56sys_cloneunsigned long clone_flagsunsigned long newspvoid *parent_tidvoid *child_tidunsigned int tid
59sys_execveconst char *filenameconst char *const argv[]const char *const envp[]
60sys_exitint error_code
61sys_wait4pid_t upidint *stat_addrint optionsstruct rusage *ru
62sys_killpid_t pidint sig
63sys_unamestruct old_utsname *name
64sys_semgetkey_t keyint nsemsint semflg
65sys_semopint semidstruct sembuf *tsopsunsigned nsops
66sys_semctlint semidint semnumint cmdunion semun arg
67sys_shmdtchar *shmaddr
68sys_msggetkey_t keyint msgflg
69sys_msgsndint msqidstruct msgbuf *msgpsize_t msgszint msgflg
70sys_msgrcvint msqidstruct msgbuf *msgpsize_t msgszlong msgtypint msgflg
71sys_msgctlint msqidint cmdstruct msqid_ds *buf
72sys_fcntlunsigned int fdunsigned int cmdunsigned long arg
73sys_flockunsigned int fdunsigned int cmd
74sys_fsyncunsigned int fd
75sys_fdatasyncunsigned int fd
76sys_truncateconst char *pathlong length
77sys_ftruncateunsigned int fdunsigned long length
78sys_getdentsunsigned int fdstruct linux_dirent *direntunsigned int count
79sys_getcwdchar *bufunsigned long size
80sys_chdirconst char *filename
81sys_fchdirunsigned int fd
82sys_renameconst char *oldnameconst char *newname
83sys_mkdirconst char *pathnameint mode
84sys_rmdirconst char *pathname
85sys_creatconst char *pathnameint mode
86sys_linkconst char *oldnameconst char *newname
87sys_unlinkconst char *pathname
88sys_symlinkconst char *oldnameconst char *newname
89sys_readlinkconst char *pathchar *bufint bufsiz
90sys_chmodconst char *filenamemode_t mode
91sys_fchmodunsigned int fdmode_t mode
92sys_chownconst char *filenameuid_t usergid_t group
93sys_fchownunsigned int fduid_t usergid_t group
94sys_lchownconst char *filenameuid_t usergid_t group
95sys_umaskint mask
96sys_gettimeofdaystruct timeval *tvstruct timezone *tz
97sys_getrlimitunsigned int resourcestruct rlimit *rlim
98sys_getrusageint whostruct rusage *ru
99sys_sysinfostruct sysinfo *info
100sys_timesstruct tms *tbuf
101sys_ptracelong requestlong pidunsigned long addrunsigned long data
103sys_syslogint typechar *bufint len
105sys_setuiduid_t uid
106sys_setgidgid_t gid
109sys_setpgidpid_t pidpid_t pgid
113sys_setreuiduid_t ruiduid_t euid
114sys_setregidgid_t rgidgid_t egid
115sys_getgroupsint gidsetsizegid_t *grouplist
116sys_setgroupsint gidsetsizegid_t *grouplist
117sys_setresuiduid_t *ruiduid_t *euiduid_t *suid
118sys_getresuiduid_t *ruiduid_t *euiduid_t *suid
119sys_setresgidgid_t rgidgid_t egidgid_t sgid
120sys_getresgidgid_t *rgidgid_t *egidgid_t *sgid
121sys_getpgidpid_t pid
122sys_setfsuiduid_t uid
123sys_setfsgidgid_t gid
124sys_getsidpid_t pid
125sys_capgetcap_user_header_t headercap_user_data_t dataptr
126sys_capsetcap_user_header_t headerconst cap_user_data_t data
127sys_rt_sigpendingsigset_t *setsize_t sigsetsize
128sys_rt_sigtimedwaitconst sigset_t *uthesesiginfo_t *uinfoconst struct timespec *utssize_t sigsetsize
129sys_rt_sigqueueinfopid_t pidint sigsiginfo_t *uinfo
130sys_rt_sigsuspendsigset_t *unewsetsize_t sigsetsize
131sys_sigaltstackconst stack_t *ussstack_t *uoss
132sys_utimechar *filenamestruct utimbuf *times
133sys_mknodconst char *filenameumode_t modeunsigned dev
134sys_uselibNOT IMPLEMENTED
135sys_personalityunsigned int personality
136sys_ustatunsigned devstruct ustat *ubuf
137sys_statfsconst char *pathnamestruct statfs *buf
138sys_fstatfsunsigned int fdstruct statfs *buf
139sys_sysfsint optionunsigned long arg1unsigned long arg2
140sys_getpriorityint whichint who
141sys_setpriorityint whichint whoint niceval
142sys_sched_setparampid_t pidstruct sched_param *param
143sys_sched_getparampid_t pidstruct sched_param *param
144sys_sched_setschedulerpid_t pidint policystruct sched_param *param
145sys_sched_getschedulerpid_t pid
146sys_sched_get_priority_maxint policy
147sys_sched_get_priority_minint policy
148sys_sched_rr_get_intervalpid_t pidstruct timespec *interval
149sys_mlockunsigned long startsize_t len
150sys_munlockunsigned long startsize_t len
151sys_mlockallint flags
154sys_modify_ldtint funcvoid *ptrunsigned long bytecount
155sys_pivot_rootconst char *new_rootconst char *put_old
156sys__sysctlstruct __sysctl_args *args
157sys_prctlint optionunsigned long arg2unsigned long arg3unsigned long arg4unsigned long arg5
158sys_arch_prctlstruct task_struct *taskint codeunsigned long *addr
159sys_adjtimexstruct timex *txc_p
160sys_setrlimitunsigned int resourcestruct rlimit *rlim
161sys_chrootconst char *filename
163sys_acctconst char *name
164sys_settimeofdaystruct timeval *tvstruct timezone *tz
165sys_mountchar *dev_namechar *dir_namechar *typeunsigned long flagsvoid *data
166sys_umount2const char *targetint flags
167sys_swaponconst char *specialfileint swap_flags
168sys_swapoffconst char *specialfile
169sys_rebootint magic1int magic2unsigned int cmdvoid *arg
170sys_sethostnamechar *nameint len
171sys_setdomainnamechar *nameint len
172sys_ioplunsigned int levelstruct pt_regs *regs
173sys_iopermunsigned long fromunsigned long numint turn_on
174sys_create_moduleREMOVED IN Linux 2.6
175sys_init_modulevoid *umodunsigned long lenconst char *uargs
176sys_delete_moduleconst chat *name_userunsigned int flags
177sys_get_kernel_symsREMOVED IN Linux 2.6
178sys_query_moduleREMOVED IN Linux 2.6
179sys_quotactlunsigned int cmdconst char *specialqid_t idvoid *addr
180sys_nfsservctlNOT IMPLEMENTED
181sys_getpmsgNOT IMPLEMENTED
182sys_putpmsgNOT IMPLEMENTED
183sys_afs_syscallNOT IMPLEMENTED
184sys_tuxcallNOT IMPLEMENTED
185sys_securityNOT IMPLEMENTED
187sys_readaheadint fdloff_t offsetsize_t count
188sys_setxattrconst char *pathnameconst char *nameconst void *valuesize_t sizeint flags
189sys_lsetxattrconst char *pathnameconst char *nameconst void *valuesize_t sizeint flags
190sys_fsetxattrint fdconst char *nameconst void *valuesize_t sizeint flags
191sys_getxattrconst char *pathnameconst char *namevoid *valuesize_t size
192sys_lgetxattrconst char *pathnameconst char *namevoid *valuesize_t size
193sys_fgetxattrint fdconst har *namevoid *valuesize_t size
194sys_listxattrconst char *pathnamechar *listsize_t size
195sys_llistxattrconst char *pathnamechar *listsize_t size
196sys_flistxattrint fdchar *listsize_t size
197sys_removexattrconst char *pathnameconst char *name
198sys_lremovexattrconst char *pathnameconst char *name
199sys_fremovexattrint fdconst char *name
200sys_tkillpid_t piding sig
201sys_timetime_t *tloc
202sys_futexu32 *uaddrint opu32 valstruct timespec *utimeu32 *uaddr2u32 val3
203sys_sched_setaffinitypid_t pidunsigned int lenunsigned long *user_mask_ptr
204sys_sched_getaffinitypid_t pidunsigned int lenunsigned long *user_mask_ptr
205sys_set_thread_areaNOT IMPLEMENTED. Use arch_prctl
206sys_io_setupunsigned nr_eventsaio_context_t *ctxp
207sys_io_destroyaio_context_t ctx
208sys_io_geteventsaio_context_t ctx_idlong min_nrlong nrstruct io_event *events
209sys_io_submitaio_context_t ctx_idlong nrstruct iocb **iocbpp
210sys_io_cancelaio_context_t ctx_idstruct iocb *iocbstruct io_event *result
211sys_get_thread_areaNOT IMPLEMENTED. Use arch_prctl
212sys_lookup_dcookieu64 cookie64long buflong len
213sys_epoll_createint size
214sys_epoll_ctl_oldNOT IMPLEMENTED
215sys_epoll_wait_oldNOT IMPLEMENTED
216sys_remap_file_pagesunsigned long startunsigned long sizeunsigned long protunsigned long pgoffunsigned long flags
217sys_getdents64unsigned int fdstruct linux_dirent64 *direntunsigned int count
218sys_set_tid_addressint *tidptr
220sys_semtimedopint semidstruct sembuf *tsopsunsigned nsopsconst struct timespec *timeout
221sys_fadvise64int fdloff_t offsetsize_t lenint advice
222sys_timer_createconst clockid_t which_clockstruct sigevent *timer_event_spectimer_t *created_timer_id
223sys_timer_settimetimer_t timer_idint flagsconst struct itimerspec *new_settingstruct itimerspec *old_setting
224sys_timer_gettimetimer_t timer_idstruct itimerspec *setting
225sys_timer_getoverruntimer_t timer_id
226sys_timer_deletetimer_t timer_id
227sys_clock_settimeconst clockid_t which_clockconst struct timespec *tp
228sys_clock_gettimeconst clockid_t which_clockstruct timespec *tp
229sys_clock_getresconst clockid_t which_clockstruct timespec *tp
230sys_clock_nanosleepconst clockid_t which_clockint flagsconst struct timespec *rqtpstruct timespec *rmtp
231sys_exit_groupint error_code
232sys_epoll_waitint epfdstruct epoll_event *eventsint maxeventsint timeout
233sys_epoll_ctlint epfdint opint fdstruct epoll_event *event
234sys_tgkillpid_t tgidpid_t pidint sig
235sys_utimeschar *filenamestruct timeval *utimes
236sys_vserverNOT IMPLEMENTED
237sys_mbindunsigned long startunsigned long lenunsigned long modeunsigned long *nmaskunsigned long maxnodeunsigned flags
238sys_set_mempolicyint modeunsigned long *nmaskunsigned long maxnode
239sys_get_mempolicyint *policyunsigned long *nmaskunsigned long maxnodeunsigned long addrunsigned long flags
240sys_mq_openconst char *u_nameint oflagmode_t modestruct mq_attr *u_attr
241sys_mq_unlinkconst char *u_name
242sys_mq_timedsendmqd_t mqdesconst char *u_msg_ptrsize_t msg_lenunsigned int msg_prioconst stuct timespec *u_abs_timeout
243sys_mq_timedreceivemqd_t mqdeschar *u_msg_ptrsize_t msg_lenunsigned int *u_msg_prioconst struct timespec *u_abs_timeout
244sys_mq_notifymqd_t mqdesconst struct sigevent *u_notification
245sys_mq_getsetattrmqd_t mqdesconst struct mq_attr *u_mqstatstruct mq_attr *u_omqstat
246sys_kexec_loadunsigned long entryunsigned long nr_segmentsstruct kexec_segment *segmentsunsigned long flags
247sys_waitidint whichpid_t upidstruct siginfo *infopint optionsstruct rusage *ru
248sys_add_keyconst char *_typeconst char *_descriptionconst void *_payloadsize_t plen
249sys_request_keyconst char *_typeconst char *_descriptionconst char *_callout_infokey_serial_t destringid
250sys_keyctlint optionunsigned long arg2unsigned long arg3unsigned long arg4unsigned long arg5
251sys_ioprio_setint whichint whoint ioprio
252sys_ioprio_getint whichint who
254sys_inotify_add_watchint fdconst char *pathnameu32 mask
255sys_inotify_rm_watchint fd__s32 wd
256sys_migrate_pagespid_t pidunsigned long maxnodeconst unsigned long *old_nodesconst unsigned long *new_nodes
257sys_openatint dfdconst char *filenameint flagsint mode
258sys_mkdiratint dfdconst char *pathnameint mode
259sys_mknodatint dfdconst char *filenameint modeunsigned dev
260sys_fchownatint dfdconst char *filenameuid_t usergid_t groupint flag
261sys_futimesatint dfdconst char *filenamestruct timeval *utimes
262sys_newfstatatint dfdconst char *filenamestruct stat *statbufint flag
263sys_unlinkatint dfdconst char *pathnameint flag
264sys_renameatint oldfdconst char *oldnameint newfdconst char *newname
265sys_linkatint oldfdconst char *oldnameint newfdconst char *newnameint flags
266sys_symlinkatconst char *oldnameint newfdconst char *newname
267sys_readlinkatint dfdconst char *pathnamechar *bufint bufsiz
268sys_fchmodatint dfdconst char *filenamemode_t mode
269sys_faccessatint dfdconst char *filenameint mode
270sys_pselect6int nfd_set *inpfd_set *outpfd_set *expstruct timespec *tspvoid *sig
271sys_ppollstruct pollfd *ufdsunsigned int nfdsstruct timespec *tspconst sigset_t *sigmasksize_t sigsetsize
272sys_unshareunsigned long unshare_flags
273sys_set_robust_liststruct robust_list_head *headsize_t len
274sys_get_robust_listint pidstruct robust_list_head **head_ptrsize_t *len_ptr
275sys_spliceint fd_inloff_t *off_inint fd_outloff_t *off_outsize_t lenunsigned int flags
276sys_teeint fdinint fdoutsize_t lenunsigned int flags
277sys_sync_file_rangelong fdloff_t offsetloff_t byteslong flags
278sys_vmspliceint fdconst struct iovec *iovunsigned long nr_segsunsigned int flags
279sys_move_pagespid_t pidunsigned long nr_pagesconst void **pagesconst int *nodesint *statusint flags
280sys_utimensatint dfdconst char *filenamestruct timespec *utimesint flags
281sys_epoll_pwaitint epfdstruct epoll_event *eventsint maxeventsint timeoutconst sigset_t *sigmasksize_t sigsetsize
282sys_signalfdint ufdsigset_t *user_masksize_t sizemask
283sys_timerfd_createint clockidint flags
284sys_eventfdunsigned int count
285sys_fallocatelong fdlong modeloff_t offsetloff_t len
286sys_timerfd_settimeint ufdint flagsconst struct itimerspec *utmrstruct itimerspec *otmr
287sys_timerfd_gettimeint ufdstruct itimerspec *otmr
288sys_accept4int fdstruct sockaddr *upeer_sockaddrint *upeer_addrlenint flags
289sys_signalfd4int ufdsigset_t *user_masksize_t sizemaskint flags
290sys_eventfd2unsigned int countint flags
291sys_epoll_create1int flags
292sys_dup3unsigned int oldfdunsigned int newfdint flags
293sys_pipe2int *filedesint flags
294sys_inotify_init1int flags
295sys_preadvunsigned long fdconst struct iovec *vecunsigned long vlenunsigned long pos_lunsigned long pos_h
296sys_pwritevunsigned long fdconst struct iovec *vecunsigned long vlenunsigned long pos_lunsigned long pos_h
297sys_rt_tgsigqueueinfopid_t tgidpid_t pidint sigsiginfo_t *uinfo
298sys_perf_event_openstruct perf_event_attr *attr_uptrpid_t pidint cpuint group_fdunsigned long flags
299sys_recvmmsgint fdstruct msghdr *mmsgunsigned int vlenunsigned int flagsstruct timespec *timeout
300sys_fanotify_initunsigned int flagsunsigned int event_f_flags
301sys_fanotify_marklong fanotify_fdlong flags__u64 masklong dfdlong pathname
302sys_prlimit64pid_t pidunsigned int resourceconst struct rlimit64 *new_rlimstruct rlimit64 *old_rlim
303sys_name_to_handle_atint dfdconst char *namestruct file_handle *handleint *mnt_idint flag
304sys_open_by_handle_atint dfdconst char *namestruct file_handle *handleint *mnt_idint flags
305sys_clock_adjtimeclockid_t which_clockstruct timex *tx
306sys_syncfsint fd
307sys_sendmmsgint fdstruct mmsghdr *mmsgunsigned int vlenunsigned int flags
308sys_setnsint fdint nstype
309sys_getcpuunsigned *cpupunsigned *nodepstruct getcpu_cache *unused
310sys_process_vm_readvpid_t pidconst struct iovec *lvecunsigned long liovcntconst struct iovec *rvecunsigned long riovcntunsigned long flags
311sys_process_vm_writevpid_t pidconst struct iovec *lvecunsigned long liovcntconst struct iovcc *rvecunsigned long riovcntunsigned long flags
312sys_kcmppid_t pid1pid_t pid2int typeunsigned long idx1unsigned long idx2
313sys_finit_moduleint fdconst char __user *uargsint flags
314sys_sched_setattrpid_t pidstruct sched_attr __user *attrunsigned int flags
315sys_sched_getattrpid_t pidstruct sched_attr __user *attrunsigned int sizeunsigned int flags
316sys_renameat2int olddfdconst char __user *oldnameint newdfdconst char __user *newnameunsigned int flags
317sys_seccompunsigned int opunsigned int flagsconst char __user *uargs
318sys_getrandomchar __user *bufsize_t countunsigned int flags
319sys_memfd_createconst char __user *uname_ptrunsigned int flags
320sys_kexec_file_loadint kernel_fdint initrd_fdunsigned long cmdline_lenconst char __user *cmdline_ptrunsigned long flags
321sys_bpfint cmdunion bpf_attr *attrunsigned int size
322stub_execveatint dfdconst char __user *filenameconst char __user *const __user *argvconst char __user *const __user *envpint flags
323userfaultfdint flags
324membarrierint cmdint flags
325mlock2unsigned long startsize_t lenint flags
326copy_file_rangeint fd_inloff_t __user *off_inint fd_outloff_t __user * off_outsize_t lenunsigned int flags
327preadv2unsigned long fdconst struct iovec __user *vecunsigned long vlenunsigned long pos_lunsigned long pos_hint flags
328pwritev2unsigned long fdconst struct iovec __user *vecunsigned long vlenunsigned long pos_lunsigned long pos_hint flags