1SYSCALLS(2)                Linux Programmer's Manual               SYSCALLS(2)
2
3
4

NAME

6       syscalls - Linux system calls
7

SYNOPSIS

9       Linux system calls.
10

DESCRIPTION

12       The system call is the fundamental interface between an application and
13       the Linux kernel.
14
15   System calls and library wrapper functions
16       System calls are generally not invoked directly, but rather via wrapper
17       functions in glibc (or perhaps some other library).  For details of di‐
18       rect invocation of a system call, see intro(2).  Often, but not always,
19       the  name of the wrapper function is the same as the name of the system
20       call that it invokes.  For example, glibc contains a  function  chdir()
21       which invokes the underlying "chdir" system call.
22
23       Often the glibc wrapper function is quite thin, doing little work other
24       than copying arguments to the right registers before invoking the  sys‐
25       tem  call,  and  then setting errno appropriately after the system call
26       has returned.   (These  are  the  same  steps  that  are  performed  by
27       syscall(2), which can be used to invoke system calls for which no wrap‐
28       per function is provided.)  Note: system calls indicate  a  failure  by
29       returning  a negative error number to the caller on architectures with‐
30       out a separate error register/flag, as noted in syscall(2);  when  this
31       happens,  the  wrapper  function  negates the returned error number (to
32       make it positive), copies it to errno, and returns -1 to the caller  of
33       the wrapper.
34
35       Sometimes,  however,  the  wrapper function does some extra work before
36       invoking the system call.  For example, nowadays there are (for reasons
37       described  below)  two  related  system  calls,  truncate(2)  and trun‐
38       cate64(2), and the glibc truncate() wrapper function  checks  which  of
39       those  system  calls  are  provided  by the kernel and determines which
40       should be employed.
41
42   System call list
43       Below is a list of the Linux system calls.  In  the  list,  the  Kernel
44       column  indicates  the  kernel version for those system calls that were
45       new in Linux 2.2, or have appeared since that kernel version.  Note the
46       following points:
47
48       *  Where  no  kernel  version is indicated, the system call appeared in
49          kernel 1.0 or earlier.
50
51       *  Where a system call is marked "1.2" this means the system call prob‐
52          ably  appeared  in  a  1.1.x kernel version, and first appeared in a
53          stable kernel with 1.2.  (Development of the 1.2 kernel  was  initi‐
54          ated from a branch of kernel 1.0.6 via the 1.1.x unstable kernel se‐
55          ries.)
56
57       *  Where a system call is marked "2.0" this means the system call prob‐
58          ably  appeared  in  a  1.3.x kernel version, and first appeared in a
59          stable kernel with 2.0.  (Development of the 2.0 kernel  was  initi‐
60          ated from a branch of kernel 1.2.x, somewhere around 1.2.10, via the
61          1.3.x unstable kernel series.)
62
63       *  Where a system call is marked "2.2" this means the system call prob‐
64          ably  appeared  in  a  2.1.x kernel version, and first appeared in a
65          stable kernel with 2.2.0.  (Development of the 2.2 kernel was initi‐
66          ated  from  a  branch of kernel 2.0.21 via the 2.1.x unstable kernel
67          series.)
68
69       *  Where a system call is marked "2.4" this means the system call prob‐
70          ably  appeared  in  a  2.3.x kernel version, and first appeared in a
71          stable kernel with 2.4.0.  (Development of the 2.4 kernel was initi‐
72          ated from a branch of kernel 2.2.8 via the 2.3.x unstable kernel se‐
73          ries.)
74
75       *  Where a system call is marked "2.6" this means the system call prob‐
76          ably  appeared  in  a  2.5.x kernel version, and first appeared in a
77          stable kernel with 2.6.0.  (Development of kernel 2.6 was  initiated
78          from  a  branch  of  kernel 2.4.15 via the 2.5.x unstable kernel se‐
79          ries.)
80
81       *  Starting with kernel 2.6.0, the development model changed,  and  new
82          system  calls  may  appear in each 2.6.x release.  In this case, the
83          exact version number where the system call appeared is shown.   This
84          convention  continues  with the 3.x kernel series, which followed on
85          from kernel 2.6.39; and the 4.x kernel  series,  which  followed  on
86          from  kernel 3.19; and the 5.x kernel series, which followed on from
87          kernel 4.20.
88
89       *  In some cases, a system call was added to a stable kernel series af‐
90          ter  it  branched  from  the previous stable kernel series, and then
91          backported into the earlier stable kernel series.  For example  some
92          system  calls  that  appeared  in  2.6.x were also backported into a
93          2.4.x release after 2.4.15.  When this is so, the version where  the
94          system call appeared in both of the major kernel series is listed.
95
96       The  list of system calls that are available as at kernel 5.11 (or in a
97       few cases only on older kernels) is as follows:
98
99       System call                 Kernel        Notes
100       ──────────────────────────────────────────────────────────────────────
101
102       _llseek(2)                  1.2
103       _newselect(2)               2.0
104       _sysctl(2)                  2.0           Removed in 5.5
105       accept(2)                   2.0           See notes on socketcall(2)
106       accept4(2)                  2.6.28
107       access(2)                   1.0
108       acct(2)                     1.0
109       add_key(2)                  2.6.10
110       adjtimex(2)                 1.0
111       alarm(2)                    1.0
112       alloc_hugepages(2)          2.5.36        Removed in 2.5.44
113       arc_gettls(2)               3.9           ARC only
114       arc_settls(2)               3.9           ARC only
115       arc_usr_cmpxchg(2)          4.9           ARC only
116       arch_prctl(2)               2.6           x86_64, x86 since 4.12
117       atomic_barrier(2)           2.6.34        m68k only
118       atomic_cmpxchg_32(2)        2.6.34        m68k only
119       bdflush(2)                  1.2           Deprecated (does nothing)
120                                                 since 2.6
121       bind(2)                     2.0           See notes on socketcall(2)
122       bpf(2)                      3.18
123       brk(2)                      1.0
124       breakpoint(2)               2.2           ARM OABI only, defined with
125                                                 __ARM_NR prefix
126       cacheflush(2)               1.2           Not on x86
127       capget(2)                   2.2
128       capset(2)                   2.2
129       chdir(2)                    1.0
130       chmod(2)                    1.0
131
132
133       chown(2)                    2.2           See chown(2) for version
134                                                 details
135       chown32(2)                  2.4
136       chroot(2)                   1.0
137       clock_adjtime(2)            2.6.39
138       clock_getres(2)             2.6
139       clock_gettime(2)            2.6
140       clock_nanosleep(2)          2.6
141       clock_settime(2)            2.6
142       clone2(2)                   2.4           IA-64 only
143       clone(2)                    1.0
144       clone3(2)                   5.3
145       close(2)                    1.0
146       close_range(2)              5.9
147       connect(2)                  2.0           See notes on socketcall(2)
148       copy_file_range(2)          4.5
149       creat(2)                    1.0
150       create_module(2)            1.0           Removed in 2.6
151       delete_module(2)            1.0
152       dup(2)                      1.0
153       dup2(2)                     1.0
154       dup3(2)                     2.6.27
155       epoll_create(2)             2.6
156       epoll_create1(2)            2.6.27
157       epoll_ctl(2)                2.6
158       epoll_pwait(2)              2.6.19
159       epoll_pwait2(2)             5.11
160       epoll_wait(2)               2.6
161       eventfd(2)                  2.6.22
162       eventfd2(2)                 2.6.27
163       execv(2)                    2.0           SPARC/SPARC64 only, for
164                                                 compatibility with SunOS
165       execve(2)                   1.0
166       execveat(2)                 3.19
167       exit(2)                     1.0
168       exit_group(2)               2.6
169       faccessat(2)                2.6.16
170       faccessat2(2)               5.8
171       fadvise64(2)                2.6
172       fadvise64_64(2)             2.6
173       fallocate(2)                2.6.23
174       fanotify_init(2)            2.6.37
175       fanotify_mark(2)            2.6.37
176       fchdir(2)                   1.0
177       fchmod(2)                   1.0
178       fchmodat(2)                 2.6.16
179       fchown(2)                   1.0
180       fchown32(2)                 2.4
181       fchownat(2)                 2.6.16
182       fcntl(2)                    1.0
183       fcntl64(2)                  2.4
184       fdatasync(2)                2.0
185       fgetxattr(2)                2.6; 2.4.18
186       finit_module(2)             3.8
187       flistxattr(2)               2.6; 2.4.18
188       flock(2)                    2.0
189       fork(2)                     1.0
190       free_hugepages(2)           2.5.36        Removed in 2.5.44
191       fremovexattr(2)             2.6; 2.4.18
192       fsconfig(2)                 5.2
193       fsetxattr(2)                2.6; 2.4.18
194       fsmount(2)                  5.2
195       fsopen(2)                   5.2
196       fspick(2)                   5.2
197       fstat(2)                    1.0
198
199       fstat64(2)                  2.4
200       fstatat64(2)                2.6.16
201       fstatfs(2)                  1.0
202       fstatfs64(2)                2.6
203       fsync(2)                    1.0
204       ftruncate(2)                1.0
205       ftruncate64(2)              2.4
206       futex(2)                    2.6
207       futimesat(2)                2.6.16
208       get_kernel_syms(2)          1.0           Removed in 2.6
209       get_mempolicy(2)            2.6.6
210       get_robust_list(2)          2.6.17
211       get_thread_area(2)          2.6
212       get_tls(2)                  4.15          ARM OABI only, has __ARM_NR
213                                                 prefix
214       getcpu(2)                   2.6.19
215       getcwd(2)                   2.2
216       getdents(2)                 2.0
217       getdents64(2)               2.4
218       getdomainname(2)            2.2           SPARC, SPARC64; available
219                                                 as osf_getdomainname(2) on
220                                                 Alpha since Linux 2.0
221       getdtablesize(2)            2.0           SPARC (removed in 2.6.26),
222                                                 available on Alpha as
223                                                 osf_getdtablesize(2)
224       getegid(2)                  1.0
225       getegid32(2)                2.4
226       geteuid(2)                  1.0
227       geteuid32(2)                2.4
228       getgid(2)                   1.0
229       getgid32(2)                 2.4
230       getgroups(2)                1.0
231       getgroups32(2)              2.4
232       gethostname(2)              2.0           Alpha, was available on
233                                                 SPARC up to Linux 2.6.26
234       getitimer(2)                1.0
235       getpeername(2)              2.0           See notes on socketcall(2)
236       getpagesize(2)              2.0           Not on x86
237       getpgid(2)                  1.0
238       getpgrp(2)                  1.0
239       getpid(2)                   1.0
240       getppid(2)                  1.0
241       getpriority(2)              1.0
242       getrandom(2)                3.17
243       getresgid(2)                2.2
244       getresgid32(2)              2.4
245       getresuid(2)                2.2
246       getresuid32(2)              2.4
247       getrlimit(2)                1.0
248       getrusage(2)                1.0
249       getsid(2)                   2.0
250       getsockname(2)              2.0           See notes on socketcall(2)
251       getsockopt(2)               2.0           See notes on socketcall(2)
252       gettid(2)                   2.4.11
253       gettimeofday(2)             1.0
254       getuid(2)                   1.0
255       getuid32(2)                 2.4
256       getunwind(2)                2.4.8         IA-64 only; deprecated
257       getxattr(2)                 2.6; 2.4.18
258       getxgid(2)                  2.0           Alpha only; see NOTES
259       getxpid(2)                  2.0           Alpha only; see NOTES
260       getxuid(2)                  2.0           Alpha only; see NOTES
261       init_module(2)              1.0
262       inotify_add_watch(2)        2.6.13
263       inotify_init(2)             2.6.13
264
265       inotify_init1(2)            2.6.27
266       inotify_rm_watch(2)         2.6.13
267       io_cancel(2)                2.6
268       io_destroy(2)               2.6
269       io_getevents(2)             2.6
270       io_pgetevents(2)            4.18
271       io_setup(2)                 2.6
272       io_submit(2)                2.6
273       io_uring_enter(2)           5.1
274       io_uring_register(2)        5.1
275       io_uring_setup(2)           5.1
276       ioctl(2)                    1.0
277       ioperm(2)                   1.0
278       iopl(2)                     1.0
279       ioprio_get(2)               2.6.13
280       ioprio_set(2)               2.6.13
281       ipc(2)                      1.0
282       kcmp(2)                     3.5
283       kern_features(2)            3.7           SPARC64 only
284       kexec_file_load(2)          3.17
285       kexec_load(2)               2.6.13
286       keyctl(2)                   2.6.10
287       kill(2)                     1.0
288       landlock_add_rule(2)        5.13
289       landlock_create_ruleset(2)  5.13
290       landlock_restrict_self(2)   5.13
291       landlock_add_rule(2)        5.13
292       lchown(2)                   1.0           See chown(2) for version
293                                                 details
294       lchown32(2)                 2.4
295       lgetxattr(2)                2.6; 2.4.18
296       link(2)                     1.0
297       linkat(2)                   2.6.16
298       listen(2)                   2.0           See notes on socketcall(2)
299       listxattr(2)                2.6; 2.4.18
300       llistxattr(2)               2.6; 2.4.18
301       lookup_dcookie(2)           2.6
302       lremovexattr(2)             2.6; 2.4.18
303       lseek(2)                    1.0
304       lsetxattr(2)                2.6; 2.4.18
305       lstat(2)                    1.0
306       lstat64(2)                  2.4
307       madvise(2)                  2.4
308       mbind(2)                    2.6.6
309       memory_ordering(2)          2.2           SPARC64 only
310       membarrier(2)               3.17
311       memfd_create(2)             3.17
312       migrate_pages(2)            2.6.16
313       mincore(2)                  2.4
314       mkdir(2)                    1.0
315       mkdirat(2)                  2.6.16
316       mknod(2)                    1.0
317       mknodat(2)                  2.6.16
318       mlock(2)                    2.0
319       mlock2(2)                   4.4
320       mlockall(2)                 2.0
321       mmap(2)                     1.0
322       mmap2(2)                    2.4
323       modify_ldt(2)               1.0
324       mount(2)                    1.0
325       move_mount(2)               5.2
326       move_pages(2)               2.6.18
327       mprotect(2)                 1.0
328       mq_getsetattr(2)            2.6.6
329       mq_notify(2)                2.6.6
330
331       mq_open(2)                  2.6.6
332       mq_timedreceive(2)          2.6.6
333       mq_timedsend(2)             2.6.6
334       mq_unlink(2)                2.6.6
335       mremap(2)                   2.0
336       msgctl(2)                   2.0           See notes on ipc(2)
337       msgget(2)                   2.0           See notes on ipc(2)
338       msgrcv(2)                   2.0           See notes on ipc(2)
339       msgsnd(2)                   2.0           See notes on ipc(2)
340       msync(2)                    2.0
341       munlock(2)                  2.0
342       munlockall(2)               2.0
343       munmap(2)                   1.0
344       name_to_handle_at(2)        2.6.39
345       nanosleep(2)                2.0
346       newfstatat(2)               2.6.16        See stat(2)
347       nfsservctl(2)               2.2           Removed in 3.1
348       nice(2)                     1.0
349       old_adjtimex(2)             2.0           Alpha only; see NOTES
350       old_getrlimit(2)            2.4           Old variant of getrlimit(2)
351                                                 that used a different value
352                                                 for RLIM_INFINITY
353       oldfstat(2)                 1.0
354       oldlstat(2)                 1.0
355       oldolduname(2)              1.0
356       oldstat(2)                  1.0
357       oldumount(2)                2.4.116       Name of the old umount(2)
358                                                 syscall on Alpha
359       olduname(2)                 1.0
360       open(2)                     1.0
361       open_by_handle_at(2)        2.6.39
362       open_tree(2)                5.2
363       openat(2)                   2.6.16
364       openat2(2)                  5.6
365       or1k_atomic(2)              3.1           OpenRISC 1000 only
366       pause(2)                    1.0
367       pciconfig_iobase(2)         2.2.15; 2.4   Not on x86
368       pciconfig_read(2)           2.0.26; 2.2   Not on x86
369       pciconfig_write(2)          2.0.26; 2.2   Not on x86
370       perf_event_open(2)          2.6.31        Was perf_counter_open() in
371                                                 2.6.31; renamed in 2.6.32
372       personality(2)              1.2
373       perfctr(2)                  2.2           SPARC only; removed in
374                                                 2.6.34
375       perfmonctl(2)               2.4           IA-64 only; removed in 5.10
376       pidfd_getfd(2)              5.6
377       pidfd_send_signal(2)        5.1
378       pidfd_open(2)               5.3
379       pipe(2)                     1.0
380       pipe2(2)                    2.6.27
381       pivot_root(2)               2.4
382       pkey_alloc(2)               4.8
383       pkey_free(2)                4.8
384       pkey_mprotect(2)            4.8
385       poll(2)                     2.0.36; 2.2
386       ppoll(2)                    2.6.16
387       prctl(2)                    2.2
388       pread64(2)                                Added as "pread" in 2.2;
389                                                 renamed "pread64" in 2.6
390       preadv(2)                   2.6.30
391       preadv2(2)                  4.6
392       prlimit64(2)                2.6.36
393       process_madvise(2)          5.10
394       process_vm_readv(2)         3.2
395       process_vm_writev(2)        3.2
396
397       pselect6(2)                 2.6.16
398       ptrace(2)                   1.0
399       pwrite64(2)                               Added as "pwrite" in 2.2;
400                                                 renamed "pwrite64" in 2.6
401       pwritev(2)                  2.6.30
402       pwritev2(2)                 4.6
403       query_module(2)             2.2           Removed in 2.6
404       quotactl(2)                 1.0
405       quotactl_fd(2)              5.14
406       read(2)                     1.0
407       readahead(2)                2.4.13
408       readdir(2)                  1.0
409       readlink(2)                 1.0
410       readlinkat(2)               2.6.16
411       readv(2)                    2.0
412       reboot(2)                   1.0
413       recv(2)                     2.0           See notes on socketcall(2)
414       recvfrom(2)                 2.0           See notes on socketcall(2)
415       recvmsg(2)                  2.0           See notes on socketcall(2)
416       recvmmsg(2)                 2.6.33
417       remap_file_pages(2)         2.6           Deprecated since 3.16
418       removexattr(2)              2.6; 2.4.18
419       rename(2)                   1.0
420       renameat(2)                 2.6.16
421       renameat2(2)                3.15
422       request_key(2)              2.6.10
423       restart_syscall(2)          2.6
424       riscv_flush_icache(2)       4.15          RISC-V only
425       rmdir(2)                    1.0
426       rseq(2)                     4.18
427       rt_sigaction(2)             2.2
428       rt_sigpending(2)            2.2
429       rt_sigprocmask(2)           2.2
430       rt_sigqueueinfo(2)          2.2
431       rt_sigreturn(2)             2.2
432       rt_sigsuspend(2)            2.2
433       rt_sigtimedwait(2)          2.2
434       rt_tgsigqueueinfo(2)        2.6.31
435       rtas(2)                     2.6.2         PowerPC/PowerPC64 only
436       s390_runtime_instr(2)       3.7           s390 only
437       s390_pci_mmio_read(2)       3.19          s390 only
438       s390_pci_mmio_write(2)      3.19          s390 only
439       s390_sthyi(2)               4.15          s390 only
440       s390_guarded_storage(2)     4.12          s390 only
441       sched_get_affinity(2)       2.6           Name of
442                                                 sched_getaffinity(2) on
443                                                 SPARC and SPARC64
444       sched_get_priority_max(2)   2.0
445       sched_get_priority_min(2)   2.0
446       sched_getaffinity(2)        2.6
447       sched_getattr(2)            3.14
448       sched_getparam(2)           2.0
449       sched_getscheduler(2)       2.0
450       sched_rr_get_interval(2)    2.0
451       sched_set_affinity(2)       2.6           Name of
452                                                 sched_setaffinity(2) on
453                                                 SPARC and SPARC64
454       sched_setaffinity(2)        2.6
455       sched_setattr(2)            3.14
456       sched_setparam(2)           2.0
457       sched_setscheduler(2)       2.0
458       sched_yield(2)              2.0
459       seccomp(2)                  3.17
460       select(2)                   1.0
461       semctl(2)                   2.0           See notes on ipc(2)
462
463       semget(2)                   2.0           See notes on ipc(2)
464       semop(2)                    2.0           See notes on ipc(2)
465       semtimedop(2)               2.6; 2.4.22
466       send(2)                     2.0           See notes on socketcall(2)
467       sendfile(2)                 2.2
468       sendfile64(2)               2.6; 2.4.19
469       sendmmsg(2)                 3.0
470       sendmsg(2)                  2.0           See notes on socketcall(2)
471       sendto(2)                   2.0           See notes on socketcall(2)
472       set_mempolicy(2)            2.6.6
473       set_robust_list(2)          2.6.17
474       set_thread_area(2)          2.6
475       set_tid_address(2)          2.6
476       set_tls(2)                  2.6.11        ARM OABI/EABI only
477                                                 (constant has __ARM_NR
478                                                 prefix)
479       setdomainname(2)            1.0
480       setfsgid(2)                 1.2
481       setfsgid32(2)               2.4
482       setfsuid(2)                 1.2
483       setfsuid32(2)               2.4
484       setgid(2)                   1.0
485       setgid32(2)                 2.4
486       setgroups(2)                1.0
487       setgroups32(2)              2.4
488       sethae(2)                   2.0           Alpha only; see NOTES
489       sethostname(2)              1.0
490       setitimer(2)                1.0
491       setns(2)                    3.0
492       setpgid(2)                  1.0
493       setpgrp(2)                  2.0           Alternative name for
494                                                 setpgid(2) on Alpha
495       setpriority(2)              1.0
496       setregid(2)                 1.0
497       setregid32(2)               2.4
498       setresgid(2)                2.2
499       setresgid32(2)              2.4
500       setresuid(2)                2.2
501       setresuid32(2)              2.4
502       setreuid(2)                 1.0
503       setreuid32(2)               2.4
504       setrlimit(2)                1.0
505       setsid(2)                   1.0
506       setsockopt(2)               2.0           See notes on socketcall(2)
507       settimeofday(2)             1.0
508       setuid(2)                   1.0
509       setuid32(2)                 2.4
510       setup(2)                    1.0           Removed in 2.2
511       setxattr(2)                 2.6; 2.4.18
512       sgetmask(2)                 1.0
513       shmat(2)                    2.0           See notes on ipc(2)
514       shmctl(2)                   2.0           See notes on ipc(2)
515       shmdt(2)                    2.0           See notes on ipc(2)
516       shmget(2)                   2.0           See notes on ipc(2)
517       shutdown(2)                 2.0           See notes on socketcall(2)
518       sigaction(2)                1.0
519       sigaltstack(2)              2.2
520       signal(2)                   1.0
521       signalfd(2)                 2.6.22
522       signalfd4(2)                2.6.27
523       sigpending(2)               1.0
524       sigprocmask(2)              1.0
525       sigreturn(2)                1.0
526       sigsuspend(2)               1.0
527       socket(2)                   2.0           See notes on socketcall(2)
528
529       socketcall(2)               1.0
530       socketpair(2)               2.0           See notes on socketcall(2)
531       spill(2)                    2.6.13        Xtensa only
532       splice(2)                   2.6.17
533       spu_create(2)               2.6.16        PowerPC/PowerPC64 only
534       spu_run(2)                  2.6.16        PowerPC/PowerPC64 only
535       ssetmask(2)                 1.0
536       stat(2)                     1.0
537       stat64(2)                   2.4
538       statfs(2)                   1.0
539       statfs64(2)                 2.6
540       statx(2)                    4.11
541       stime(2)                    1.0
542       subpage_prot(2)             2.6.25        PowerPC/PowerPC64 only
543       swapcontext(2)              2.6.3         PowerPC/PowerPC64 only
544       switch_endian(2)            4.1           PowerPC64 only
545       swapoff(2)                  1.0
546       swapon(2)                   1.0
547       symlink(2)                  1.0
548       symlinkat(2)                2.6.16
549       sync(2)                     1.0
550       sync_file_range(2)          2.6.17
551       sync_file_range2(2)         2.6.22
552       syncfs(2)                   2.6.39
553       sys_debug_setcontext(2)     2.6.11        PowerPC only
554       syscall(2)                  1.0           Still available on ARM OABI
555                                                 and MIPS O32 ABI
556       sysfs(2)                    1.2
557       sysinfo(2)                  1.0
558       syslog(2)                   1.0
559       sysmips(2)                  2.6.0         MIPS only
560       tee(2)                      2.6.17
561       tgkill(2)                   2.6
562       time(2)                     1.0
563       timer_create(2)             2.6
564       timer_delete(2)             2.6
565       timer_getoverrun(2)         2.6
566       timer_gettime(2)            2.6
567       timer_settime(2)            2.6
568       timerfd_create(2)           2.6.25
569       timerfd_gettime(2)          2.6.25
570       timerfd_settime(2)          2.6.25
571       times(2)                    1.0
572       tkill(2)                    2.6; 2.4.22
573       truncate(2)                 1.0
574       truncate64(2)               2.4
575       ugetrlimit(2)               2.4
576       umask(2)                    1.0
577       umount(2)                   1.0
578       umount2(2)                  2.2
579       uname(2)                    1.0
580       unlink(2)                   1.0
581       unlinkat(2)                 2.6.16
582       unshare(2)                  2.6.16
583       uselib(2)                   1.0
584       ustat(2)                    1.0
585       userfaultfd(2)              4.3
586       usr26(2)                    2.4.8.1       ARM OABI only
587       usr32(2)                    2.4.8.1       ARM OABI only
588       utime(2)                    1.0
589       utimensat(2)                2.6.22
590       utimes(2)                   2.2
591       utrap_install(2)            2.2           SPARC64 only
592       vfork(2)                    2.2
593       vhangup(2)                  1.0
594
595       vm86old(2)                  1.0           Was "vm86"; renamed in
596                                                 2.0.28/2.2
597       vm86(2)                     2.0.28; 2.2
598       vmsplice(2)                 2.6.17
599       wait4(2)                    1.0
600       waitid(2)                   2.6.10
601       waitpid(2)                  1.0
602       write(2)                    1.0
603       writev(2)                   2.0
604       xtensa(2)                   2.6.13        Xtensa only
605
606       On  many  platforms, including x86-32, socket calls are all multiplexed
607       (via glibc wrapper functions) through socketcall(2) and similarly  Sys‐
608       tem V IPC calls are multiplexed through ipc(2).
609
610       Although slots are reserved for them in the system call table, the fol‐
611       lowing system  calls  are  not  implemented  in  the  standard  kernel:
612       afs_syscall(2),   break(2),  ftime(2),  getpmsg(2),  gtty(2),  idle(2),
613       lock(2), madvise1(2), mpx(2), phys(2), prof(2), profil(2),  putpmsg(2),
614       security(2),  stty(2),  tuxcall(2), ulimit(2), and vserver(2) (see also
615       unimplemented(2)).  However, ftime(3), profil(3), and  ulimit(3)  exist
616       as  library  routines.   The  slot  for  phys(2) is in use since kernel
617       2.1.116  for  umount(2);  phys(2)  will  never  be  implemented.    The
618       getpmsg(2)  and  putpmsg(2)  calls  are  for kernels patched to support
619       STREAMS, and may never be in the standard kernel.
620
621       There was briefly set_zone_reclaim(2), added in Linux 2.6.13,  and  re‐
622       moved in 2.6.16; this system call was never available to user space.
623
624   System calls on removed ports
625       Some  system  calls  only ever existed on Linux architectures that have
626       since been removed from the kernel:
627
628       AVR32 (port removed in Linux 4.12)
629              * pread(2)
630              * pwrite(2)
631
632       Blackfin (port removed in Linux 4.17)
633              * bfin_spinlock(2) (added in Linux 2.6.22)
634              * dma_memcpy(2) (added in Linux 2.6.22)
635              * pread(2) (added in Linux 2.6.22)
636              * pwrite(2) (added in Linux 2.6.22)
637              * sram_alloc(2) (added in Linux 2.6.22)
638              * sram_free(2) (added in Linux 2.6.22)
639
640       Metag (port removed in Linux 4.17)
641              * metag_get_tls(2) (add in Linux 3.9)
642              * metag_set_fpu_flags(2) (add in Linux 3.9)
643              * metag_set_tls(2) (add in Linux 3.9)
644              * metag_setglobalbit(2) (add in Linux 3.9)
645
646       Tile (port removed in Linux 4.17)
647              * cmpxchg_badaddr(2) (added in Linux 2.6.36)
648

NOTES

650       Roughly speaking, the code belonging to the  system  call  with  number
651       __NR_xxx defined in /usr/include/asm/unistd.h can be found in the Linux
652       kernel source in the routine sys_xxx().   There  are  many  exceptions,
653       however,  mostly  because  older  system calls were superseded by newer
654       ones, and this has been treated somewhat  unsystematically.   On  plat‐
655       forms  with  proprietary  operating-system  emulation,  such  as sparc,
656       sparc64, and alpha, there are many additional system calls; mips64 also
657       contains a full set of 32-bit system calls.
658
659       Over  time,  changes  to  the interfaces of some system calls have been
660       necessary.  One reason for such changes was the need  to  increase  the
661       size of structures or scalar values passed to the system call.  Because
662       of these changes, certain architectures (notably,  longstanding  32-bit
663       architectures  such  as i386) now have various groups of related system
664       calls (e.g.,  truncate(2)  and  truncate64(2))  which  perform  similar
665       tasks,  but  which vary in details such as the size of their arguments.
666       (As noted earlier, applications are  generally  unaware  of  this:  the
667       glibc  wrapper  functions  do some work to ensure that the right system
668       call is invoked, and that ABI compatibility is preserved for old  bina‐
669       ries.)   Examples  of systems calls that exist in multiple versions are
670       the following:
671
672       *  By now there are three different  versions  of  stat(2):  sys_stat()
673          (slot    __NR_oldstat),    sys_newstat()   (slot   __NR_stat),   and
674          sys_stat64() (slot __NR_stat64), with the last being the  most  cur‐
675          rent.  A similar story applies for lstat(2) and fstat(2).
676
677       *  Similarly, the defines __NR_oldolduname, __NR_olduname, and __NR_un‐
678          ame refer to the routines sys_olduname(), sys_uname(), and sys_newu‐
679          name().
680
681       *  In  Linux  2.0,  a new version of vm86(2) appeared, with the old and
682          the new kernel routines being named sys_vm86old() and sys_vm86().
683
684       *  In Linux 2.4, a new version of getrlimit(2) appeared, with  the  old
685          and  the  new  kernel routines being named sys_old_getrlimit() (slot
686          __NR_getrlimit) and sys_getrlimit() (slot __NR_ugetrlimit).
687
688       *  Linux 2.4 increased the size of user and group IDs  from  16  to  32
689          bits.   To  support  this change, a range of system calls were added
690          (e.g., chown32(2), getuid32(2), getgroups32(2), setresuid32(2)), su‐
691          perseding earlier calls of the same name without the "32" suffix.
692
693       *  Linux  2.4 added support for applications on 32-bit architectures to
694          access large files (i.e., files for which the sizes and file offsets
695          can't  be represented in 32 bits.)  To support this change, replace‐
696          ments were required for system calls that deal with file offsets and
697          sizes.  Thus the following system calls were added: fcntl64(2), get‐
698          dents64(2), stat64(2), statfs64(2), truncate64(2), and their analogs
699          that  work  with  file  descriptors or symbolic links.  These system
700          calls supersede the older system calls which, except in the case  of
701          the "stat" calls, have the same name without the "64" suffix.
702
703          On  newer  platforms  that  only  have 64-bit file access and 32-bit
704          UIDs/GIDs (e.g., alpha, ia64, s390x, x86-64), there is just a single
705          version  of  the UID/GID and file access system calls.  On platforms
706          (typically, 32-bit platforms) where the *64 and *32 calls exist, the
707          other versions are obsolete.
708
709       *  The  rt_sig*  calls were added in kernel 2.2 to support the addition
710          of real-time signals (see signal(7)).  These system calls  supersede
711          the older system calls of the same name without the "rt_" prefix.
712
713       *  The  select(2)  and mmap(2) system calls use five or more arguments,
714          which caused problems in the way argument passing on the  i386  used
715          to be set up.  Thus, while other architectures have sys_select() and
716          sys_mmap() corresponding to __NR_select and __NR_mmap, on  i386  one
717          finds old_select() and old_mmap() (routines that use a pointer to an
718          argument block) instead.  These days passing five arguments is not a
719          problem  any  more,  and there is a __NR__newselect that corresponds
720          directly to sys_select() and similarly __NR_mmap2.  s390x is the on‐
721          ly 64-bit architecture that has old_mmap().
722
723   Architecture-specific details: Alpha
724       *  getxgid(2)  returns a pair of GID and effective GID via registers r0
725          and r20; it is provided instead of getgid(2) and getegid(2).
726
727       *  getxpid(2) returns a pair of PID and parent PID via registers r0 and
728          r20; it is provided instead of getpid(2) and getppid(2).
729
730       *  old_adjtimex(2)  is  a  variant  of  adjtimex(2)  that  uses  struct
731          timeval32, for compatibility with OSF/1.
732
733       *  getxuid(2) returns a pair of GID and effective GID via registers  r0
734          and r20; it is provided instead of getuid(2) and geteuid(2).
735
736       *  sethae(2)  is used for configuring the Host Address Extension regis‐
737          ter on low-cost Alphas in order to access address space beyond first
738          27 bits.
739

SEE ALSO

741       ausyscall(1) intro(2), syscall(2), unimplemented(2), errno(3), libc(7),
742       vdso(7)
743

COLOPHON

745       This page is part of release 5.13 of the Linux  man-pages  project.   A
746       description  of  the project, information about reporting bugs, and the
747       latest    version    of    this    page,    can     be     found     at
748       https://www.kernel.org/doc/man-pages/.
749
750
751
752Linux                             2021-08-27                       SYSCALLS(2)
Impressum