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       lchown(2)                  1.0           See chown(2) for version
289                                                details
290       lchown32(2)                2.4
291       lgetxattr(2)               2.6; 2.4.18
292       link(2)                    1.0
293       linkat(2)                  2.6.16
294       listen(2)                  2.0           See notes on socketcall(2)
295       listxattr(2)               2.6; 2.4.18
296       llistxattr(2)              2.6; 2.4.18
297       lookup_dcookie(2)          2.6
298       lremovexattr(2)            2.6; 2.4.18
299       lseek(2)                   1.0
300       lsetxattr(2)               2.6; 2.4.18
301       lstat(2)                   1.0
302       lstat64(2)                 2.4
303       madvise(2)                 2.4
304       mbind(2)                   2.6.6
305       memory_ordering(2)         2.2           SPARC64 only
306       membarrier(2)              3.17
307       memfd_create(2)            3.17
308       migrate_pages(2)           2.6.16
309       mincore(2)                 2.4
310       mkdir(2)                   1.0
311       mkdirat(2)                 2.6.16
312       mknod(2)                   1.0
313       mknodat(2)                 2.6.16
314       mlock(2)                   2.0
315       mlock2(2)                  4.4
316       mlockall(2)                2.0
317       mmap(2)                    1.0
318       mmap2(2)                   2.4
319       modify_ldt(2)              1.0
320       mount(2)                   1.0
321       move_mount(2)              5.2
322       move_pages(2)              2.6.18
323       mprotect(2)                1.0
324       mq_getsetattr(2)           2.6.6
325       mq_notify(2)               2.6.6
326       mq_open(2)                 2.6.6
327       mq_timedreceive(2)         2.6.6
328       mq_timedsend(2)            2.6.6
329       mq_unlink(2)               2.6.6
330
331       mremap(2)                  2.0
332       msgctl(2)                  2.0           See notes on ipc(2)
333       msgget(2)                  2.0           See notes on ipc(2)
334       msgrcv(2)                  2.0           See notes on ipc(2)
335       msgsnd(2)                  2.0           See notes on ipc(2)
336       msync(2)                   2.0
337       munlock(2)                 2.0
338       munlockall(2)              2.0
339       munmap(2)                  1.0
340       name_to_handle_at(2)       2.6.39
341       nanosleep(2)               2.0
342       newfstatat(2)              2.6.16        See stat(2)
343       nfsservctl(2)              2.2           Removed in 3.1
344       nice(2)                    1.0
345       old_adjtimex(2)            2.0           Alpha only; see NOTES
346       old_getrlimit(2)           2.4           Old variant of getrlimit(2)
347                                                that used a different value
348                                                for RLIM_INFINITY
349       oldfstat(2)                1.0
350       oldlstat(2)                1.0
351       oldolduname(2)             1.0
352       oldstat(2)                 1.0
353       oldumount(2)               2.4.116       Name of the old umount(2)
354                                                syscall on Alpha
355       olduname(2)                1.0
356       open(2)                    1.0
357       open_by_handle_at(2)       2.6.39
358       open_tree(2)               5.2
359       openat(2)                  2.6.16
360       openat2(2)                 5.6
361       or1k_atomic(2)             3.1           OpenRISC 1000 only
362       pause(2)                   1.0
363       pciconfig_iobase(2)        2.2.15; 2.4   Not on x86
364       pciconfig_read(2)          2.0.26; 2.2   Not on x86
365       pciconfig_write(2)         2.0.26; 2.2   Not on x86
366       perf_event_open(2)         2.6.31        Was perf_counter_open() in
367                                                2.6.31; renamed in 2.6.32
368       personality(2)             1.2
369       perfctr(2)                 2.2           SPARC only; removed in
370                                                2.6.34
371       perfmonctl(2)              2.4           IA-64 only; removed in 5.10
372       pidfd_getfd(2)             5.6
373       pidfd_send_signal(2)       5.1
374       pidfd_open(2)              5.3
375       pipe(2)                    1.0
376       pipe2(2)                   2.6.27
377       pivot_root(2)              2.4
378       pkey_alloc(2)              4.8
379       pkey_free(2)               4.8
380       pkey_mprotect(2)           4.8
381       poll(2)                    2.0.36; 2.2
382       ppoll(2)                   2.6.16
383       prctl(2)                   2.2
384       pread64(2)                               Added as "pread" in 2.2;
385                                                renamed "pread64" in 2.6
386       preadv(2)                  2.6.30
387       preadv2(2)                 4.6
388       prlimit64(2)               2.6.36
389       process_madvise(2)         5.10
390       process_vm_readv(2)        3.2
391       process_vm_writev(2)       3.2
392       pselect6(2)                2.6.16
393       ptrace(2)                  1.0
394       pwrite64(2)                              Added as "pwrite" in 2.2;
395                                                renamed "pwrite64" in 2.6
396
397       pwritev(2)                 2.6.30
398       pwritev2(2)                4.6
399       query_module(2)            2.2           Removed in 2.6
400       quotactl(2)                1.0
401       read(2)                    1.0
402       readahead(2)               2.4.13
403       readdir(2)                 1.0
404       readlink(2)                1.0
405       readlinkat(2)              2.6.16
406       readv(2)                   2.0
407       reboot(2)                  1.0
408       recv(2)                    2.0           See notes on socketcall(2)
409       recvfrom(2)                2.0           See notes on socketcall(2)
410       recvmsg(2)                 2.0           See notes on socketcall(2)
411       recvmmsg(2)                2.6.33
412       remap_file_pages(2)        2.6           Deprecated since 3.16
413       removexattr(2)             2.6; 2.4.18
414       rename(2)                  1.0
415       renameat(2)                2.6.16
416       renameat2(2)               3.15
417       request_key(2)             2.6.10
418       restart_syscall(2)         2.6
419       riscv_flush_icache(2)      4.15          RISC-V only
420       rmdir(2)                   1.0
421       rseq(2)                    4.18
422       rt_sigaction(2)            2.2
423       rt_sigpending(2)           2.2
424       rt_sigprocmask(2)          2.2
425       rt_sigqueueinfo(2)         2.2
426       rt_sigreturn(2)            2.2
427       rt_sigsuspend(2)           2.2
428       rt_sigtimedwait(2)         2.2
429       rt_tgsigqueueinfo(2)       2.6.31
430       rtas(2)                    2.6.2         PowerPC/PowerPC64 only
431       s390_runtime_instr(2)      3.7           s390 only
432       s390_pci_mmio_read(2)      3.19          s390 only
433       s390_pci_mmio_write(2)     3.19          s390 only
434       s390_sthyi(2)              4.15          s390 only
435       s390_guarded_storage(2)    4.12          s390 only
436       sched_get_affinity(2)      2.6           Name of
437                                                sched_getaffinity(2) on
438                                                SPARC and SPARC64
439       sched_get_priority_max(2)  2.0
440       sched_get_priority_min(2)  2.0
441       sched_getaffinity(2)       2.6
442       sched_getattr(2)           3.14
443       sched_getparam(2)          2.0
444       sched_getscheduler(2)      2.0
445       sched_rr_get_interval(2)   2.0
446       sched_set_affinity(2)      2.6           Name of
447                                                sched_setaffinity(2) on
448                                                SPARC and SPARC64
449       sched_setaffinity(2)       2.6
450       sched_setattr(2)           3.14
451       sched_setparam(2)          2.0
452       sched_setscheduler(2)      2.0
453       sched_yield(2)             2.0
454       seccomp(2)                 3.17
455       select(2)                  1.0
456       semctl(2)                  2.0           See notes on ipc(2)
457       semget(2)                  2.0           See notes on ipc(2)
458       semop(2)                   2.0           See notes on ipc(2)
459       semtimedop(2)              2.6; 2.4.22
460       send(2)                    2.0           See notes on socketcall(2)
461       sendfile(2)                2.2
462
463       sendfile64(2)              2.6; 2.4.19
464       sendmmsg(2)                3.0
465       sendmsg(2)                 2.0           See notes on socketcall(2)
466       sendto(2)                  2.0           See notes on socketcall(2)
467       set_mempolicy(2)           2.6.6
468       set_robust_list(2)         2.6.17
469       set_thread_area(2)         2.6
470       set_tid_address(2)         2.6
471       set_tls(2)                 2.6.11        ARM OABI/EABI only
472                                                (constant has __ARM_NR
473                                                prefix)
474       setdomainname(2)           1.0
475       setfsgid(2)                1.2
476       setfsgid32(2)              2.4
477       setfsuid(2)                1.2
478       setfsuid32(2)              2.4
479       setgid(2)                  1.0
480       setgid32(2)                2.4
481       setgroups(2)               1.0
482       setgroups32(2)             2.4
483       sethae(2)                  2.0           Alpha only; see NOTES
484       sethostname(2)             1.0
485       setitimer(2)               1.0
486       setns(2)                   3.0
487       setpgid(2)                 1.0
488       setpgrp(2)                 2.0           Alternative name for
489                                                setpgid(2) on Alpha
490       setpriority(2)             1.0
491       setregid(2)                1.0
492       setregid32(2)              2.4
493       setresgid(2)               2.2
494       setresgid32(2)             2.4
495       setresuid(2)               2.2
496       setresuid32(2)             2.4
497       setreuid(2)                1.0
498       setreuid32(2)              2.4
499       setrlimit(2)               1.0
500       setsid(2)                  1.0
501       setsockopt(2)              2.0           See notes on socketcall(2)
502       settimeofday(2)            1.0
503       setuid(2)                  1.0
504       setuid32(2)                2.4
505       setup(2)                   1.0           Removed in 2.2
506       setxattr(2)                2.6; 2.4.18
507       sgetmask(2)                1.0
508       shmat(2)                   2.0           See notes on ipc(2)
509       shmctl(2)                  2.0           See notes on ipc(2)
510       shmdt(2)                   2.0           See notes on ipc(2)
511       shmget(2)                  2.0           See notes on ipc(2)
512       shutdown(2)                2.0           See notes on socketcall(2)
513       sigaction(2)               1.0
514       sigaltstack(2)             2.2
515       signal(2)                  1.0
516       signalfd(2)                2.6.22
517       signalfd4(2)               2.6.27
518       sigpending(2)              1.0
519       sigprocmask(2)             1.0
520       sigreturn(2)               1.0
521       sigsuspend(2)              1.0
522       socket(2)                  2.0           See notes on socketcall(2)
523       socketcall(2)              1.0
524       socketpair(2)              2.0           See notes on socketcall(2)
525       spill(2)                   2.6.13        Xtensa only
526       splice(2)                  2.6.17
527       spu_create(2)              2.6.16        PowerPC/PowerPC64 only
528
529       spu_run(2)                 2.6.16        PowerPC/PowerPC64 only
530       ssetmask(2)                1.0
531       stat(2)                    1.0
532       stat64(2)                  2.4
533       statfs(2)                  1.0
534       statfs64(2)                2.6
535       statx(2)                   4.11
536       stime(2)                   1.0
537       subpage_prot(2)            2.6.25        PowerPC/PowerPC64 only
538       swapcontext(2)             2.6.3         PowerPC/PowerPC64 only
539       switch_endian(2)           4.1           PowerPC64 only
540       swapoff(2)                 1.0
541       swapon(2)                  1.0
542       symlink(2)                 1.0
543       symlinkat(2)               2.6.16
544       sync(2)                    1.0
545       sync_file_range(2)         2.6.17
546       sync_file_range2(2)        2.6.22
547       syncfs(2)                  2.6.39
548       sys_debug_setcontext(2)    2.6.11        PowerPC only
549       syscall(2)                 1.0           Still available on ARM OABI
550                                                and MIPS O32 ABI
551       sysfs(2)                   1.2
552       sysinfo(2)                 1.0
553       syslog(2)                  1.0
554       sysmips(2)                 2.6.0         MIPS only
555       tee(2)                     2.6.17
556       tgkill(2)                  2.6
557       time(2)                    1.0
558       timer_create(2)            2.6
559       timer_delete(2)            2.6
560       timer_getoverrun(2)        2.6
561       timer_gettime(2)           2.6
562       timer_settime(2)           2.6
563       timerfd_create(2)          2.6.25
564       timerfd_gettime(2)         2.6.25
565       timerfd_settime(2)         2.6.25
566       times(2)                   1.0
567       tkill(2)                   2.6; 2.4.22
568       truncate(2)                1.0
569       truncate64(2)              2.4
570       ugetrlimit(2)              2.4
571       umask(2)                   1.0
572       umount(2)                  1.0
573       umount2(2)                 2.2
574       uname(2)                   1.0
575       unlink(2)                  1.0
576       unlinkat(2)                2.6.16
577       unshare(2)                 2.6.16
578       uselib(2)                  1.0
579       ustat(2)                   1.0
580       userfaultfd(2)             4.3
581       usr26(2)                   2.4.8.1       ARM OABI only
582       usr32(2)                   2.4.8.1       ARM OABI only
583       utime(2)                   1.0
584       utimensat(2)               2.6.22
585       utimes(2)                  2.2
586       utrap_install(2)           2.2           SPARC64 only
587       vfork(2)                   2.2
588       vhangup(2)                 1.0
589       vm86old(2)                 1.0           Was "vm86"; renamed in
590                                                2.0.28/2.2
591       vm86(2)                    2.0.28; 2.2
592       vmsplice(2)                2.6.17
593       wait4(2)                   1.0
594
595       waitid(2)                  2.6.10
596       waitpid(2)                 1.0
597       write(2)                   1.0
598       writev(2)                  2.0
599       xtensa(2)                  2.6.13        Xtensa only
600
601       On  many  platforms, including x86-32, socket calls are all multiplexed
602       (via glibc wrapper functions) through socketcall(2) and similarly  Sys‐
603       tem V IPC calls are multiplexed through ipc(2).
604
605       Although slots are reserved for them in the system call table, the fol‐
606       lowing system  calls  are  not  implemented  in  the  standard  kernel:
607       afs_syscall(2),   break(2),  ftime(2),  getpmsg(2),  gtty(2),  idle(2),
608       lock(2), madvise1(2), mpx(2), phys(2), prof(2), profil(2),  putpmsg(2),
609       security(2),  stty(2),  tuxcall(2), ulimit(2), and vserver(2) (see also
610       unimplemented(2)).  However, ftime(3), profil(3), and  ulimit(3)  exist
611       as  library  routines.   The  slot  for  phys(2) is in use since kernel
612       2.1.116  for  umount(2);  phys(2)  will  never  be  implemented.    The
613       getpmsg(2)  and  putpmsg(2)  calls  are  for kernels patched to support
614       STREAMS, and may never be in the standard kernel.
615
616       There was briefly set_zone_reclaim(2), added in Linux 2.6.13,  and  re‐
617       moved in 2.6.16; this system call was never available to user space.
618
619   System calls on removed ports
620       Some  system  calls  only ever existed on Linux architectures that have
621       since been removed from the kernel:
622
623       AVR32 (port removed in Linux 4.12)
624              * pread(2)
625              * pwrite(2)
626
627       Blackfin (port removed in Linux 4.17)
628              * bfin_spinlock(2) (added in Linux 2.6.22)
629              * dma_memcpy(2) (added in Linux 2.6.22)
630              * pread(2) (added in Linux 2.6.22)
631              * pwrite(2) (added in Linux 2.6.22)
632              * sram_alloc(2) (added in Linux 2.6.22)
633              * sram_free(2) (added in Linux 2.6.22)
634
635       Metag (port removed in Linux 4.17)
636              * metag_get_tls(2) (add in Linux 3.9)
637              * metag_set_fpu_flags(2) (add in Linux 3.9)
638              * metag_set_tls(2) (add in Linux 3.9)
639              * metag_setglobalbit(2) (add in Linux 3.9)
640
641       Tile (port removed in Linux 4.17)
642              * cmpxchg_badaddr(2) (added in Linux 2.6.36)
643

NOTES

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

SEE ALSO

736       ausyscall(1) intro(2), syscall(2), unimplemented(2), errno(3), libc(7),
737       vdso(7)
738

COLOPHON

740       This page is part of release 5.12 of the Linux  man-pages  project.   A
741       description  of  the project, information about reporting bugs, and the
742       latest    version    of    this    page,    can     be     found     at
743       https://www.kernel.org/doc/man-pages/.
744
745
746
747Linux                             2021-03-22                       SYSCALLS(2)
Impressum