| SYSCALLS(2) | Руководство программиста Linux | SYSCALLS(2) | 
syscalls - системные вызовы Linux
Системные вызовы Linux.
Системный вызов — это основной интерфейс между приложением и ядром Linux.
Обычно, системные вызовы не вызываются напрямую, это делается через обёрточную функцию из glibc (или другой библиотеки). Подробней о непосредственном вызове системного вызова, смотрите intro(2). Часто, но не всегда, имя обёрточной функции совпадает с именем системного вызова, который она вызывает. Например, в glibc есть функция chdir(), которая вызывает делающий всё работу системный вызов «chdir».
Часто, обёрточная функция glibc очень маленькая, она просто копирует аргументы в нужные регистры перед запуском системного вызова, а затем присваивает переменной errno значение, которое было возвращено системным вызовом. (Эти те же шаги выполняет syscall(2), её можно использовать для осуществления системных вызовов, для которых нет обёрточных функций.) Замечание: системные вызовы указывают, что произошла ошибка возвращая отрицательное целое число вызывающей стороне (если в архитектуре нет отдельного регистра/флага ошибки, смотрите syscall(2)); когда это происходит, обёрточная функция меняет знак у возвращённого значения (на положительный), копирует его в errno и возвращает -1 вызвавшей обёртку функции.
Иногда, однако, обёрточная функция производит дополнительную работу до осуществления системного вызова. Например, в настоящее время существует (по причинам, описанным далее) два похожих системных вызова — truncate(2) и truncate64(2); обёрточная функция glibc truncate() проверяет какой из системных вызовов предоставляет ядро и решает какой нужно задействовать.
Далее приведён список список системных вызовов Linux. В колонке Ядро указана версия ядра для системных вызовов, которые появились в Linux 2.2, и с какой именно версии. Также заметим следующее:
Список системных вызовов, доступных в ядре версии 4.19 (или, в некоторых случаях, только в более старых ядрах):
| System call | Kernel | Notes | 
| _llseek(2) | 1.2 | |
| _newselect(2) | 2.0 | |
| _sysctl(2) | 2.0 | |
| accept(2) | 2.0 | смотрите замечания по socketcall(2) | 
| accept4(2) | 2.6.28 | |
| access(2) | 1.0 | |
| acct(2) | 1.0 | |
| add_key(2) | 2.6.10 | |
| adjtimex(2) | 1.0 | |
| alarm(2) | 1.0 | |
| alloc_hugepages(2) | 2.5.36 | удалён из Linux 2.5.44 | 
| arc_gettls(2) | 3.9 | только на ARC | 
| arc_settls(2) | 3.9 | только на ARC | 
| arc_usr_cmpxchg(2) | 4.9 | только на ARC | 
| arch_prctl(2) | 2.6 | x86_64, x86 начиная с 4.12 | 
| atomic_barrier(2) | 2.6.34 | только на m68k | 
| atomic_cmpxchg_32(2) | 2.6.34 | только на m68k | 
| bdflush(2) | 1.2 | устарел (ничего не делает) начиная с 2.6 | 
| bfin_spinlock(2) | 2.6.22 | только на Blackfin (перенос удалён в Linux 4.17) | 
| bind(2) | 2.0 | смотрите замечания по socketcall(2) | 
| bpf(2) | 3.18 | |
| brk(2) | 1.0 | |
| breakpoint(2) | 2.2 | только в ARM OABI, определён с префиксом __ARM_NR | 
| cacheflush(2) | 1.2 | не для x86 | 
| capget(2) | 2.2 | |
| capset(2) | 2.2 | |
| chdir(2) | 1.0 | |
| chmod(2) | 1.0 | |
| chown(2) | 2.2 | смотрите в chown(2) подробности о версии | 
| chown32(2) | 2.4 | |
| chroot(2) | 1.0 | |
| clock_adjtime(2) | 2.6.39 | |
| clock_getres(2) | 2.6 | |
| clock_gettime(2) | 2.6 | |
| clock_nanosleep(2) | 2.6 | |
| clock_settime(2) | 2.6 | |
| clone2(2) | 2.4 | только на IA-64 | 
| clone(2) | 1.0 | |
| close(2) | 1.0 | |
| cmpxchg_badaddr(2) | 2.6.36 | только на Tile (перенос удалён в Linux 4.17) | 
| connect(2) | 2.0 | смотрите замечания по socketcall(2) | 
| copy_file_range(2) | 4.5 | |
| creat(2) | 1.0 | |
| create_module(2) | 1.0 | удалён из Linux 2.6 | 
| delete_module(2) | 1.0 | |
| dma_memcpy(2) | 2.6.22 | только на Blackfin (перенос удалён в Linux 4.17) | 
| dup(2) | 1.0 | |
| dup2(2) | 1.0 | |
| dup3(2) | 2.6.27 | |
| epoll_create(2) | 2.6 | |
| epoll_create1(2) | 2.6.27 | |
| epoll_ctl(2) | 2.6 | |
| epoll_pwait(2) | 2.6.19 | |
| epoll_wait(2) | 2.6 | |
| eventfd(2) | 2.6.22 | |
| eventfd2(2) | 2.6.27 | |
| execv(2) | 2.0 | только на SPARC/SPARC64, для совместимости с SunOS | 
| execve(2) | 1.0 | |
| execveat(2) | 3.19 | |
| exit(2) | 1.0 | |
| exit_group(2) | 2.6 | |
| faccessat(2) | 2.6.16 | |
| fadvise64(2) | 2.6 | |
| fadvise64_64(2) | 2.6 | |
| fallocate(2) | 2.6.23 | |
| fanotify_init(2) | 2.6.37 | |
| fanotify_mark(2) | 2.6.37 | |
| fchdir(2) | 1.0 | |
| fchmod(2) | 1.0 | |
| fchmodat(2) | 2.6.16 | |
| fchown(2) | 1.0 | |
| fchown32(2) | 2.4 | |
| fchownat(2) | 2.6.16 | |
| fcntl(2) | 1.0 | |
| fcntl64(2) | 2.4 | |
| fdatasync(2) | 2.0 | |
| fgetxattr(2) | 2.6; 2.4.18 | |
| finit_module(2) | 3.8 | |
| flistxattr(2) | 2.6; 2.4.18 | |
| flock(2) | 2.0 | |
| fork(2) | 1.0 | |
| free_hugepages(2) | 2.5.36 | удалён из Linux 2.5.44 | 
| fremovexattr(2) | 2.6; 2.4.18 | |
| fsetxattr(2) | 2.6; 2.4.18 | |
| fstat(2) | 1.0 | |
| fstat64(2) | 2.4 | |
| fstatat64(2) | 2.6.16 | |
| fstatfs(2) | 1.0 | |
| fstatfs64(2) | 2.6 | |
| fsync(2) | 1.0 | |
| ftruncate(2) | 1.0 | |
| ftruncate64(2) | 2.4 | |
| futex(2) | 2.6 | |
| futimesat(2) | 2.6.16 | |
| get_kernel_syms(2) | 1.0 | удалён из Linux 2.6 | 
| get_mempolicy(2) | 2.6.6 | |
| get_robust_list(2) | 2.6.17 | |
| get_thread_area(2) | 2.6 | |
| get_tls(2) | 4.15 | только в ARM OABI, есть префиксом __ARM_NR | 
| getcpu(2) | 2.6.19 | |
| getcwd(2) | 2.2 | |
| getdents(2) | 2.0 | |
| getdents64(2) | 2.4 | |
| getdomainname(2) | 2.2 | SPARC, SPARC64; доступен как osf_getdomainname(2) на Alpha начиная с Linux 2.0 | 
| getdtablesize(2) | 2.0 | SPARC (удалён в 2.6.26), доступен начиная с Linux 2.0 на Alpha как osf_getdtablesize(2) | 
| getegid(2) | 1.0 | |
| getegid32(2) | 2.4 | |
| geteuid(2) | 1.0 | |
| geteuid32(2) | 2.4 | |
| getgid(2) | 1.0 | |
| getgid32(2) | 2.4 | |
| getgroups(2) | 1.0 | |
| getgroups32(2) | 2.4 | |
| gethostname(2) | 2.0 | Alpha, был доступен на SPARC до Linux 2.6.26 | 
| getitimer(2) | 1.0 | |
| getpeername(2) | 2.0 | смотрите замечания по socketcall(2) | 
| getpagesize(2) | 2.0 | не для x86 | 
| getpgid(2) | 1.0 | |
| getpgrp(2) | 1.0 | |
| getpid(2) | 1.0 | |
| getppid(2) | 1.0 | |
| getpriority(2) | 1.0 | |
| getrandom(2) | 3.17 | |
| getresgid(2) | 2.2 | |
| getresgid32(2) | 2.4 | |
| getresuid(2) | 2.2 | |
| getresuid32(2) | 2.4 | |
| getrlimit(2) | 1.0 | |
| getrusage(2) | 1.0 | |
| getsid(2) | 2.0 | |
| getsockname(2) | 2.0 | смотрите замечания по socketcall(2) | 
| getsockopt(2) | 2.0 | смотрите замечания по socketcall(2) | 
| gettid(2) | 2.4.11 | |
| gettimeofday(2) | 1.0 | |
| getuid(2) | 1.0 | |
| getuid32(2) | 2.4 | |
| getunwind(2) | 2.4.8 | только IA-64; устарел | 
| getxattr(2) | 2.6; 2.4.18 | |
| getxgid(2) | 2.0 | только на Alpha; смотрите ЗАМЕЧАНИЯ | 
| getxpid(2) | 2.0 | только на Alpha; смотрите ЗАМЕЧАНИЯ | 
| getxuid(2) | 2.0 | только на Alpha; смотрите ЗАМЕЧАНИЯ | 
| init_module(2) | 1.0 | |
| inotify_add_watch(2) | 2.6.13 | |
| inotify_init(2) | 2.6.13 | |
| inotify_init1(2) | 2.6.27 | |
| inotify_rm_watch(2) | 2.6.13 | |
| io_cancel(2) | 2.6 | |
| io_destroy(2) | 2.6 | |
| io_getevents(2) | 2.6 | |
| io_pgetevents(2) | 4.18 | |
| io_setup(2) | 2.6 | |
| io_submit(2) | 2.6 | |
| ioctl(2) | 1.0 | |
| ioperm(2) | 1.0 | |
| iopl(2) | 1.0 | |
| ioprio_get(2) | 2.6.13 | |
| ioprio_set(2) | 2.6.13 | |
| ipc(2) | 1.0 | |
| kcmp(2) | 3.5 | |
| kern_features(2) | 3.7 | только на SPARC64 | 
| kexec_file_load(2) | 3.17 | |
| kexec_load(2) | 2.6.13 | |
| keyctl(2) | 2.6.10 | |
| kill(2) | 1.0 | |
| lchown(2) | 1.0 | смотрите в chown(2) подробности о версии | 
| lchown32(2) | 2.4 | |
| lgetxattr(2) | 2.6; 2.4.18 | |
| link(2) | 1.0 | |
| linkat(2) | 2.6.16 | |
| listen(2) | 2.0 | смотрите замечания по socketcall(2) | 
| listxattr(2) | 2.6; 2.4.18 | |
| llistxattr(2) | 2.6; 2.4.18 | |
| lookup_dcookie(2) | 2.6 | |
| lremovexattr(2) | 2.6; 2.4.18 | |
| lseek(2) | 1.0 | |
| lsetxattr(2) | 2.6; 2.4.18 | |
| lstat(2) | 1.0 | |
| lstat64(2) | 2.4 | |
| madvise(2) | 2.4 | |
| mbind(2) | 2.6.6 | |
| memory_ordering(2) | 2.2 | только на SPARC64 | 
| metag_get_tls(2) | 3.9 | только на Metag (перенос удалён в Linux 4.17) | 
| metag_set_fpu_flags(2) | 3.9 | только на Metag (перенос удалён в Linux 4.17) | 
| metag_set_tls(2) | 3.9 | только на Metag (перенос удалён в Linux 4.17) | 
| metag_setglobalbit(2) | 3.9 | только на Metag (перенос удалён в Linux 4.17) | 
| membarrier(2) | 3.17 | |
| memfd_create(2) | 3.17 | |
| migrate_pages(2) | 2.6.16 | |
| mincore(2) | 2.4 | |
| mkdir(2) | 1.0 | |
| mkdirat(2) | 2.6.16 | |
| mknod(2) | 1.0 | |
| mknodat(2) | 2.6.16 | |
| mlock(2) | 2.0 | |
| mlock2(2) | 4.4 | |
| mlockall(2) | 2.0 | |
| mmap(2) | 1.0 | |
| mmap2(2) | 2.4 | |
| modify_ldt(2) | 1.0 | |
| mount(2) | 1.0 | |
| move_pages(2) | 2.6.18 | |
| mprotect(2) | 1.0 | |
| mq_getsetattr(2) | 2.6.6 | |
| mq_notify(2) | 2.6.6 | |
| mq_open(2) | 2.6.6 | |
| mq_timedreceive(2) | 2.6.6 | |
| mq_timedsend(2) | 2.6.6 | |
| mq_unlink(2) | 2.6.6 | |
| mremap(2) | 2.0 | |
| msgctl(2) | 2.0 | смотрите замечания по ipc(2) | 
| msgget(2) | 2.0 | смотрите замечания по ipc(2) | 
| msgrcv(2) | 2.0 | смотрите замечания по ipc(2) | 
| msgsnd(2) | 2.0 | смотрите замечания по ipc(2) | 
| msync(2) | 2.0 | |
| munlock(2) | 2.0 | |
| munlockall(2) | 2.0 | |
| munmap(2) | 1.0 | |
| name_to_handle_at(2) | 2.6.39 | |
| nanosleep(2) | 2.0 | |
| newfstatat(2) | 2.6.16 | смотрите stat(2) | 
| nfsservctl(2) | 2.2 | удалён из Linux 3.1 | 
| nice(2) | 1.0 | |
| old_adjtimex(2) | 2.0 | только на Alpha; смотрите ЗАМЕЧАНИЯ | 
| old_getrlimit(2) | 2.4 | старый вариант getrlimit(2), использующий другое значение для RLIM_INFINITY | 
| oldfstat(2) | 1.0 | |
| oldlstat(2) | 1.0 | |
| oldolduname(2) | 1.0 | |
| oldstat(2) | 1.0 | |
| oldumount(2) | 2.4.116 | название старого umount(2) syscall на Alpha | 
| olduname(2) | 1.0 | |
| open(2) | 1.0 | |
| open_by_handle_at(2) | 2.6.39 | |
| openat(2) | 2.6.16 | |
| or1k_atomic(2) | 3.1 | только на OpenRISC 1000 | 
| pause(2) | 1.0 | |
| pciconfig_iobase(2) | 2.2.15; 2.4 | не для x86 | 
| pciconfig_read(2) | 2.0.26; 2.2 | не для x86 | 
| pciconfig_write(2) | 2.0.26; 2.2 | не для x86 | 
| perf_event_open(2) | 2.6.31 | был perf_counter_open() в 2.6.31; переименован в 2.6.32 | 
| personality(2) | 1.2 | |
| perfctr(2) | 2.2 | только на SPARC; удалён в 2.6.34 | 
| perfmonctl(2) | 2.4 | только на IA-64 | 
| pipe(2) | 1.0 | |
| pipe2(2) | 2.6.27 | |
| pivot_root(2) | 2.4 | |
| pkey_alloc(2) | 4.8 | |
| pkey_free(2) | 4.8 | |
| pkey_mprotect(2) | 4.8 | |
| poll(2) | 2.0.36; 2.2 | |
| ppoll(2) | 2.6.16 | |
| prctl(2) | 2.2 | |
| pread(2) | используется для pread64(2) на AVR32 (перенос удалён в Linux 4.12) и Blackfin (перенос удалён в Linux 4.17) | |
| pread64(2) | добавлен под именем «pread» в 2.2 переименован в «pread64» в 2.6 | |
| preadv(2) | 2.6.30 | |
| preadv2(2) | 4.6 | |
| prlimit64(2) | 2.6.36 | |
| process_vm_readv(2) | 3.2 | |
| process_vm_writev(2) | 3.2 | |
| pselect6(2) | 2.6.16 | |
| ptrace(2) | 1.0 | |
| pwrite(2) | используется для pwrite64(2) на AVR32 (перенос удалён в Linux 4.12) и Blackfin (перенос удалён в Linux 4.17) | |
| pwrite64(2) | добавлен под именем «pwrite» в 2.2 переименован в «pwrite64» в 2.6 | |
| pwritev(2) | 2.6.30 | |
| pwritev2(2) | 4.6 | |
| query_module(2) | 2.2 | удалён из Linux 2.6 | 
| quotactl(2) | 1.0 | |
| read(2) | 1.0 | |
| readahead(2) | 2.4.13 | |
| readdir(2) | 1.0 | |
| readlink(2) | 1.0 | |
| readlinkat(2) | 2.6.16 | |
| readv(2) | 2.0 | |
| reboot(2) | 1.0 | |
| recv(2) | 2.0 | смотрите замечания по socketcall(2) | 
| recvfrom(2) | 2.0 | смотрите замечания по socketcall(2) | 
| recvmsg(2) | 2.0 | смотрите замечания по socketcall(2) | 
| recvmmsg(2) | 2.6.33 | |
| remap_file_pages(2) | 2.6 | устарел начиная с 3.16 | 
| removexattr(2) | 2.6; 2.4.18 | |
| rename(2) | 1.0 | |
| renameat(2) | 2.6.16 | |
| renameat2(2) | 3.15 | |
| request_key(2) | 2.6.10 | |
| restart_syscall(2) | 2.6 | |
| riscv_flush_icache(2) | 4.15 | только на RISC-V | 
| rmdir(2) | 1.0 | |
| rseq(2) | 4.18 | |
| rt_sigaction(2) | 2.2 | |
| rt_sigpending(2) | 2.2 | |
| rt_sigprocmask(2) | 2.2 | |
| rt_sigqueueinfo(2) | 2.2 | |
| rt_sigreturn(2) | 2.2 | |
| rt_sigsuspend(2) | 2.2 | |
| rt_sigtimedwait(2) | 2.2 | |
| rt_tgsigqueueinfo(2) | 2.6.31 | |
| rtas(2) | 2.6.2 | только на PowerPC/PowerPC64 | 
| s390_runtime_instr(2) | 3.7 | только для s390 | 
| s390_pci_mmio_read(2) | 3.19 | только для s390 | 
| s390_pci_mmio_write(2) | 3.19 | только для s390 | 
| s390_sthyi(2) | 4.15 | только для s390 | 
| s390_guarded_storage(2) | 4.12 | только для s390 | 
| sched_get_affinity(2) | 2.6 | название sched_getaffinity(2) на SPARC и SPARC64 | 
| sched_get_priority_max(2) | 2.0 | |
| sched_get_priority_min(2) | 2.0 | |
| sched_getaffinity(2) | 2.6 | |
| sched_getattr(2) | 3.14 | |
| sched_getparam(2) | 2.0 | |
| sched_getscheduler(2) | 2.0 | |
| sched_rr_get_interval(2) | 2.0 | |
| sched_set_affinity(2) | 2.6 | название sched_setaffinity(2) на SPARC и SPARC64 | 
| sched_setaffinity(2) | 2.6 | |
| sched_setattr(2) | 3.14 | |
| sched_setparam(2) | 2.0 | |
| sched_setscheduler(2) | 2.0 | |
| sched_yield(2) | 2.0 | |
| seccomp(2) | 3.17 | |
| select(2) | 1.0 | |
| semctl(2) | 2.0 | смотрите замечания по ipc(2) | 
| semget(2) | 2.0 | смотрите замечания по ipc(2) | 
| semop(2) | 2.0 | смотрите замечания по ipc(2) | 
| semtimedop(2) | 2.6; 2.4.22 | |
| send(2) | 2.0 | смотрите замечания по socketcall(2) | 
| sendfile(2) | 2.2 | |
| sendfile64(2) | 2.6; 2.4.19 | |
| sendmmsg(2) | 3.0 | |
| sendmsg(2) | 2.0 | смотрите замечания по socketcall(2) | 
| sendto(2) | 2.0 | смотрите замечания по socketcall(2) | 
| set_mempolicy(2) | 2.6.6 | |
| set_robust_list(2) | 2.6.17 | |
| set_thread_area(2) | 2.6 | |
| set_tid_address(2) | 2.6 | |
| set_tls(2) | 2.6.11 | только в ARM OABI/EABI (константа с префиксом __ARM_NR) | 
| setdomainname(2) | 1.0 | |
| setfsgid(2) | 1.2 | |
| setfsgid32(2) | 2.4 | |
| setfsuid(2) | 1.2 | |
| setfsuid32(2) | 2.4 | |
| setgid(2) | 1.0 | |
| setgid32(2) | 2.4 | |
| setgroups(2) | 1.0 | |
| setgroups32(2) | 2.4 | |
| sethae(2) | 2.0 | только на Alpha; смотрите ЗАМЕЧАНИЯ | 
| sethostname(2) | 1.0 | |
| setitimer(2) | 1.0 | |
| setns(2) | 3.0 | |
| setpgid(2) | 1.0 | |
| setpgrp(2) | 2.0 | дополнительное имя для setpgid(2) на Alpha | 
| setpriority(2) | 1.0 | |
| setregid(2) | 1.0 | |
| setregid32(2) | 2.4 | |
| setresgid(2) | 2.2 | |
| setresgid32(2) | 2.4 | |
| setresuid(2) | 2.2 | |
| setresuid32(2) | 2.4 | |
| setreuid(2) | 1.0 | |
| setreuid32(2) | 2.4 | |
| setrlimit(2) | 1.0 | |
| setsid(2) | 1.0 | |
| setsockopt(2) | 2.0 | смотрите замечания по socketcall(2) | 
| settimeofday(2) | 1.0 | |
| setuid(2) | 1.0 | |
| setuid32(2) | 2.4 | |
| setup(2) | 1.0 | удалён в 2.2 | 
| setxattr(2) | 2.6; 2.4.18 | |
| sgetmask(2) | 1.0 | |
| shmat(2) | 2.0 | смотрите замечания по ipc(2) | 
| shmctl(2) | 2.0 | смотрите замечания по ipc(2) | 
| shmdt(2) | 2.0 | смотрите замечания по ipc(2) | 
| shmget(2) | 2.0 | смотрите замечания по ipc(2) | 
| shutdown(2) | 2.0 | смотрите замечания по socketcall(2) | 
| sigaction(2) | 1.0 | |
| sigaltstack(2) | 2.2 | |
| signal(2) | 1.0 | |
| signalfd(2) | 2.6.22 | |
| signalfd4(2) | 2.6.27 | |
| sigpending(2) | 1.0 | |
| sigprocmask(2) | 1.0 | |
| sigreturn(2) | 1.0 | |
| sigsuspend(2) | 1.0 | |
| socket(2) | 2.0 | смотрите замечания по socketcall(2) | 
| socketcall(2) | 1.0 | |
| socketpair(2) | 2.0 | смотрите замечания по socketcall(2) | 
| spill(2) | 2.6.13 | только на Xtensa | 
| splice(2) | 2.6.17 | |
| spu_create(2) | 2.6.16 | только на PowerPC/PowerPC64 | 
| spu_run(2) | 2.6.16 | только на PowerPC/PowerPC64 | 
| sram_alloc(2) | 2.6.22 | Blackfin (перенос удалён в Linux 4.17) | 
| sram_free(2) | 2.6.22 | Blackfin (перенос удалён в Linux 4.17) | 
| ssetmask(2) | 1.0 | |
| stat(2) | 1.0 | |
| stat64(2) | 2.4 | |
| statfs(2) | 1.0 | |
| statfs64(2) | 2.6 | |
| statx(2) | 4.11 | |
| stime(2) | 1.0 | |
| subpage_prot(2) | 2.6.25 | только на PowerPC/PowerPC64 | 
| swapcontext(2) | 2.6.3 | только на PowerPC/PowerPC64 | 
| switch_endian(2) | 4.1 | только для PowerPC64 | 
| swapcontext(2) | 2.6.3 | только для PowerPC | 
| swapoff(2) | 1.0 | |
| swapon(2) | 1.0 | |
| symlink(2) | 1.0 | |
| symlinkat(2) | 2.6.16 | |
| sync(2) | 1.0 | |
| sync_file_range(2) | 2.6.17 | |
| sync_file_range2(2) | 2.6.22 | |
| syncfs(2) | 2.6.39 | |
| sys_debug_setcontext(2) | 2.6.11 | только для PowerPC | 
| syscall(2) | 1.0 | ещё доступен в ARM OABI и MIPS O32 ABI | 
| sysfs(2) | 1.2 | |
| sysinfo(2) | 1.0 | |
| syslog(2) | 1.0 | |
| sysmips(2) | 2.6.0 | только на MIPS | 
| tee(2) | 2.6.17 | |
| tgkill(2) | 2.6 | |
| time(2) | 1.0 | |
| timer_create(2) | 2.6 | |
| timer_delete(2) | 2.6 | |
| timer_getoverrun(2) | 2.6 | |
| timer_gettime(2) | 2.6 | |
| timer_settime(2) | 2.6 | |
| timerfd_create(2) | 2.6.25 | |
| timerfd_gettime(2) | 2.6.25 | |
| timerfd_settime(2) | 2.6.25 | |
| times(2) | 1.0 | |
| tkill(2) | 2.6; 2.4.22 | |
| truncate(2) | 1.0 | |
| truncate64(2) | 2.4 | |
| ugetrlimit(2) | 2.4 | |
| umask(2) | 1.0 | |
| umount(2) | 1.0 | |
| umount2(2) | 2.2 | |
| uname(2) | 1.0 | |
| unlink(2) | 1.0 | |
| unlinkat(2) | 2.6.16 | |
| unshare(2) | 2.6.16 | |
| uselib(2) | 1.0 | |
| ustat(2) | 1.0 | |
| userfaultfd(2) | 4.3 | |
| usr26(2) | 2.4.8.1 | только в ARM OABI | 
| usr32(2) | 2.4.8.1 | только в ARM OABI | 
| utime(2) | 1.0 | |
| utimensat(2) | 2.6.22 | |
| utimes(2) | 2.2 | |
| utrap_install(2) | 2.2 | только на SPARC64 | 
| vfork(2) | 2.2 | |
| vhangup(2) | 1.0 | |
| vm86old(2) | 1.0 | ранее «vm86»; переименован в 2.0.28/2.2 | 
| vm86(2) | 2.0.28; 2.2 | |
| vmsplice(2) | 2.6.17 | |
| wait4(2) | 1.0 | |
| waitid(2) | 2.6.10 | |
| waitpid(2) | 1.0 | |
| write(2) | 1.0 | |
| writev(2) | 2.0 | |
| xtensa(2) | 2.6.13 | только на Xtensa | 
Для многих платформ, включая x86-32, все сокетные вызовы мультиплексируются (с помощью обёрточных функций glibc) через socketcall(2), а подобные IPC вызовы System V мультиплексируются через ipc(2).
Хотя для них и зарезервированы места в таблице системных вызовов, следующие системные вызовы не реализованы в стандартном ядре: afs_syscall(2), break(2), ftime(2), getpmsg(2), gtty(2), idle(2), lock(2), madvise1(2), mpx(2), phys(2), prof(2), profil(2), putpmsg(2), security(2), stty(2), tuxcall(2), ulimit(2) и vserver(2) (см. также unimplemented(2)). Однако ftime(3), profil(3) и ulimit(3) есть среди библиотечных функций. Место для phys(2) занято начиная с ядра 2.1.116 под umount(2); phys(2) никогда не будет реализован. Вызовы getpmsg(2) и putpmsg(2) есть в ядрах с заплатами, обеспечивающими поддержку STREAMS, и могут никогда не появиться в стандартном ядре.
На короткое время появлялся set_zone_reclaim(2), добавленный в Linux 2.6.13 и удалённый в 2.6.16; данный системный вызов никогда не был доступен из пользовательского пространства.
Чаще всего, код системного вызова с номером __NR_xxx, определённого в /usr/include/asm/unistd.h, можно найти в исходном коде ядра Linux в функции sys_xxx() (таблицу вызовов для i386 можно найти в /usr/src/linux/arch/i386/kernel/entry.S). Есть много исключений из этого правила, в основном из-за того, что большинство старых системных вызовов заменена на новые, при чём без всякой системы. На платформах с эмуляцией собственнических ОС, таких как sparc, sparc64 и alpha, существует много дополнительных системных вызовов; для mips64 также есть полный набор 32-битных системных вызовов.
С течением времени при необходимости происходили изменения в интерфейсе некоторых системных вызовов. Одной из причин таких изменений была необходимость увеличения размера структур или скалярных значений передаваемых системному вызову. Из-за этих изменений на некоторых архитектурах (а именно на старых 32-битных i386) появились различные группы похожих системных вызовов (например, truncate(2) и truncate64(2)), которые выполняют одинаковые задачи, но отличаются размером своих аргументов. (Как уже отмечалось, на приложения это не влияет: обёрточные функции glibc выполняют некоторые действия по запуску правильного системного вызова, и это обеспечивает совместимость по ABI для старых двоичных файлов.) Примеры системных вызовов, у которых есть несколько версий:
intro(2), syscall(2), unimplemented(2), errno(3), libc(7), vdso(7)
| 2019-03-06 | Linux |