Provided by: manpages-ru-dev_4.26.0-1_all 

НАИМЕНОВАНИЕ
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, и с какой именно версии. Также заметим следующее:
• Where no kernel version is indicated, the system call appeared in Linux 1.0 or earlier.
• Where a system call is marked "1.2" this means the system call probably appeared in a Linux 1.1.x
kernel version, and first appeared in a stable kernel with 1.2. (Development of the Linux 1.2 kernel
was initiated from a branch of Linux 1.0.6 via the Linux 1.1.x unstable kernel series.)
• Where a system call is marked "2.0" this means the system call probably appeared in a Linux 1.3.x
kernel version, and first appeared in a stable kernel with Linux 2.0. (Development of the Linux 2.0
kernel was initiated from a branch of Linux 1.2.x, somewhere around Linux 1.2.10, via the Linux 1.3.x
unstable kernel series.)
• Where a system call is marked "2.2" this means the system call probably appeared in a Linux 2.1.x
kernel version, and first appeared in a stable kernel with Linux 2.2.0. (Development of the Linux 2.2
kernel was initiated from a branch of Linux 2.0.21 via the Linux 2.1.x unstable kernel series.)
• Where a system call is marked "2.4" this means the system call probably appeared in a Linux 2.3.x
kernel version, and first appeared in a stable kernel with Linux 2.4.0. (Development of the Linux 2.4
kernel was initiated from a branch of Linux 2.2.8 via the Linux 2.3.x unstable kernel series.)
• Where a system call is marked "2.6" this means the system call probably appeared in a Linux 2.5.x
kernel version, and first appeared in a stable kernel with Linux 2.6.0. (Development of Linux 2.6 was
initiated from a branch of Linux 2.4.15 via the Linux 2.5.x unstable kernel series.)
• Starting with Linux 2.6.0, the development model changed, and new system calls may appear in each
Linux 2.6.x release. In this case, the exact version number where the system call appeared is shown.
This convention continues with the Linux 3.x kernel series, which followed on from Linux 2.6.39; and
the Linux 4.x kernel series, which followed on from Linux 3.19; and the Linux 5.x kernel series, which
followed on from Linux 4.20; and the Linux 6.x kernel series, which followed on from Linux 5.19.
• In some cases, a system call was added to a stable kernel series after it branched from the previous
stable kernel series, and then backported into the earlier stable kernel series. For example some
system calls that appeared in Linux 2.6.x were also backported into a Linux 2.4.x release after Linux
2.4.15. When this is so, the version where the system call appeared in both of the major kernel
series is listed.
The list of system calls that are available as at Linux 5.14 (or in a few cases only on older kernels) is
as follows:
Системный вызов Ядро Примечания
───────────────────────────────────────────────────────────────────────
_llseek(2) 1.2
_newselect(2) 2.0
_sysctl(2) 2.0 удалён из Linux 5.5
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 Deprecated (does nothing)
since 2.6
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 See chown(2) for version
details
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
clone3(2) 5.3
close(2) 1.0
close_range(2) 5.9
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
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_pwait2(2) 5.11
epoll_wait(2) 2.6
eventfd(2) 2.6.22
eventfd2(2) 2.6.27
execv(2) 2.0 SPARC/SPARC64 only, for
compatibility with SunOS
execve(2) 1.0
execveat(2) 3.19
exit(2) 1.0
exit_group(2) 2.6
faccessat(2) 2.6.16
faccessat2(2) 5.8
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
fsconfig(2) 5.2
fsetxattr(2) 2.6; 2.4.18
fsmount(2) 5.2
fsopen(2) 5.2
fspick(2) 5.2
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 only, has __ARM_NR
prefix
getcpu(2) 2.6.19
getcwd(2) 2.2
getdents(2) 2.0
getdents64(2) 2.4
getdomainname(2) 2.2 SPARC, SPARC64; available as
osf_getdomainname(2) on
Alpha since Linux 2.0
getdtablesize(2) 2.0 SPARC (removed in 2.6.26),
available on Alpha as
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, was available on
SPARC up to Linux 2.6.26
getitimer(2) 1.0
getpeername(2) 2.0 смотрите замечания по
socketcall(2)
getpagesize(2) 2.0 Alpha, SPARC/SPARC64 only
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
io_uring_enter(2) 5.1
io_uring_register(2) 5.1
io_uring_setup(2) 5.1
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
landlock_add_rule(2) 5.13
landlock_create_ruleset(2) 5.13
landlock_restrict_self(2) 5.13
lchown(2) 1.0 See chown(2) for version
details
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
membarrier(2) 3.17
memfd_create(2) 3.17
memfd_secret(2) 5.14
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_mount(2) 5.2
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 Old variant of getrlimit(2)
that used a different value
for RLIM_INFINITY
oldfstat(2) 1.0
oldlstat(2) 1.0
oldolduname(2) 1.0
oldstat(2) 1.0
oldumount(2) 2.4.116 Name of the old umount(2)
syscall on Alpha
olduname(2) 1.0
open(2) 1.0
open_by_handle_at(2) 2.6.39
open_tree(2) 5.2
openat(2) 2.6.16
openat2(2) 5.6
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 Was perf_counter_open() in
2.6.31; renamed in 2.6.32
personality(2) 1.2
perfctr(2) 2.2 только на SPARC; удалён в
2.6.34
perfmonctl(2) 2.4 IA-64 only; removed in 5.10
pidfd_getfd(2) 5.6
pidfd_send_signal(2) 5.1
pidfd_open(2) 5.3
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
pread64(2) Added as "pread" in 2.2;
renamed "pread64" in 2.6
preadv(2) 2.6.30
preadv2(2) 4.6
prlimit64(2) 2.6.36
process_madvise(2) 5.10
process_vm_readv(2) 3.2
process_vm_writev(2) 3.2
pselect6(2) 2.6.16
ptrace(2) 1.0
pwrite64(2) Added as "pwrite" in 2.2;
renamed "pwrite64" in 2.6
pwritev(2) 2.6.30
pwritev2(2) 4.6
query_module(2) 2.2 удалён из Linux 2.6
quotactl(2) 1.0
quotactl_fd(2) 5.14
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 Name of sched_getaffinity(2)
on SPARC and 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 Name of sched_setaffinity(2)
on SPARC and 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 only (constant
has __ARM_NR prefix)
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 Alternative name for
setpgid(2) on 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
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
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 Still available on ARM OABI
and 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).
Although slots are reserved for them in the system call table, the following system calls are not
implemented in the standard kernel: 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), and vserver(2) (see also unimplemented(2)). However, ftime(3), profil(3), and ulimit(3)
exist as library routines. The slot for phys(2) is in use since Linux 2.1.116 for umount(2); phys(2)
will never be implemented. The getpmsg(2) and putpmsg(2) calls are for kernels patched to support
STREAMS, and may never be in the standard kernel.
There was briefly set_zone_reclaim(2), added in Linux 2.6.13, and removed in Linux 2.6.16; this system
call was never available to user space.
System calls on removed ports
Some system calls only ever existed on Linux architectures that have since been removed from the kernel:
AVR32 (port removed in Linux 4.12)
• pread(2)
• pwrite(2)
Blackfin (port removed in Linux 4.17)
• bfin_spinlock(2) (added in Linux 2.6.22)
• dma_memcpy(2) (added in Linux 2.6.22)
• pread(2) (added in Linux 2.6.22)
• pwrite(2) (added in Linux 2.6.22)
• sram_alloc(2) (added in Linux 2.6.22)
• sram_free(2) (added in Linux 2.6.22)
Metag (port removed in Linux 4.17)
• metag_get_tls(2) (add in Linux 3.9)
• metag_set_fpu_flags(2) (add in Linux 3.9)
• metag_set_tls(2) (add in Linux 3.9)
• metag_setglobalbit(2) (add in Linux 3.9)
Tile (port removed in Linux 4.17)
• cmpxchg_badaddr(2) (added in Linux 2.6.36)
ПРИМЕЧАНИЯ
Чаще всего, код системного вызова с номером __NR_xxx, определённого в /usr/include/asm/unistdh, можно
найти в исходном коде ядра Linux в функции sys_xxx(). Есть много исключений из этого правила, в основном
из-за того, что большинство старых системных вызовов заменена на новые, при чём без всякой системы. На
платформах с эмуляцией собственнических ОС, таких как sparc, sparc64 и alpha, существует много
дополнительных системных вызовов; для mips64 также есть полный набор 32-битных системных вызовов.
Over time, changes to the interfaces of some system calls have been necessary. One reason for such
changes was the need to increase the size of structures or scalar values passed to the system call.
Because of these changes, certain architectures (notably, longstanding 32-bit architectures such as i386)
now have various groups of related system calls (e.g., truncate(2) and truncate64(2)) which perform
similar tasks, but which vary in details such as the size of their arguments. (As noted earlier,
applications are generally unaware of this: the glibc wrapper functions do some work to ensure that the
right system call is invoked, and that ABI compatibility is preserved for old binaries.) Examples of
system calls that exist in multiple versions are the following:
• В настоящее время есть три различные версии stat(2): sys_stat() (место __NR_oldstat), sys_newstat()
(место __NR_stat) и sys_stat64() (место __NR_stat64), последняя используется в в данный момент.
Похожая ситуация с lstat(2) и fstat(2).
• Похожим образом определены __NR_oldolduname, __NR_olduname и __NR_uname для вызовов sys_olduname(),
sys_uname() и sys_newuname().
• В Linux 2.0 появилась новая версия vm86(2), новая и старая версии ядерных процедур называются
sys_vm86old() и sys_vm86().
• В Linux 2.4 появилась новая версия getrlimit(2) новая и старая версии ядерных процедур называются
sys_old_getrlimit() (место __NR_getrlimit) и sys_getrlimit() (место __NR_ugetrlimit).
• В Linux 2.4 увеличено размер поля ID пользователей и групп с 16 до 32 бит. Для поддержки этого
изменения добавлено несколько системных вызовов (например, chown32(2), getuid32(2), getgroups32(2),
setresuid32(2)), упраздняющих ранние вызовы с теми же именами, но без суффикса "32".
• В Linux 2.4 добавлена поддержка доступа к большим файлам (у которых размеры и смещения не умещаются в
32 бита) в приложениях на 32-битных архитектурах. Для этого потребовалось внести изменения в системные
вызовы, работающие с размерами и смещениями по файлам. Были добавлены следующие системные вызовы:
fcntl64(2), getdents64(2), stat64(2), statfs64(2), truncate64(2) и их аналоги, которые обрабатывают
файловые дескрипторы или символьные ссылки. Эти системные вызовы упраздняют старые системные вызовы,
которые, за исключением вызовов «stat», называются также, но не имеют суффикса «64».
На новых платформах, имеющих только 64-битный доступ к файлам и 32-битные UID/GID (например, alpha,
ia64, s390x, x86-64), есть только одна версия системных вызовов для UID/GID и файлового доступа. На
платформах (обычно это 32-битные платформы) где имеются *64 и *32 вызовы, другие версии устарели.
• The rt_sig* calls were added in Linux 2.2 to support the addition of real-time signals (see
signal(7)). These system calls supersede the older system calls of the same name without the "rt_"
prefix.
• В системных вызовах select(2) и mmap(2) используется пять или более аргументов, что вызывало проблемы
определения способа передачи аргументов на i386(). В следствии этого, тогда как на других архитектурах
вызовы sys_select() и sys_mmap() соответствуют __NR_select и __NR_mmap, на i386 они соответствуют
old_select() и old_mmap() (процедуры, использующие указатель на блок аргументов). В настоящее время
больше нет проблемы с передачей более пяти аргументов и есть __NR__newselect, который соответствует
именно sys_select() и тоже самое с __NR_mmap2. На s390x только 64-битная архитектура имеет old_mmap.
Специфика некоторых архитектур: Alpha
getxgid(2)
returns a pair of GID and effective GID via registers r0 and r20; it is provided instead of
getgid(2) and getegid(2).
getxpid(2)
returns a pair of PID and parent PID via registers r0 and r20; it is provided instead of getpid(2)
and getppid(2).
old_adjtimex(2)
is a variant of adjtimex(2) that uses struct timeval32, for compatibility with OSF/1.
getxuid(2)
returns a pair of GID and effective GID via registers r0 and r20; it is provided instead of
getuid(2) and geteuid(2).
sethae(2)
is used for configuring the Host Address Extension register on low-cost Alphas in order to access
address space beyond first 27 bits.
СМОТРИТЕ ТАКЖЕ
ausyscall(1), intro(2), syscall(2), unimplemented(2), errno(3), libc(7), vdso(7)
ПЕРЕВОД
Русский перевод этой страницы руководства разработал(и) Alexander Golubev <fatzer2@gmail.com>, Azamat
Hackimov <azamat.hackimov@gmail.com>, Hotellook, Nikita <zxcvbnm3230@mail.ru>, Spiros Georgaras
<sng@hellug.gr>, Vladislav <ivladislavefimov@gmail.com>, Yuri Kozlov <yuray@komyakino.ru>, Иван Павлов
<pavia00@gmail.com> и Kirill Rekhov <krekhov.dev@gmail.com>
Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной
лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или
более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.
Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом
разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских
переводчиков.
Справочные страницы Linux 6.9.1 2 мая 2024 г. syscalls(2)