1syscalls(2)                   System Calls 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          Linux 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 Linux 1.1.x kernel version, and first appeared in
53          a 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 Linux 1.3.x kernel version, and first appeared in
59          a stable kernel with Linux 2.0.  (Development of the Linux 2.0  ker‐
60          nel  was  initiated  from  a branch of Linux 1.2.x, somewhere around
61          Linux 1.2.10, via the Linux 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 Linux 2.1.x kernel version, and first appeared in
65          a stable kernel with Linux 2.2.0.  (Development  of  the  Linux  2.2
66          kernel  was  initiated  from a branch of kernel Linux 2.0.21 via the
67          Linux 2.1.x unstable kernel series.)
68
69       •  Where a system call is marked "2.4" this means the system call prob‐
70          ably appeared in a Linux 2.3.x kernel version, and first appeared in
71          a stable kernel with Linux 2.4.0.  (Development  of  the  Linux  2.4
72          kernel  was  initiated  from  a  branch of Linux 2.2.8 via the Linux
73          2.3.x unstable kernel series.)
74
75       •  Where a system call is marked "2.6" this means the system call prob‐
76          ably appeared in a Linux 2.5.x kernel version, and first appeared in
77          a stable kernel with Linux 2.6.0.  (Development  of  Linux  2.6  was
78          initiated from a branch of Linux 2.4.15 via the Linux 2.5.x unstable
79          kernel series.)
80
81       •  Starting with Linux 2.6.0, the development model  changed,  and  new
82          system  calls may appear in each Linux 2.6.x release.  In this case,
83          the exact version number where the system call  appeared  is  shown.
84          This  convention  continues  with the Linux 3.x kernel series, which
85          followed on from Linux 2.6.39; and  the  Linux  4.x  kernel  series,
86          which  followed on from Linux 3.19; and the Linux 5.x kernel series,
87          which followed on from Linux 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 Linux 2.6.x were also backported into
93          a Linux 2.4.x release after Linux 2.4.15.  When this is so, the ver‐
94          sion  where the system call appeared in both of the major kernel se‐
95          ries is listed.
96
97       The list of system calls that are available as at Linux 5.14 (or  in  a
98       few cases only on older kernels) is as follows:
99
100       System call                 Kernel        Notes
101       ──────────────────────────────────────────────────────────────────────
102
103       _llseek(2)                  1.2
104       _newselect(2)               2.0
105       _sysctl(2)                  2.0           Removed in 5.5
106       accept(2)                   2.0           See notes on socketcall(2)
107       accept4(2)                  2.6.28
108       access(2)                   1.0
109       acct(2)                     1.0
110       add_key(2)                  2.6.10
111       adjtimex(2)                 1.0
112       alarm(2)                    1.0
113       alloc_hugepages(2)          2.5.36        Removed in 2.5.44
114       arc_gettls(2)               3.9           ARC only
115       arc_settls(2)               3.9           ARC only
116       arc_usr_cmpxchg(2)          4.9           ARC only
117       arch_prctl(2)               2.6           x86_64, x86 since 4.12
118       atomic_barrier(2)           2.6.34        m68k only
119       atomic_cmpxchg_32(2)        2.6.34        m68k only
120       bdflush(2)                  1.2           Deprecated  (does  nothing)
121                                                 since 2.6
122       bind(2)                     2.0           See notes on socketcall(2)
123       bpf(2)                      3.18
124       brk(2)                      1.0
125       breakpoint(2)               2.2           ARM OABI only, defined with
126                                                 __ARM_NR prefix
127       cacheflush(2)               1.2           Not on x86
128       capget(2)                   2.2
129       capset(2)                   2.2
130       chdir(2)                    1.0
131       chmod(2)                    1.0
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       lchown(2)                   1.0           See  chown(2)  for  version
292                                                 details
293       lchown32(2)                 2.4
294       lgetxattr(2)                2.6; 2.4.18
295       link(2)                     1.0
296       linkat(2)                   2.6.16
297       listen(2)                   2.0           See notes on socketcall(2)
298       listxattr(2)                2.6; 2.4.18
299       llistxattr(2)               2.6; 2.4.18
300       lookup_dcookie(2)           2.6
301       lremovexattr(2)             2.6; 2.4.18
302       lseek(2)                    1.0
303       lsetxattr(2)                2.6; 2.4.18
304       lstat(2)                    1.0
305       lstat64(2)                  2.4
306       madvise(2)                  2.4
307       mbind(2)                    2.6.6
308       memory_ordering(2)          2.2           SPARC64 only
309       membarrier(2)               3.17
310       memfd_create(2)             3.17
311       memfd_secret(2)             5.14
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  (con‐
477                                                 stant has __ARM_NR prefix)
478       setdomainname(2)            1.0
479       setfsgid(2)                 1.2
480       setfsgid32(2)               2.4
481       setfsuid(2)                 1.2
482       setfsuid32(2)               2.4
483       setgid(2)                   1.0
484       setgid32(2)                 2.4
485       setgroups(2)                1.0
486       setgroups32(2)              2.4
487       sethae(2)                   2.0           Alpha only; see NOTES
488       sethostname(2)              1.0
489       setitimer(2)                1.0
490       setns(2)                    3.0
491       setpgid(2)                  1.0
492       setpgrp(2)                  2.0           Alternative    name     for
493                                                 setpgid(2) on Alpha
494       setpriority(2)              1.0
495       setregid(2)                 1.0
496       setregid32(2)               2.4
497       setresgid(2)                2.2
498       setresgid32(2)              2.4
499       setresuid(2)                2.2
500       setresuid32(2)              2.4
501       setreuid(2)                 1.0
502       setreuid32(2)               2.4
503       setrlimit(2)                1.0
504       setsid(2)                   1.0
505       setsockopt(2)               2.0           See notes on socketcall(2)
506       settimeofday(2)             1.0
507       setuid(2)                   1.0
508       setuid32(2)                 2.4
509       setup(2)                    1.0           Removed in 2.2
510       setxattr(2)                 2.6; 2.4.18
511       sgetmask(2)                 1.0
512       shmat(2)                    2.0           See notes on ipc(2)
513       shmctl(2)                   2.0           See notes on ipc(2)
514       shmdt(2)                    2.0           See notes on ipc(2)
515       shmget(2)                   2.0           See notes on ipc(2)
516       shutdown(2)                 2.0           See notes on socketcall(2)
517       sigaction(2)                1.0
518       sigaltstack(2)              2.2
519       signal(2)                   1.0
520       signalfd(2)                 2.6.22
521       signalfd4(2)                2.6.27
522       sigpending(2)               1.0
523       sigprocmask(2)              1.0
524       sigreturn(2)                1.0
525       sigsuspend(2)               1.0
526       socket(2)                   2.0           See notes on socketcall(2)
527       socketcall(2)               1.0
528
529       socketpair(2)               2.0           See notes on socketcall(2)
530       spill(2)                    2.6.13        Xtensa only
531       splice(2)                   2.6.17
532       spu_create(2)               2.6.16        PowerPC/PowerPC64 only
533       spu_run(2)                  2.6.16        PowerPC/PowerPC64 only
534       ssetmask(2)                 1.0
535       stat(2)                     1.0
536       stat64(2)                   2.4
537       statfs(2)                   1.0
538       statfs64(2)                 2.6
539       statx(2)                    4.11
540       stime(2)                    1.0
541       subpage_prot(2)             2.6.25        PowerPC/PowerPC64 only
542       swapcontext(2)              2.6.3         PowerPC/PowerPC64 only
543       switch_endian(2)            4.1           PowerPC64 only
544       swapoff(2)                  1.0
545       swapon(2)                   1.0
546       symlink(2)                  1.0
547       symlinkat(2)                2.6.16
548       sync(2)                     1.0
549       sync_file_range(2)          2.6.17
550       sync_file_range2(2)         2.6.22
551       syncfs(2)                   2.6.39
552       sys_debug_setcontext(2)     2.6.11        PowerPC only
553       syscall(2)                  1.0           Still available on ARM OABI
554                                                 and MIPS O32 ABI
555       sysfs(2)                    1.2
556       sysinfo(2)                  1.0
557       syslog(2)                   1.0
558       sysmips(2)                  2.6.0         MIPS only
559       tee(2)                      2.6.17
560       tgkill(2)                   2.6
561       time(2)                     1.0
562       timer_create(2)             2.6
563       timer_delete(2)             2.6
564       timer_getoverrun(2)         2.6
565       timer_gettime(2)            2.6
566       timer_settime(2)            2.6
567       timerfd_create(2)           2.6.25
568       timerfd_gettime(2)          2.6.25
569       timerfd_settime(2)          2.6.25
570       times(2)                    1.0
571       tkill(2)                    2.6; 2.4.22
572       truncate(2)                 1.0
573       truncate64(2)               2.4
574       ugetrlimit(2)               2.4
575       umask(2)                    1.0
576       umount(2)                   1.0
577       umount2(2)                  2.2
578       uname(2)                    1.0
579       unlink(2)                   1.0
580       unlinkat(2)                 2.6.16
581       unshare(2)                  2.6.16
582       uselib(2)                   1.0
583       ustat(2)                    1.0
584       userfaultfd(2)              4.3
585       usr26(2)                    2.4.8.1       ARM OABI only
586       usr32(2)                    2.4.8.1       ARM OABI only
587       utime(2)                    1.0
588       utimensat(2)                2.6.22
589       utimes(2)                   2.2
590       utrap_install(2)            2.2           SPARC64 only
591       vfork(2)                    2.2
592       vhangup(2)                  1.0
593
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 Linux
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  Linux  2.6.16;  this system call was never available to user
623       space.
624
625   System calls on removed ports
626       Some system calls only ever existed on Linux  architectures  that  have
627       since been removed from the kernel:
628
629       AVR32 (port removed in Linux 4.12)
630pread(2)
631pwrite(2)
632
633       Blackfin (port removed in Linux 4.17)
634              •  bfin_spinlock(2) (added in Linux 2.6.22)
635              •  dma_memcpy(2) (added in Linux 2.6.22)
636pread(2) (added in Linux 2.6.22)
637pwrite(2) (added in Linux 2.6.22)
638              •  sram_alloc(2) (added in Linux 2.6.22)
639              •  sram_free(2) (added in Linux 2.6.22)
640
641       Metag (port removed in Linux 4.17)
642              •  metag_get_tls(2) (add in Linux 3.9)
643              •  metag_set_fpu_flags(2) (add in Linux 3.9)
644              •  metag_set_tls(2) (add in Linux 3.9)
645              •  metag_setglobalbit(2) (add in Linux 3.9)
646
647       Tile (port removed in Linux 4.17)
648              •  cmpxchg_badaddr(2) (added in Linux 2.6.36)
649

NOTES

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

SEE ALSO

747       ausyscall(1),   intro(2),   syscall(2),   unimplemented(2),   errno(3),
748       libc(7), vdso(7)
749
750
751
752Linux man-pages 6.05              2023-07-30                       syscalls(2)
Impressum