summaryrefslogtreecommitdiffstats
path: root/man/man2/syscalls.2
diff options
context:
space:
mode:
Diffstat (limited to 'man/man2/syscalls.2')
-rw-r--r--man/man2/syscalls.21172
1 files changed, 1172 insertions, 0 deletions
diff --git a/man/man2/syscalls.2 b/man/man2/syscalls.2
new file mode 100644
index 000000000..7a7d6d730
--- /dev/null
+++ b/man/man2/syscalls.2
@@ -0,0 +1,1172 @@
+'\" 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 (date) "Linux man-pages (unreleased)"
+.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 T{
+Alpha, SPARC/SPARC64 only
+T}
+\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 T{
+See \fBstat\fP(2)
+T}
+\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)