| .\" Copyright (C) 2007 Michael Kerrisk <mtk.manpages@gmail.com> |
| .\" with some input from Stepan Kasal <kasal@ucw.cz> |
| .\" |
| .\" Some content retained from an earlier version of this page: |
| .\" Copyright (C) 1998 Andries Brouwer (aeb@cwi.nl) |
| .\" Modifications for 2.2 and 2.4 Copyright (C) 2002 Ian Redfern |
| .\" <redferni@logica.com> |
| .\" |
| .\" %%%LICENSE_START(VERBATIM) |
| .\" Permission is granted to make and distribute verbatim copies of this |
| .\" manual provided the copyright notice and this permission notice are |
| .\" preserved on all copies. |
| .\" |
| .\" Permission is granted to copy and distribute modified versions of this |
| .\" manual under the conditions for verbatim copying, provided that the |
| .\" entire resulting derived work is distributed under the terms of a |
| .\" permission notice identical to this one. |
| .\" |
| .\" Since the Linux kernel and libraries are constantly changing, this |
| .\" manual page may be incorrect or out-of-date. The author(s) assume no |
| .\" responsibility for errors or omissions, or for damages resulting from |
| .\" the use of the information contained herein. The author(s) may not |
| .\" have taken the same level of care in the production of this manual, |
| .\" which is licensed free of charge, as they might when working |
| .\" professionally. |
| .\" |
| .\" Formatted or processed versions of this manual, if unaccompanied by |
| .\" the source, must acknowledge the copyright and authors of this work. |
| .\" %%%LICENSE_END |
| .\" |
| .TH SYSCALLS 2 2021-03-22 "Linux" "Linux Programmer's Manual" |
| .SH NAME |
| syscalls \- Linux system calls |
| .SH SYNOPSIS |
| .nf |
| Linux system calls. |
| .fi |
| .SH DESCRIPTION |
| The system call is the fundamental interface between an application |
| and the Linux kernel. |
| .SS System calls and library wrapper functions |
| System calls are generally not invoked directly, |
| but rather via wrapper functions in glibc (or perhaps some other library). |
| For details of direct invocation of a system call, see |
| .BR intro (2). |
| Often, but not always, the name of the wrapper function is the same |
| as the name of the system call that it invokes. |
| For example, glibc contains a function |
| .BR chdir () |
| which invokes the underlying "chdir" system call. |
| .PP |
| Often the glibc wrapper function is quite thin, doing little work |
| other than copying arguments to the right registers |
| before invoking the system call, |
| and then setting |
| .I errno |
| appropriately after the system call has returned. |
| (These are the same steps that are performed by |
| .BR syscall (2), |
| which can be used to invoke system calls |
| for which no wrapper function is provided.) |
| Note: system calls indicate a failure by returning a negative error |
| number to the caller on architectures without a separate error register/flag, |
| as noted in |
| .BR syscall (2); |
| when this happens, |
| the wrapper function negates the returned error number |
| (to make it positive), copies it to |
| .IR errno , |
| and returns \-1 to the caller of the wrapper. |
| .PP |
| Sometimes, however, the wrapper function does some extra work |
| before invoking the system call. |
| For example, nowadays there are (for reasons described below) two |
| related system calls, |
| .BR truncate (2) |
| and |
| .BR truncate64 (2), |
| and the glibc |
| .BR truncate () |
| wrapper function checks which of those system calls |
| are provided by the kernel and determines which should be employed. |
| .SS System call list |
| Below is a list of the Linux system calls. |
| In the list, the |
| .I Kernel |
| column indicates the kernel version |
| for those system calls that were new in Linux 2.2, |
| or have appeared since that kernel version. |
| Note the following points: |
| .IP * 3 |
| Where no kernel version is indicated, |
| the system call appeared in kernel 1.0 or earlier. |
| .IP * |
| Where a system call is marked "1.2" |
| this means the system call probably appeared in a 1.1.x kernel version, |
| and first appeared in a stable kernel with 1.2. |
| (Development of the 1.2 kernel was initiated from a branch of kernel |
| 1.0.6 via the 1.1.x unstable kernel series.) |
| .IP * |
| Where a system call is marked "2.0" |
| this means the system call probably appeared in a 1.3.x kernel version, |
| and first appeared in a stable kernel with 2.0. |
| (Development of the 2.0 kernel was initiated from a branch of kernel |
| 1.2.x, somewhere around 1.2.10, |
| via the 1.3.x unstable kernel series.) |
| .\" Was kernel 2.0 started from a branch of 1.2.10? |
| .\" At least from the timestamps of the tarballs of |
| .\" of 1.2.10 and 1.3.0, that's how it looks, but in |
| .\" fact the diff doesn't seem very clear, the |
| .\" 1.3.0 .tar.bz is much bigger (2.0 MB) than the |
| .\" 1.2.10 .tar.bz2 (1.8 MB), and AEB points out the |
| .\" timestamps of some files in 1.3.0 seem to be older |
| .\" than those in 1.2.10. All of this suggests |
| .\" that there might not have been a clean branch point. |
| .IP * |
| Where a system call is marked "2.2" |
| this means the system call probably appeared in a 2.1.x kernel version, |
| and first appeared in a stable kernel with 2.2.0. |
| (Development of the 2.2 kernel was initiated from a branch of kernel |
| 2.0.21 via the 2.1.x unstable kernel series.) |
| .IP * |
| Where a system call is marked "2.4" |
| this means the system call probably appeared in a 2.3.x kernel version, |
| and first appeared in a stable kernel with 2.4.0. |
| (Development of the 2.4 kernel was initiated from a branch of |
| kernel 2.2.8 via the 2.3.x unstable kernel series.) |
| .IP * |
| Where a system call is marked "2.6" |
| this means the system call probably appeared in a 2.5.x kernel version, |
| and first appeared in a stable kernel with 2.6.0. |
| (Development of kernel 2.6 was initiated from a branch |
| of kernel 2.4.15 via the 2.5.x unstable kernel series.) |
| .IP * |
| Starting with kernel 2.6.0, the development model changed, |
| and new system calls may appear in each 2.6.x release. |
| In this case, the exact version number where the system call appeared |
| is shown. |
| This convention continues with the 3.x kernel series, |
| which followed on from kernel 2.6.39; and the 4.x kernel series, |
| which followed on from kernel 3.19; and the 5.x kernel series, |
| which followed on from kernel 4.20. |
| .IP * |
| In some cases, a system call was added to a stable kernel |
| series after it branched from the previous stable kernel |
| series, and then backported into the earlier stable kernel series. |
| For example some system calls that appeared in 2.6.x were also backported |
| into a 2.4.x release after 2.4.15. |
| When this is so, the version where the system call appeared |
| in both of the major kernel series is listed. |
| .PP |
| The list of system calls that are available as at kernel 5.11 |
| (or in a few cases only on older kernels) is as follows: |
| .\" |
| .\" Looking at scripts/checksyscalls.sh in the kernel source is |
| .\" instructive about x86 specifics. |
| .\" |
| .nh |
| .ad l |
| .TS |
| l2 le l |
| --- |
| l l l. |
| \fBSystem call\fP \fBKernel\fP \fBNotes\fP |
| |
| \fB_llseek\fP(2) 1.2 |
| \fB_newselect\fP(2) 2.0 |
| \fB_sysctl\fP(2) 2.0 Removed in 5.5 |
| \fBaccept\fP(2) 2.0 T{ |
| See notes on \fBsocketcall\fP(2) |
| T} |
| \fBaccept4\fP(2) 2.6.28 |
| \fBaccess\fP(2) 1.0 |
| \fBacct\fP(2) 1.0 |
| \fBadd_key\fP(2) 2.6.10 |
| \fBadjtimex\fP(2) 1.0 |
| \fBalarm\fP(2) 1.0 |
| \fBalloc_hugepages\fP(2) 2.5.36 Removed in 2.5.44 |
| .\" 4adeefe161a74369e44cc8e663f240ece0470dc3 |
| \fBarc_gettls\fP(2) 3.9 ARC only |
| \fBarc_settls\fP(2) 3.9 ARC only |
| .\" 91e040a79df73d371f70792f30380d4e44805250 |
| \fBarc_usr_cmpxchg\fP(2) 4.9 ARC only |
| .\" x86: 79170fda313ed5be2394f87aa2a00d597f8ed4a1 |
| \fBarch_prctl\fP(2) 2.6 T{ |
| x86_64, x86 since 4.12 |
| T} |
| .\" 9674cdc74d63f346870943ef966a034f8c71ee57 |
| \fBatomic_barrier\fP(2) 2.6.34 m68k only |
| \fBatomic_cmpxchg_32\fP(2) 2.6.34 m68k only |
| \fBbdflush\fP(2) 1.2 T{ |
| Deprecated (does nothing) |
| since 2.6 |
| T} |
| \fBbind\fP(2) 2.0 T{ |
| See notes on \fBsocketcall\fP(2) |
| T} |
| \fBbpf\fP(2) 3.18 |
| \fBbrk\fP(2) 1.0 |
| \fBbreakpoint\fP(2) 2.2 T{ |
| ARM OABI only, defined with |
| \fB__ARM_NR\fP prefix |
| T} |
| \fBcacheflush\fP(2) 1.2 Not on x86 |
| \fBcapget\fP(2) 2.2 |
| \fBcapset\fP(2) 2.2 |
| \fBchdir\fP(2) 1.0 |
| \fBchmod\fP(2) 1.0 |
| \fBchown\fP(2) 2.2 T{ |
| See \fBchown\fP(2) for |
| version details |
| T} |
| \fBchown32\fP(2) 2.4 |
| \fBchroot\fP(2) 1.0 |
| \fBclock_adjtime\fP(2) 2.6.39 |
| \fBclock_getres\fP(2) 2.6 |
| \fBclock_gettime\fP(2) 2.6 |
| \fBclock_nanosleep\fP(2) 2.6 |
| \fBclock_settime\fP(2) 2.6 |
| \fBclone2\fP(2) 2.4 IA-64 only |
| \fBclone\fP(2) 1.0 |
| \fBclone3\fP(2) 5.3 |
| \fBclose\fP(2) 1.0 |
| \fBclose_range\fP(2) 5.9 |
| .\" .\" dcef1f634657dabe7905af3ccda12cf7f0b6fcc1 |
| .\" .\" cc20d42986d5807cbe4f5c7c8e3dab2e59ea0db3 |
| .\" .\" db695c0509d6ec9046ee5e4c520a19fa17d9fce2 |
| .\" \fBcmpxchg\fP(2) 2.6.12 T{ |
| .\" ARM, syscall constant never was |
| .\" exposed to user space, in-kernel |
| .\" definition had \fB__ARM_NR\fP prefix, |
| .\" removed in 4.4 |
| .\" T} |
| .\" 867e359b97c970a60626d5d76bbe2a8fadbf38fb |
| .\" bb9d812643d8a121df7d614a2b9c60193a92deb0 |
| \fBconnect\fP(2) 2.0 T{ |
| See notes on \fBsocketcall\fP(2) |
| T} |
| \fBcopy_file_range\fP(2) 4.5 |
| \fBcreat\fP(2) 1.0 |
| \fBcreate_module\fP(2) 1.0 Removed in 2.6 |
| \fBdelete_module\fP(2) 1.0 |
| .\" 1394f03221790a988afc3e4b3cb79f2e477246a9 |
| .\" 4ba66a9760722ccbb691b8f7116cad2f791cca7b |
| \fBdup\fP(2) 1.0 |
| \fBdup2\fP(2) 1.0 |
| \fBdup3\fP(2) 2.6.27 |
| \fBepoll_create\fP(2) 2.6 |
| \fBepoll_create1\fP(2) 2.6.27 |
| \fBepoll_ctl\fP(2) 2.6 |
| \fBepoll_pwait\fP(2) 2.6.19 |
| \fBepoll_pwait2\fP(2) 5.11 |
| \fBepoll_wait\fP(2) 2.6 |
| \fBeventfd\fP(2) 2.6.22 |
| \fBeventfd2\fP(2) 2.6.27 |
| \fBexecv\fP(2) 2.0 T{ |
| SPARC/SPARC64 only, for |
| compatibility with SunOS |
| T} |
| \fBexecve\fP(2) 1.0 |
| \fBexecveat\fP(2) 3.19 |
| \fBexit\fP(2) 1.0 |
| \fBexit_group\fP(2) 2.6 |
| \fBfaccessat\fP(2) 2.6.16 |
| \fBfaccessat2\fP(2) 5.8 |
| \fBfadvise64\fP(2) 2.6 |
| .\" Implements \fBposix_fadvise\fP(2) |
| \fBfadvise64_64\fP(2) 2.6 |
| \fBfallocate\fP(2) 2.6.23 |
| \fBfanotify_init\fP(2) 2.6.37 |
| \fBfanotify_mark\fP(2) 2.6.37 |
| .\" The fanotify calls were added in Linux 2.6.36, |
| .\" but disabled while the API was finalized. |
| \fBfchdir\fP(2) 1.0 |
| \fBfchmod\fP(2) 1.0 |
| \fBfchmodat\fP(2) 2.6.16 |
| \fBfchown\fP(2) 1.0 |
| \fBfchown32\fP(2) 2.4 |
| \fBfchownat\fP(2) 2.6.16 |
| \fBfcntl\fP(2) 1.0 |
| \fBfcntl64\fP(2) 2.4 |
| \fBfdatasync\fP(2) 2.0 |
| \fBfgetxattr\fP(2) 2.6; 2.4.18 |
| \fBfinit_module\fP(2) 3.8 |
| \fBflistxattr\fP(2) 2.6; 2.4.18 |
| \fBflock\fP(2) 2.0 |
| \fBfork\fP(2) 1.0 |
| \fBfree_hugepages\fP(2) 2.5.36 Removed in 2.5.44 |
| \fBfremovexattr\fP(2) 2.6; 2.4.18 |
| \fBfsconfig\fP(2) 5.2 |
| \fBfsetxattr\fP(2) 2.6; 2.4.18 |
| \fBfsmount\fP(2) 5.2 |
| \fBfsopen\fP(2) 5.2 |
| \fBfspick\fP(2) 5.2 |
| \fBfstat\fP(2) 1.0 |
| \fBfstat64\fP(2) 2.4 |
| \fBfstatat64\fP(2) 2.6.16 |
| \fBfstatfs\fP(2) 1.0 |
| \fBfstatfs64\fP(2) 2.6 |
| \fBfsync\fP(2) 1.0 |
| \fBftruncate\fP(2) 1.0 |
| \fBftruncate64\fP(2) 2.4 |
| \fBfutex\fP(2) 2.6 |
| \fBfutimesat\fP(2) 2.6.16 |
| \fBget_kernel_syms\fP(2) 1.0 Removed in 2.6 |
| \fBget_mempolicy\fP(2) 2.6.6 |
| \fBget_robust_list\fP(2) 2.6.17 |
| \fBget_thread_area\fP(2) 2.6 |
| .\" 8fcd6c45f5a65621ec809b7866a3623e9a01d4ed |
| \fBget_tls\fP(2) 4.15 T{ |
| ARM OABI only, has |
| \fB__ARM_NR\fP prefix |
| T} |
| \fBgetcpu\fP(2) 2.6.19 |
| \fBgetcwd\fP(2) 2.2 |
| \fBgetdents\fP(2) 2.0 |
| \fBgetdents64\fP(2) 2.4 |
| .\" parisc: 863722e856e64dae0e252b6bb546737c6c5626ce |
| \fBgetdomainname\fP(2) 2.2 T{ |
| SPARC, SPARC64; available |
| as \fBosf_getdomainname\fP(2) |
| on Alpha since Linux 2.0 |
| T} |
| .\" ec98c6b9b47df6df1c1fa6cf3d427414f8c2cf16 |
| \fBgetdtablesize\fP(2) 2.0 T{ |
| SPARC (removed in 2.6.26), |
| available on Alpha as |
| \fBosf_getdtablesize\fP(2) |
| T} |
| \fBgetegid\fP(2) 1.0 |
| \fBgetegid32\fP(2) 2.4 |
| \fBgeteuid\fP(2) 1.0 |
| \fBgeteuid32\fP(2) 2.4 |
| \fBgetgid\fP(2) 1.0 |
| \fBgetgid32\fP(2) 2.4 |
| \fBgetgroups\fP(2) 1.0 |
| \fBgetgroups32\fP(2) 2.4 |
| .\" SPARC removal: ec98c6b9b47df6df1c1fa6cf3d427414f8c2cf16 |
| \fBgethostname\fP(2) 2.0 T{ |
| Alpha, was available on |
| SPARC up to Linux 2.6.26 |
| T} |
| \fBgetitimer\fP(2) 1.0 |
| \fBgetpeername\fP(2) 2.0 T{ |
| See notes on \fBsocketcall\fP(2) |
| T} |
| \fBgetpagesize\fP(2) 2.0 Not on x86 |
| \fBgetpgid\fP(2) 1.0 |
| \fBgetpgrp\fP(2) 1.0 |
| \fBgetpid\fP(2) 1.0 |
| \fBgetppid\fP(2) 1.0 |
| \fBgetpriority\fP(2) 1.0 |
| \fBgetrandom\fP(2) 3.17 |
| \fBgetresgid\fP(2) 2.2 |
| \fBgetresgid32\fP(2) 2.4 |
| \fBgetresuid\fP(2) 2.2 |
| \fBgetresuid32\fP(2) 2.4 |
| \fBgetrlimit\fP(2) 1.0 |
| \fBgetrusage\fP(2) 1.0 |
| \fBgetsid\fP(2) 2.0 |
| \fBgetsockname\fP(2) 2.0 T{ |
| See notes on \fBsocketcall\fP(2) |
| T} |
| \fBgetsockopt\fP(2) 2.0 T{ |
| See notes on \fBsocketcall\fP(2) |
| T} |
| \fBgettid\fP(2) 2.4.11 |
| \fBgettimeofday\fP(2) 1.0 |
| \fBgetuid\fP(2) 1.0 |
| \fBgetuid32\fP(2) 2.4 |
| \fBgetunwind\fP(2) 2.4.8 T{ |
| IA-64 only; deprecated |
| T} |
| \fBgetxattr\fP(2) 2.6; 2.4.18 |
| \fBgetxgid\fP(2) 2.0 T{ |
| Alpha only; see NOTES |
| T} |
| \fBgetxpid\fP(2) 2.0 T{ |
| Alpha only; see NOTES |
| T} |
| \fBgetxuid\fP(2) 2.0 T{ |
| Alpha only; see NOTES |
| T} |
| \fBinit_module\fP(2) 1.0 |
| \fBinotify_add_watch\fP(2) 2.6.13 |
| \fBinotify_init\fP(2) 2.6.13 |
| \fBinotify_init1\fP(2) 2.6.27 |
| \fBinotify_rm_watch\fP(2) 2.6.13 |
| \fBio_cancel\fP(2) 2.6 |
| \fBio_destroy\fP(2) 2.6 |
| \fBio_getevents\fP(2) 2.6 |
| \fBio_pgetevents\fP(2) 4.18 |
| \fBio_setup\fP(2) 2.6 |
| \fBio_submit\fP(2) 2.6 |
| \fBio_uring_enter\fP(2) 5.1 |
| \fBio_uring_register\fP(2) 5.1 |
| \fBio_uring_setup\fP(2) 5.1 |
| \fBioctl\fP(2) 1.0 |
| \fBioperm\fP(2) 1.0 |
| \fBiopl\fP(2) 1.0 |
| \fBioprio_get\fP(2) 2.6.13 |
| \fBioprio_set\fP(2) 2.6.13 |
| \fBipc\fP(2) 1.0 |
| .\" Implements System V IPC calls |
| \fBkcmp\fP(2) 3.5 |
| \fBkern_features\fP(2) 3.7 SPARC64 only |
| .\" FIXME . document kern_features(): |
| .\" commit 517ffce4e1a03aea979fe3a18a3dd1761a24fafb |
| \fBkexec_file_load\fP(2) 3.17 |
| \fBkexec_load\fP(2) 2.6.13 |
| .\" The entry in the syscall table was reserved starting in 2.6.7 |
| .\" Was named sys_kexec_load() from 2.6.7 to 2.6.16 |
| \fBkeyctl\fP(2) 2.6.10 |
| \fBkill\fP(2) 1.0 |
| \fBlchown\fP(2) 1.0 T{ |
| See \fBchown\fP(2) for |
| version details |
| T} |
| \fBlchown32\fP(2) 2.4 |
| \fBlgetxattr\fP(2) 2.6; 2.4.18 |
| \fBlink\fP(2) 1.0 |
| \fBlinkat\fP(2) 2.6.16 |
| \fBlisten\fP(2) 2.0 T{ |
| See notes on \fBsocketcall\fP(2) |
| T} |
| \fBlistxattr\fP(2) 2.6; 2.4.18 |
| \fBllistxattr\fP(2) 2.6; 2.4.18 |
| \fBlookup_dcookie\fP(2) 2.6 |
| \fBlremovexattr\fP(2) 2.6; 2.4.18 |
| \fBlseek\fP(2) 1.0 |
| \fBlsetxattr\fP(2) 2.6; 2.4.18 |
| \fBlstat\fP(2) 1.0 |
| \fBlstat64\fP(2) 2.4 |
| \fBmadvise\fP(2) 2.4 |
| \fBmbind\fP(2) 2.6.6 |
| \fBmemory_ordering\fP(2) 2.2 SPARC64 only |
| .\" 26025bbfbba33a9425be1b89eccb4664ea4c17b6 |
| .\" bb6fb6dfcc17cddac11ac295861f7608194447a7 |
| \fBmembarrier\fP(2) 3.17 |
| \fBmemfd_create\fP(2) 3.17 |
| \fBmigrate_pages\fP(2) 2.6.16 |
| \fBmincore\fP(2) 2.4 |
| \fBmkdir\fP(2) 1.0 |
| \fBmkdirat\fP(2) 2.6.16 |
| \fBmknod\fP(2) 1.0 |
| \fBmknodat\fP(2) 2.6.16 |
| \fBmlock\fP(2) 2.0 |
| \fBmlock2\fP(2) 4.4 |
| \fBmlockall\fP(2) 2.0 |
| \fBmmap\fP(2) 1.0 |
| \fBmmap2\fP(2) 2.4 |
| \fBmodify_ldt\fP(2) 1.0 |
| \fBmount\fP(2) 1.0 |
| \fBmove_mount\fP(2) 5.2 |
| \fBmove_pages\fP(2) 2.6.18 |
| \fBmprotect\fP(2) 1.0 |
| \fBmq_getsetattr\fP(2) 2.6.6 |
| .\" Implements \fBmq_getattr\fP(3) and \fBmq_setattr\fP(3) |
| \fBmq_notify\fP(2) 2.6.6 |
| \fBmq_open\fP(2) 2.6.6 |
| \fBmq_timedreceive\fP(2) 2.6.6 |
| \fBmq_timedsend\fP(2) 2.6.6 |
| \fBmq_unlink\fP(2) 2.6.6 |
| \fBmremap\fP(2) 2.0 |
| \fBmsgctl\fP(2) 2.0 T{ |
| See notes on \fBipc\fP(2) |
| T} |
| \fBmsgget\fP(2) 2.0 T{ |
| See notes on \fBipc\fP(2) |
| T} |
| \fBmsgrcv\fP(2) 2.0 T{ |
| See notes on \fBipc\fP(2) |
| T} |
| \fBmsgsnd\fP(2) 2.0 T{ |
| See notes on \fBipc\fP(2) |
| T} |
| \fBmsync\fP(2) 2.0 |
| .\" \fBmultiplexer\fP(2) ?? __NR_multiplexer reserved on |
| .\" PowerPC, but unimplemented? |
| \fBmunlock\fP(2) 2.0 |
| \fBmunlockall\fP(2) 2.0 |
| \fBmunmap\fP(2) 1.0 |
| \fBname_to_handle_at\fP(2) 2.6.39 |
| \fBnanosleep\fP(2) 2.0 |
| .\" 5590ff0d5528b60153c0b4e7b771472b5a95e297 |
| \fBnewfstatat\fP(2) 2.6.16 See \fBstat\fP(2) |
| \fBnfsservctl\fP(2) 2.2 Removed in 3.1 |
| \fBnice\fP(2) 1.0 |
| \fBold_adjtimex\fP(2) 2.0 T{ |
| Alpha only; see NOTES |
| T} |
| \fBold_getrlimit\fP(2) 2.4 T{ |
| Old variant of \fBgetrlimit\fP(2) |
| that used a different value |
| for \fBRLIM_INFINITY\fP |
| T} |
| \fBoldfstat\fP(2) 1.0 |
| \fBoldlstat\fP(2) 1.0 |
| \fBoldolduname\fP(2) 1.0 |
| \fBoldstat\fP(2) 1.0 |
| \fBoldumount\fP(2) 2.4.116 T{ |
| Name of the old \fBumount\fP(2) |
| syscall on Alpha |
| T} |
| \fBolduname\fP(2) 1.0 |
| \fBopen\fP(2) 1.0 |
| \fBopen_by_handle_at\fP(2) 2.6.39 |
| \fBopen_tree\fP(2) 5.2 |
| \fBopenat\fP(2) 2.6.16 |
| \fBopenat2\fP(2) 5.6 |
| .\" 9d02a4283e9ce4e9ca11ff00615bdacdb0515a1a |
| \fBor1k_atomic\fP(2) 3.1 T{ |
| OpenRISC 1000 only |
| T} |
| \fBpause\fP(2) 1.0 |
| \fBpciconfig_iobase\fP(2) 2.2.15; 2.4 Not on x86 |
| .\" Alpha, PowerPC, ARM; not x86 |
| \fBpciconfig_read\fP(2) 2.0.26; 2.2 Not on x86 |
| .\" , PowerPC, ARM; not x86 |
| \fBpciconfig_write\fP(2) 2.0.26; 2.2 Not on x86 |
| .\" , PowerPC, ARM; not x86 |
| \fBperf_event_open\fP(2) 2.6.31 T{ |
| Was perf_counter_open() in |
| 2.6.31; renamed in 2.6.32 |
| T} |
| \fBpersonality\fP(2) 1.2 |
| \fBperfctr\fP(2) 2.2 T{ |
| SPARC only; removed in 2.6.34 |
| T} |
| .\" commit c7d5a0050773e98d1094eaa9f2a1a793fafac300 removed perfctr() |
| \fBperfmonctl\fP(2) 2.4 IA-64 only |
| \fBpidfd_getfd\fP(2) 5.6 |
| \fBpidfd_send_signal\fP(2) 5.1 |
| \fBpidfd_open\fP(2) 5.3 |
| \fBpipe\fP(2) 1.0 |
| \fBpipe2\fP(2) 2.6.27 |
| \fBpivot_root\fP(2) 2.4 |
| \fBpkey_alloc\fP(2) 4.8 |
| \fBpkey_free\fP(2) 4.8 |
| \fBpkey_mprotect\fP(2) 4.8 |
| \fBpoll\fP(2) 2.0.36; 2.2 |
| \fBppoll\fP(2) 2.6.16 |
| \fBprctl\fP(2) 2.2 |
| \fBpread64\fP(2) T{ |
| Added as "pread" in 2.2; |
| renamed "pread64" in 2.6 |
| T} |
| \fBpreadv\fP(2) 2.6.30 |
| \fBpreadv2\fP(2) 4.6 |
| \fBprlimit64\fP(2) 2.6.36 |
| \fBprocess_madvise\fP(2) 5.10 |
| \fBprocess_vm_readv\fP(2) 3.2 |
| \fBprocess_vm_writev\fP(2) 3.2 |
| \fBpselect6\fP(2) 2.6.16 |
| .\" Implements \fBpselect\fP(2) |
| \fBptrace\fP(2) 1.0 |
| \fBpwrite64\fP(2) T{ |
| Added as "pwrite" in 2.2; |
| renamed "pwrite64" in 2.6 |
| T} |
| \fBpwritev\fP(2) 2.6.30 |
| \fBpwritev2\fP(2) 4.6 |
| \fBquery_module\fP(2) 2.2 Removed in 2.6 |
| \fBquotactl\fP(2) 1.0 |
| \fBread\fP(2) 1.0 |
| \fBreadahead\fP(2) 2.4.13 |
| \fBreaddir\fP(2) 1.0 |
| .\" Supersedes \fBgetdents\fP(2) |
| \fBreadlink\fP(2) 1.0 |
| \fBreadlinkat\fP(2) 2.6.16 |
| \fBreadv\fP(2) 2.0 |
| \fBreboot\fP(2) 1.0 |
| \fBrecv\fP(2) 2.0 T{ |
| See notes on \fBsocketcall\fP(2) |
| T} |
| \fBrecvfrom\fP(2) 2.0 T{ |
| See notes on \fBsocketcall\fP(2) |
| T} |
| \fBrecvmsg\fP(2) 2.0 T{ |
| See notes on \fBsocketcall\fP(2) |
| T} |
| \fBrecvmmsg\fP(2) 2.6.33 |
| \fBremap_file_pages\fP(2) 2.6 T{ |
| Deprecated since 3.16 |
| T} |
| \fBremovexattr\fP(2) 2.6; 2.4.18 |
| \fBrename\fP(2) 1.0 |
| \fBrenameat\fP(2) 2.6.16 |
| \fBrenameat2\fP(2) 3.15 |
| \fBrequest_key\fP(2) 2.6.10 |
| \fBrestart_syscall\fP(2) 2.6 |
| .\" 921ebd8f2c081b3cf6c3b29ef4103eef3ff26054 |
| \fBriscv_flush_icache\fP(2) 4.15 RISC-V only |
| \fBrmdir\fP(2) 1.0 |
| \fBrseq\fP(2) 4.18 |
| \fBrt_sigaction\fP(2) 2.2 |
| \fBrt_sigpending\fP(2) 2.2 |
| \fBrt_sigprocmask\fP(2) 2.2 |
| \fBrt_sigqueueinfo\fP(2) 2.2 |
| \fBrt_sigreturn\fP(2) 2.2 |
| \fBrt_sigsuspend\fP(2) 2.2 |
| \fBrt_sigtimedwait\fP(2) 2.2 |
| \fBrt_tgsigqueueinfo\fP(2) 2.6.31 |
| \fBrtas\fP(2) 2.6.2 T{ |
| PowerPC/PowerPC64 only |
| T} |
| \fBs390_runtime_instr\fP(2) 3.7 s390 only |
| \fBs390_pci_mmio_read\fP(2) 3.19 s390 only |
| \fBs390_pci_mmio_write\fP(2) 3.19 s390 only |
| \fBs390_sthyi\fP(2) 4.15 s390 only |
| \fBs390_guarded_storage\fP(2) 4.12 s390 only |
| \fBsched_get_affinity\fP(2) 2.6 T{ |
| Name of \fBsched_getaffinity\fP(2) |
| on SPARC and SPARC64 |
| T} |
| \fBsched_get_priority_max\fP(2) 2.0 |
| \fBsched_get_priority_min\fP(2) 2.0 |
| \fBsched_getaffinity\fP(2) 2.6 |
| \fBsched_getattr\fP(2) 3.14 |
| \fBsched_getparam\fP(2) 2.0 |
| \fBsched_getscheduler\fP(2) 2.0 |
| \fBsched_rr_get_interval\fP(2) 2.0 |
| \fBsched_set_affinity\fP(2) 2.6 T{ |
| Name of \fBsched_setaffinity\fP(2) |
| on SPARC and SPARC64 |
| T} |
| \fBsched_setaffinity\fP(2) 2.6 |
| \fBsched_setattr\fP(2) 3.14 |
| \fBsched_setparam\fP(2) 2.0 |
| \fBsched_setscheduler\fP(2) 2.0 |
| \fBsched_yield\fP(2) 2.0 |
| \fBseccomp\fP(2) 3.17 |
| \fBselect\fP(2) 1.0 |
| \fBsemctl\fP(2) 2.0 T{ |
| See notes on \fBipc\fP(2) |
| T} |
| \fBsemget\fP(2) 2.0 T{ |
| See notes on \fBipc\fP(2) |
| T} |
| \fBsemop\fP(2) 2.0 T{ |
| See notes on \fBipc\fP(2) |
| T} |
| \fBsemtimedop\fP(2) 2.6; 2.4.22 |
| \fBsend\fP(2) 2.0 T{ |
| See notes on \fBsocketcall\fP(2) |
| T} |
| \fBsendfile\fP(2) 2.2 |
| \fBsendfile64\fP(2) 2.6; 2.4.19 |
| \fBsendmmsg\fP(2) 3.0 |
| \fBsendmsg\fP(2) 2.0 T{ |
| See notes on \fBsocketcall\fP(2) |
| T} |
| \fBsendto\fP(2) 2.0 T{ |
| See notes on \fBsocketcall\fP(2) |
| T} |
| \fBset_mempolicy\fP(2) 2.6.6 |
| \fBset_robust_list\fP(2) 2.6.17 |
| \fBset_thread_area\fP(2) 2.6 |
| \fBset_tid_address\fP(2) 2.6 |
| \fBset_tls\fP(2) 2.6.11 T{ |
| ARM OABI/EABI only (constant |
| has \fB__ARM_NR\fP prefix) |
| T} |
| .\" \fBsetaltroot\fP(2) 2.6.10 T{ |
| .\" Removed in 2.6.11, exposed one |
| .\" of implementation details of |
| .\" \fBpersonality\fP(2) (creating an |
| .\" alternative root, precursor of |
| .\" mount namespaces) to user space. |
| .\" T} |
| .\" See http://lkml.org/lkml/2005/8/1/83 |
| .\" "[PATCH] remove sys_set_zone_reclaim()" |
| \fBsetdomainname\fP(2) 1.0 |
| \fBsetfsgid\fP(2) 1.2 |
| \fBsetfsgid32\fP(2) 2.4 |
| \fBsetfsuid\fP(2) 1.2 |
| \fBsetfsuid32\fP(2) 2.4 |
| \fBsetgid\fP(2) 1.0 |
| \fBsetgid32\fP(2) 2.4 |
| \fBsetgroups\fP(2) 1.0 |
| \fBsetgroups32\fP(2) 2.4 |
| .\" arch/alpha/include/asm/core_lca.h |
| \fBsethae\fP(2) 2.0 T{ |
| Alpha only; see NOTES |
| T} |
| \fBsethostname\fP(2) 1.0 |
| \fBsetitimer\fP(2) 1.0 |
| \fBsetns\fP(2) 3.0 |
| \fBsetpgid\fP(2) 1.0 |
| \fBsetpgrp\fP(2) 2.0 T{ |
| Alternative name for |
| \fBsetpgid\fP(2) on Alpha |
| T} |
| \fBsetpriority\fP(2) 1.0 |
| \fBsetregid\fP(2) 1.0 |
| \fBsetregid32\fP(2) 2.4 |
| \fBsetresgid\fP(2) 2.2 |
| \fBsetresgid32\fP(2) 2.4 |
| \fBsetresuid\fP(2) 2.2 |
| \fBsetresuid32\fP(2) 2.4 |
| \fBsetreuid\fP(2) 1.0 |
| \fBsetreuid32\fP(2) 2.4 |
| \fBsetrlimit\fP(2) 1.0 |
| \fBsetsid\fP(2) 1.0 |
| \fBsetsockopt\fP(2) 2.0 T{ |
| See notes on \fBsocketcall\fP(2) |
| T} |
| \fBsettimeofday\fP(2) 1.0 |
| \fBsetuid\fP(2) 1.0 |
| \fBsetuid32\fP(2) 2.4 |
| \fBsetup\fP(2) 1.0 Removed in 2.2 |
| \fBsetxattr\fP(2) 2.6; 2.4.18 |
| \fBsgetmask\fP(2) 1.0 |
| \fBshmat\fP(2) 2.0 T{ |
| See notes on \fBipc\fP(2) |
| T} |
| \fBshmctl\fP(2) 2.0 T{ |
| See notes on \fBipc\fP(2) |
| T} |
| \fBshmdt\fP(2) 2.0 T{ |
| See notes on \fBipc\fP(2) |
| T} |
| \fBshmget\fP(2) 2.0 T{ |
| See notes on \fBipc\fP(2) |
| T} |
| \fBshutdown\fP(2) 2.0 T{ |
| See notes on \fBsocketcall\fP(2) |
| T} |
| \fBsigaction\fP(2) 1.0 |
| \fBsigaltstack\fP(2) 2.2 |
| \fBsignal\fP(2) 1.0 |
| \fBsignalfd\fP(2) 2.6.22 |
| \fBsignalfd4\fP(2) 2.6.27 |
| \fBsigpending\fP(2) 1.0 |
| \fBsigprocmask\fP(2) 1.0 |
| \fBsigreturn\fP(2) 1.0 |
| \fBsigsuspend\fP(2) 1.0 |
| \fBsocket\fP(2) 2.0 T{ |
| See notes on \fBsocketcall\fP(2) |
| T} |
| \fBsocketcall\fP(2) 1.0 |
| .\" Implements BSD socket calls |
| \fBsocketpair\fP(2) 2.0 T{ |
| See notes on \fBsocketcall\fP(2) |
| T} |
| .\" 5a0015d62668e64c8b6e02e360fbbea121bfd5e6 |
| \fBspill\fP(2) 2.6.13 Xtensa only |
| \fBsplice\fP(2) 2.6.17 |
| \fBspu_create\fP(2) 2.6.16 T{ |
| PowerPC/PowerPC64 only |
| T} |
| \fBspu_run\fP(2) 2.6.16 T{ |
| PowerPC/PowerPC64 only |
| T} |
| \fBssetmask\fP(2) 1.0 |
| \fBstat\fP(2) 1.0 |
| \fBstat64\fP(2) 2.4 |
| \fBstatfs\fP(2) 1.0 |
| \fBstatfs64\fP(2) 2.6 |
| \fBstatx\fP(2) 4.11 |
| \fBstime\fP(2) 1.0 |
| \fBsubpage_prot\fP(2) 2.6.25 T{ |
| PowerPC/PowerPC64 only |
| T} |
| \fBswapcontext\fP(2) 2.6.3 T{ |
| PowerPC/PowerPC64 only |
| T} |
| .\" 529d235a0e190ded1d21ccc80a73e625ebcad09b |
| \fBswitch_endian\fP(2) 4.1 PowerPC64 only |
| \fBswapoff\fP(2) 1.0 |
| \fBswapon\fP(2) 1.0 |
| \fBsymlink\fP(2) 1.0 |
| \fBsymlinkat\fP(2) 2.6.16 |
| \fBsync\fP(2) 1.0 |
| \fBsync_file_range\fP(2) 2.6.17 |
| \fBsync_file_range2\fP(2) 2.6.22 |
| .\" PowerPC, ARM, tile |
| .\" First appeared on ARM, as arm_sync_file_range(), but later renamed |
| .\" \fBsys_debug_setcontext\fP(2) ??? PowerPC if CONFIG_PPC32 |
| \fBsyncfs\fP(2) 2.6.39 |
| \fBsys_debug_setcontext\fP(2) 2.6.11 PowerPC only |
| \fBsyscall\fP(2) 1.0 T{ |
| Still available on ARM OABI |
| and MIPS O32 ABI |
| T} |
| \fBsysfs\fP(2) 1.2 |
| \fBsysinfo\fP(2) 1.0 |
| \fBsyslog\fP(2) 1.0 |
| .\" glibc interface is \fBklogctl\fP(3) |
| \fBsysmips\fP(2) 2.6.0 MIPS only |
| \fBtee\fP(2) 2.6.17 |
| \fBtgkill\fP(2) 2.6 |
| \fBtime\fP(2) 1.0 |
| \fBtimer_create\fP(2) 2.6 |
| \fBtimer_delete\fP(2) 2.6 |
| \fBtimer_getoverrun\fP(2) 2.6 |
| \fBtimer_gettime\fP(2) 2.6 |
| \fBtimer_settime\fP(2) 2.6 |
| .\" .\" b215e283992899650c4271e7385c79e26fb9a88e |
| .\" .\" 4d672e7ac79b5ec5cdc90e450823441e20464691 |
| .\" \fBtimerfd\fP(2) 2.6.22 T{ |
| .\" Old timerfd interface, |
| .\" removed in 2.6.25 |
| .\" T} |
| \fBtimerfd_create\fP(2) 2.6.25 |
| \fBtimerfd_gettime\fP(2) 2.6.25 |
| \fBtimerfd_settime\fP(2) 2.6.25 |
| \fBtimes\fP(2) 1.0 |
| \fBtkill\fP(2) 2.6; 2.4.22 |
| \fBtruncate\fP(2) 1.0 |
| \fBtruncate64\fP(2) 2.4 |
| \fBugetrlimit\fP(2) 2.4 |
| \fBumask\fP(2) 1.0 |
| \fBumount\fP(2) 1.0 |
| .\" sys_oldumount() -- __NR_umount |
| \fBumount2\fP(2) 2.2 |
| .\" sys_umount() -- __NR_umount2 |
| \fBuname\fP(2) 1.0 |
| \fBunlink\fP(2) 1.0 |
| \fBunlinkat\fP(2) 2.6.16 |
| \fBunshare\fP(2) 2.6.16 |
| \fBuselib\fP(2) 1.0 |
| \fBustat\fP(2) 1.0 |
| \fBuserfaultfd\fP(2) 4.3 |
| \fBusr26\fP(2) 2.4.8.1 ARM OABI only |
| \fBusr32\fP(2) 2.4.8.1 ARM OABI only |
| \fButime\fP(2) 1.0 |
| \fButimensat\fP(2) 2.6.22 |
| \fButimes\fP(2) 2.2 |
| \fButrap_install\fP(2) 2.2 SPARC64 only |
| .\" FIXME . document utrap_install() |
| .\" There's a man page for Solaris 5.11 |
| \fBvfork\fP(2) 2.2 |
| \fBvhangup\fP(2) 1.0 |
| \fBvm86old\fP(2) 1.0 T{ |
| Was "vm86"; renamed in |
| 2.0.28/2.2 |
| T} |
| \fBvm86\fP(2) 2.0.28; 2.2 |
| \fBvmsplice\fP(2) 2.6.17 |
| \fBwait4\fP(2) 1.0 |
| \fBwaitid\fP(2) 2.6.10 |
| \fBwaitpid\fP(2) 1.0 |
| \fBwrite\fP(2) 1.0 |
| \fBwritev\fP(2) 2.0 |
| .\" 5a0015d62668e64c8b6e02e360fbbea121bfd5e6 |
| \fBxtensa\fP(2) 2.6.13 Xtensa only |
| .TE |
| .ad |
| .hy |
| .PP |
| On many platforms, including x86-32, socket calls are all multiplexed |
| (via glibc wrapper functions) through |
| .BR socketcall (2) |
| and similarly System\ V IPC calls are multiplexed through |
| .BR ipc (2). |
| .PP |
| Although slots are reserved for them in the system call table, |
| the following system calls are not implemented in the standard kernel: |
| .BR afs_syscall (2), \" __NR_afs_syscall is 53 on Linux 2.6.22/i386 |
| .BR break (2), \" __NR_break is 17 on Linux 2.6.22/i386 |
| .BR ftime (2), \" __NR_ftime is 35 on Linux 2.6.22/i386 |
| .BR getpmsg (2), \" __NR_getpmsg is 188 on Linux 2.6.22/i386 |
| .BR gtty (2), \" __NR_gtty is 32 on Linux 2.6.22/i386 |
| .BR idle (2), \" __NR_idle is 112 on Linux 2.6.22/i386 |
| .BR lock (2), \" __NR_lock is 53 on Linux 2.6.22/i386 |
| .BR madvise1 (2), \" __NR_madvise1 is 219 on Linux 2.6.22/i386 |
| .BR mpx (2), \" __NR_mpx is 66 on Linux 2.6.22/i386 |
| .BR phys (2), \" Slot has been reused |
| .BR prof (2), \" __NR_prof is 44 on Linux 2.6.22/i386 |
| .BR profil (2), \" __NR_profil is 98 on Linux 2.6.22/i386 |
| .BR putpmsg (2), \" __NR_putpmsg is 189 on Linux 2.6.22/i386 |
| .\" __NR_security is 223 on Linux 2.4/i386; absent on 2.6/i386, present |
| .\" on a couple of 2.6 architectures |
| .BR security (2), \" __NR_security is 223 on Linux 2.4/i386 |
| .\" The security call is for future use. |
| .BR stty (2), \" __NR_stty is 31 on Linux 2.6.22/i386 |
| .BR tuxcall (2), \" __NR_tuxcall is 184 on x86_64, also on PPC and alpha |
| .BR ulimit (2), \" __NR_ulimit is 58 on Linux 2.6.22/i386 |
| and |
| .BR vserver (2) \" __NR_vserver is 273 on Linux 2.6.22/i386 |
| (see also |
| .BR unimplemented (2)). |
| However, |
| .BR ftime (3), |
| .BR profil (3), |
| and |
| .BR ulimit (3) |
| exist as library routines. |
| The slot for |
| .BR phys (2) |
| is in use since kernel 2.1.116 for |
| .BR umount (2); |
| .BR phys (2) |
| will never be implemented. |
| The |
| .BR getpmsg (2) |
| and |
| .BR putpmsg (2) |
| calls are for kernels patched to support STREAMS, |
| and may never be in the standard kernel. |
| .PP |
| There was briefly |
| .BR set_zone_reclaim (2), |
| added in Linux 2.6.13, and removed in 2.6.16; |
| this system call was never available to user space. |
| .\" |
| .SS System calls on removed ports |
| Some system calls only ever existed on Linux architectures that have |
| since been removed from the kernel: |
| .TP |
| AVR32 (port removed in Linux 4.12) |
| .RS |
| .PD 0 |
| .IP * 2 |
| .BR pread (2) |
| .IP * |
| .BR pwrite (2) |
| .PD |
| .RE |
| .TP |
| Blackfin (port removed in Linux 4.17) |
| .RS |
| .PD 0 |
| .IP * 2 |
| .BR bfin_spinlock (2) |
| (added in Linux 2.6.22) |
| .IP * |
| .BR dma_memcpy (2) |
| (added in Linux 2.6.22) |
| .IP * |
| .BR pread (2) |
| (added in Linux 2.6.22) |
| .IP * |
| .BR pwrite (2) |
| (added in Linux 2.6.22) |
| .IP * |
| .BR sram_alloc (2) |
| (added in Linux 2.6.22) |
| .IP * |
| .BR sram_free (2) |
| (added in Linux 2.6.22) |
| .PD |
| .RE |
| .TP |
| Metag (port removed in Linux 4.17) |
| .RS |
| .PD 0 |
| .IP * 2 |
| .BR metag_get_tls (2) |
| (add in Linux 3.9) |
| .IP * |
| .BR metag_set_fpu_flags (2) |
| (add in Linux 3.9) |
| .IP * |
| .BR metag_set_tls (2) |
| (add in Linux 3.9) |
| .IP * |
| .BR metag_setglobalbit (2) |
| (add in Linux 3.9) |
| .PD |
| .RE |
| .TP |
| Tile (port removed in Linux 4.17) |
| .RS |
| .PD 0 |
| .IP * 2 |
| .BR cmpxchg_badaddr (2) |
| (added in Linux 2.6.36) |
| .PD |
| .RE |
| .SH NOTES |
| Roughly speaking, the code belonging to the system call |
| with number __NR_xxx defined in |
| .I /usr/include/asm/unistd.h |
| can be found in the Linux kernel source in the routine |
| .IR sys_xxx (). |
| There are many exceptions, however, mostly because |
| older system calls were superseded by newer ones, |
| and this has been treated somewhat unsystematically. |
| On platforms with |
| proprietary operating-system emulation, |
| such as sparc, sparc64, and alpha, |
| there are many additional system calls; mips64 also contains a full |
| set of 32-bit system calls. |
| .PP |
| Over time, changes to the interfaces of some system calls have been |
| necessary. |
| One reason for such changes was the need to increase the size of |
| structures or scalar values passed to the system call. |
| Because of these changes, certain architectures |
| (notably, longstanding 32-bit architectures such as i386) |
| now have various groups of related system calls (e.g., |
| .BR truncate (2) |
| and |
| .BR truncate64 (2)) |
| which perform similar tasks, but which vary in |
| details such as the size of their arguments. |
| (As noted earlier, applications are generally unaware of this: |
| the glibc wrapper functions do some work to ensure that the right |
| system call is invoked, and that ABI compatibility is |
| preserved for old binaries.) |
| Examples of systems calls that exist in multiple versions are |
| the following: |
| .IP * 3 |
| By now there are three different versions of |
| .BR stat (2): |
| .IR sys_stat () |
| (slot |
| .IR __NR_oldstat ), |
| .IR sys_newstat () |
| (slot |
| .IR __NR_stat ), |
| and |
| .IR sys_stat64 () |
| (slot |
| .IR __NR_stat64 ), |
| with the last being the most current. |
| .\" e.g., on 2.6.22/i386: __NR_oldstat 18, __NR_stat 106, __NR_stat64 195 |
| .\" The stat system calls deal with three different data structures, |
| .\" defined in include/asm-i386/stat.h: __old_kernel_stat, stat, stat64 |
| A similar story applies for |
| .BR lstat (2) |
| and |
| .BR fstat (2). |
| .IP * |
| Similarly, the defines |
| .IR __NR_oldolduname , |
| .IR __NR_olduname , |
| and |
| .I __NR_uname |
| refer to the routines |
| .IR sys_olduname (), |
| .IR sys_uname (), |
| and |
| .IR sys_newuname (). |
| .IP * |
| In Linux 2.0, a new version of |
| .BR vm86 (2) |
| appeared, with the old and the new kernel routines being named |
| .IR sys_vm86old () |
| and |
| .IR sys_vm86 (). |
| .IP * |
| In Linux 2.4, a new version of |
| .BR getrlimit (2) |
| appeared, with the old and the new kernel routines being named |
| .IR sys_old_getrlimit () |
| (slot |
| .IR __NR_getrlimit ) |
| and |
| .IR sys_getrlimit () |
| (slot |
| .IR __NR_ugetrlimit ). |
| .IP * |
| Linux 2.4 increased the size of user and group IDs from 16 to 32 bits. |
| .\" 64-bit off_t changes: ftruncate64, *stat64, |
| .\" fcntl64 (because of the flock structure), getdents64, *statfs64 |
| To support this change, a range of system calls were added |
| (e.g., |
| .BR chown32 (2), |
| .BR getuid32 (2), |
| .BR getgroups32 (2), |
| .BR setresuid32 (2)), |
| superseding earlier calls of the same name without the |
| "32" suffix. |
| .IP * |
| Linux 2.4 added support for applications on 32-bit architectures |
| to access large files (i.e., files for which the sizes and |
| file offsets can't be represented in 32 bits.) |
| To support this change, replacements were required for system calls |
| that deal with file offsets and sizes. |
| Thus the following system calls were added: |
| .BR fcntl64 (2), |
| .BR getdents64 (2), |
| .BR stat64 (2), |
| .BR statfs64 (2), |
| .BR truncate64 (2), |
| and their analogs that work with file descriptors or |
| symbolic links. |
| These system calls supersede the older system calls |
| which, except in the case of the "stat" calls, |
| have the same name without the "64" suffix. |
| .IP |
| On newer platforms that only have 64-bit file access and 32-bit UIDs/GIDs |
| (e.g., alpha, ia64, s390x, x86-64), there is just a single version of |
| the UID/GID and file access system calls. |
| On platforms (typically, 32-bit platforms) where the *64 and *32 calls exist, |
| the other versions are obsolete. |
| .IP * |
| The |
| .I rt_sig* |
| calls were added in kernel 2.2 to support the addition |
| of real-time signals (see |
| .BR signal (7)). |
| These system calls supersede the older system calls of the same |
| name without the "rt_" prefix. |
| .IP * |
| The |
| .BR select (2) |
| and |
| .BR mmap (2) |
| system calls use five or more arguments, |
| which caused problems in the way |
| argument passing on the i386 used to be set up. |
| Thus, while other architectures have |
| .IR sys_select () |
| and |
| .IR sys_mmap () |
| corresponding to |
| .I __NR_select |
| and |
| .IR __NR_mmap , |
| on i386 one finds |
| .IR old_select () |
| and |
| .IR old_mmap () |
| (routines that use a pointer to an |
| argument block) instead. |
| These days passing five arguments |
| is not a problem any more, and there is a |
| .I __NR__newselect |
| .\" (used by libc 6) |
| that corresponds directly to |
| .IR sys_select () |
| and similarly |
| .IR __NR_mmap2 . |
| s390x is the only 64-bit architecture that has |
| .IR old_mmap (). |
| .\" .PP |
| .\" Two system call numbers, |
| .\" .IR __NR__llseek |
| .\" and |
| .\" .IR __NR__sysctl |
| .\" have an additional underscore absent in |
| .\" .IR sys_llseek () |
| .\" and |
| .\" .IR sys_sysctl (). |
| .\" |
| .\" In kernel 2.1.81, |
| .\" .BR lchown (2) |
| .\" and |
| .\" .BR chown (2) |
| .\" were swapped; that is, |
| .\" .BR lchown (2) |
| .\" was added with the semantics that were then current for |
| .\" .BR chown (2), |
| .\" and the semantics of the latter call were changed to what |
| .\" they are today. |
| .\" |
| .\" |
| .SS "Architecture-specific details: Alpha" |
| .IP * 3 |
| .BR getxgid (2) |
| returns a pair of GID and effective GID via registers |
| \fBr0\fP and \fBr20\fP; it is provided |
| instead of |
| \fBgetgid\fP(2) and \fBgetegid\fP(2). |
| .IP * |
| .BR getxpid (2) |
| returns a pair of PID and parent PID via registers |
| \fBr0\fP and \fBr20\fP; it is provided instead of |
| \fBgetpid\fP(2) and \fBgetppid\fP(2). |
| .IP * |
| .BR old_adjtimex (2) |
| is a variant of \fBadjtimex\fP(2) that uses \fIstruct timeval32\fP, |
| for compatibility with OSF/1. |
| .IP * |
| .BR getxuid (2) |
| returns a pair of GID and effective GID via registers |
| \fBr0\fP and \fBr20\fP; it is provided instead of |
| \fBgetuid\fP(2) and \fBgeteuid\fP(2). |
| .IP * |
| .BR sethae (2) |
| is used for configuring the Host Address Extension register on |
| low-cost Alphas in order to access address space beyond first 27 bits. |
| .SH SEE ALSO |
| .BR intro (2), |
| .BR syscall (2), |
| .BR unimplemented (2), |
| .BR errno (3), |
| .BR libc (7), |
| .BR vdso (7) |