diff options
Diffstat (limited to 'man2/syscalls.2')
-rw-r--r-- | man2/syscalls.2 | 1169 |
1 files changed, 0 insertions, 1169 deletions
diff --git a/man2/syscalls.2 b/man2/syscalls.2 deleted file mode 100644 index 09535aa..0000000 --- a/man2/syscalls.2 +++ /dev/null @@ -1,1169 +0,0 @@ -'\" t -.\" 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> -.\" -.\" SPDX-License-Identifier: Linux-man-pages-copyleft -.\" -.TH syscalls 2 2024-02-18 "Linux man-pages 6.7" -.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. -.P -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. -.P -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 \[bu] 3 -Where no kernel version is indicated, -the system call appeared in Linux 1.0 or earlier. -.IP \[bu] -Where a system call is marked "1.2" -this means the system call probably appeared in a Linux 1.1.x kernel version, -and first appeared in a stable kernel with 1.2. -(Development of the Linux 1.2 kernel was initiated from a branch of -Linux 1.0.6 via the Linux 1.1.x unstable kernel series.) -.IP \[bu] -Where a system call is marked "2.0" -this means the system call probably appeared in a Linux 1.3.x kernel version, -and first appeared in a stable kernel with Linux 2.0. -(Development of the Linux 2.0 kernel was initiated from a branch of -Linux 1.2.x, somewhere around Linux 1.2.10, -via the Linux 1.3.x unstable kernel series.) -.\" Was Linux 2.0 started from a branch of Linux 1.2.10? -.\" At least from the timestamps of the tarballs of -.\" of Linux 1.2.10 and Linux 1.3.0, that's how it looks, but in -.\" fact the diff doesn't seem very clear, the -.\" Linux 1.3.0 .tar.bz is much bigger (2.0 MB) than the -.\" Linux 1.2.10 .tar.bz2 (1.8 MB), and AEB points out the -.\" timestamps of some files in Linux 1.3.0 seem to be older -.\" than those in Linux 1.2.10. All of this suggests -.\" that there might not have been a clean branch point. -.IP \[bu] -Where a system call is marked "2.2" -this means the system call probably appeared in a Linux 2.1.x kernel version, -and first appeared in a stable kernel with Linux 2.2.0. -(Development of the Linux 2.2 kernel was initiated from a branch of -Linux 2.0.21 via the Linux 2.1.x unstable kernel series.) -.IP \[bu] -Where a system call is marked "2.4" -this means the system call probably appeared in a Linux 2.3.x kernel version, -and first appeared in a stable kernel with Linux 2.4.0. -(Development of the Linux 2.4 kernel was initiated from a branch of -Linux 2.2.8 via the Linux 2.3.x unstable kernel series.) -.IP \[bu] -Where a system call is marked "2.6" -this means the system call probably appeared in a Linux 2.5.x kernel version, -and first appeared in a stable kernel with Linux 2.6.0. -(Development of Linux 2.6 was initiated from a branch -of Linux 2.4.15 via the Linux 2.5.x unstable kernel series.) -.IP \[bu] -Starting with Linux 2.6.0, the development model changed, -and new system calls may appear in each Linux 2.6.x release. -In this case, the exact version number where the system call appeared -is shown. -This convention continues with the Linux 3.x kernel series, -which followed on from Linux 2.6.39; and the Linux 4.x kernel series, -which followed on from Linux 3.19; and the Linux 5.x kernel series, -which followed on from Linux 4.20; and the Linux 6.x kernel series, -which followed on from Linux 5.19. -.IP \[bu] -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 Linux 2.6.x were also backported -into a Linux 2.4.x release after Linux 2.4.15. -When this is so, the version where the system call appeared -in both of the major kernel series is listed. -.P -The list of system calls that are available as at Linux 5.14 -(or in a few cases only on older kernels) is as follows: -.P -.\" -.\" Looking at scripts/checksyscalls.sh in the kernel source is -.\" instructive about x86 specifics. -.\" -.TS -Lb Lb Lb -L2 L L. -System call Kernel Notes -_ -\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 -\fBlandlock_add_rule\fP(2) 5.13 -\fBlandlock_create_ruleset\fP(2) 5.13 -\fBlandlock_restrict_self\fP(2) 5.13 -\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 -\fBmemfd_secret\fP(2) 5.14 -\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; removed in 5.10 -\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 -\fBquotactl_fd\fP(2) 5.14 -\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 -.BR \%sched_getaffinity (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 -.BR \%sched_setaffinity (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 -.P -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). -.P -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 Linux 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. -.P -There was briefly -.BR set_zone_reclaim (2), -added in Linux 2.6.13, and removed in Linux 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 \[bu] 3 -.BR pread (2) -.IP \[bu] -.BR pwrite (2) -.PD -.RE -.TP -Blackfin (port removed in Linux 4.17) -.RS -.PD 0 -.IP \[bu] 3 -.BR bfin_spinlock (2) -(added in Linux 2.6.22) -.IP \[bu] -.BR dma_memcpy (2) -(added in Linux 2.6.22) -.IP \[bu] -.BR pread (2) -(added in Linux 2.6.22) -.IP \[bu] -.BR pwrite (2) -(added in Linux 2.6.22) -.IP \[bu] -.BR sram_alloc (2) -(added in Linux 2.6.22) -.IP \[bu] -.BR sram_free (2) -(added in Linux 2.6.22) -.PD -.RE -.TP -Metag (port removed in Linux 4.17) -.RS -.PD 0 -.IP \[bu] 3 -.BR metag_get_tls (2) -(add in Linux 3.9) -.IP \[bu] -.BR metag_set_fpu_flags (2) -(add in Linux 3.9) -.IP \[bu] -.BR metag_set_tls (2) -(add in Linux 3.9) -.IP \[bu] -.BR metag_setglobalbit (2) -(add in Linux 3.9) -.PD -.RE -.TP -Tile (port removed in Linux 4.17) -.RS -.PD 0 -.IP \[bu] 3 -.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. -.P -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 system calls that exist in multiple versions are -the following: -.IP \[bu] 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 \[bu] -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 \[bu] -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 \[bu] -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 \[bu] -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 \[bu] -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 \[bu] -The -.I rt_sig* -calls were added in Linux 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 \[bu] -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 (). -.\" .P -.\" 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 Linux 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" -.TP -.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). -.TP -.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). -.TP -.BR old_adjtimex (2) -is a variant of \fBadjtimex\fP(2) that uses \fIstruct timeval32\fP, -for compatibility with OSF/1. -.TP -.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). -.TP -.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 ausyscall (1), -.BR intro (2), -.BR syscall (2), -.BR unimplemented (2), -.BR errno (3), -.BR libc (7), -.BR vdso (7) |