Provided by: manpages-pl-dev_4.27.0-1_all 

NAZWA
syscalls - linuksowe wywołania systemowe
SKŁADNIA
Linuksowe wywołania systemowe.
OPIS
Wywołanie systemowe jest podstawowym interfejsem pomiędzy aplikacją a jądrem Linux.
Wywołania systemowe i biblioteczne funkcje opakowujące
Wywołania systemowe nie są zwykle wywoływane bezpośrednio, lecz za pośrednictwem funkcji opakowujących
glibc (lub jakiejś innej biblioteki). Szczegóły na temat bezpośredniego przywoływania wywołań systemowych
opisano w podręczniku intro(2). Często, lecz nie zawsze, nazwa funkcji opakowującej jest taka sama, jak
przywoływanego przez nią wywołania systemowego. Przykładowo glibc zawiera funkcję chdir() przywołującą
wywołanie systemowe „chdir”.
Funkcja opakowująca glibc jest często skromna, nie robiąc wiele poza skopiowaniem argumentów do
prawidłowych rejestrów przed wywołaniem wywołania systemowego, a potem ustawiając odpowiednio errno po
powrocie wywołania systemowego (te same kroki są wykonywane przez syscall(2), które może służyć do
przywoływania wywołań systemowych, które nie posiadają funkcji opakowujących). Uwaga: wywołanie systemowe
zgłasza niepowodzenie, zwracając ujemny numer błędu do wywołującego, na architekturach które nie
posiadają odrębnej flagi/rejestru błędów, jak to opisano w syscall(2); gdy tak się stanie, funkcja
opakowująca zmienia znak zwracanego numeru błędu (staje się on dodatni), kopiuje go do errno i zwraca -1
do wywołującego funkcję opakowującą.
Czasem jednak, funkcja opakowująca wykonuje dodatkową pracę przed przywołaniem wywołania systemowego. Na
przykład, istnieją obecnie (z powodów opisanych niżej) dwa spokrewnione wywołania systemowe: truncate(2)
i truncate64(2), a funkcja opakowująca glibc truncate() sprawdza, które z nich jest zapewnione przez
jądro i określa, którego należy użyć.
Lista wywołań systemowych
Poniżej przedstawiono listę linuksowych wywołań systemowych. Kolumna Jądro wskazuje wersję jądra w
przypadku wywołań, które pojawiły się w Linuksie 2.2 lub później. Proszę odnotować, że:
• Jeśli nie wskazano wersji jądra, wywołanie systemowe pojawiło się w Linuksie 1.0 lub wcześniej.
• Jeśli wywołanie systemowe oznaczono wersją „1.2” oznacza to, że wywołanie systemowe prawdopodobnie
pojawiło się w wersji jądra Linux 1.1.x, czyli pierwszą wersją stabilną z danym wywołaniem była wersja
1.2 (rozwój Linuksa 1.2 rozpoczął się od odgałęzienia od wersji 1.0.6 Linuksa i trwał w ramach
niestabilnej serii jąder Linux 1.1.x).
• Jeśli wywołanie systemowe oznaczono wersją „2.0” oznacza to, że wywołanie systemowe prawdopodobnie
pojawiło się w wersji jądra Linux 1.3.x, czyli pierwszą wersją stabilną z danym wywołaniem była wersja
2.0 (rozwój Linuksa 2.0 rozpoczął się od odgałęzienia od wersji 1.2.x, gdzieś w okolicach wersji
1.2.10 Linuksa, i trwał w ramach niestabilnej serii jąder Linux 1.3.x).
• Jeśli wywołanie systemowe oznaczono wersją „2.2” oznacza to, że wywołanie systemowe prawdopodobnie
pojawiło się w wersji jądra Linux 2.1.x, czyli pierwszą wersją stabilną z danym wywołaniem była wersja
2.2.0 (rozwój Linuksa 2.2 rozpoczął się od odgałęzienia od wersji 2.0.21 Linuksa i trwał w ramach
niestabilnej serii jąder Linux 2.1.x).
• Jeśli wywołanie systemowe oznaczono wersją „2.4” oznacza to, że wywołanie systemowe prawdopodobnie
pojawiło się w wersji jądra Linux 2.3.x, czyli pierwszą wersją stabilną z danym wywołaniem była wersja
2.4.0 (rozwój Linuksa 2.4 rozpoczął się od odgałęzienia od wersji 2.2.8 Linuksa i trwał w ramach
niestabilnej serii jąder Linux 2.3.x).
• Jeśli wywołanie systemowe oznaczono wersją „2.6” oznacza to, że wywołanie systemowe prawdopodobnie
pojawiło się w wersji jądra Linux 2.5.x, czyli pierwszą wersją stabilną z danym wywołaniem była wersja
2.6.0 (rozwój Linuksa 2.6 rozpoczął się od odgałęzienia od wersji 2.4.15 Linuksa i trwał w ramach
niestabilnej serii jąder Linux 2.5.x).
• Od wersji Linuksa 2.6.0, model rozwoju zmienił się, a nowe wywołania systemowe mogą pojawiać się w
każdym wydaniu Linuksa 2.6.x. W takim przypadku podana jest dokładna wersja, w której pojawiło się
dane wywołanie systemowe. Tę konwencję stosuje się również: w serii jąder Linux 3.x, która rozpoczęła
się po Linuksie 2.6.39; w serii jąder Linux 4.x, która rozpoczęła się po Linuksie 3.19; w serii jąder
Linux 5.x, która rozpoczęła się po Linuksie 4.20; w serii jąder Linux 6.x, która rozpoczęła się po
Linuksie 5.19.
• W niektórych sytuacjach, wywołanie systemowe dodano do stabilnej serii jąder po jej odgałęzieniu z
poprzedniej stabilnej serii jąder, a następnie przeportowano do wcześniejszej stabilnej serii jąder.
Na przykład część wywołań systemowych, które pojawiły się w Linuksie 2.6.x przeportowano również do
wydania Linux 2.4.x po Linuksie 2.4.15. W takim przypadku, podane są wersje z obu głównych serii
jąder, w których pojawiło się dane wywołanie.
Lista wywołań systemowych dostępnych w Linuksie 5.14 (w kilku przypadkach tylko na starszych jądrach)
jest następująca:
Wywołanie systemowe Jądro Uwagi
───────────────────────────────────────────────────────────────────────
_llseek(2) 1.2
_newselect(2) 2.0
_sysctl(2) 2.0 Usunięte w 5.5
accept(2) 2.0 Zob. uwagi w 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 Usunięte w 2.5.44
arc_gettls(2) 3.9 Tylko ARC
arc_settls(2) 3.9 Tylko ARC
arc_usr_cmpxchg(2) 4.9 Tylko ARC
arch_prctl(2) 2.6 x86_64, x86 od 4.12
atomic_barrier(2) 2.6.34 Tylko m68k
atomic_cmpxchg_32(2) 2.6.34 Tylko m68k
bdflush(2) 1.2 Przestarzałe (nieaktywne) od
2.6
bind(2) 2.0 Zob. uwagi w socketcall(2)
bpf(2) 3.18
brk(2) 1.0
breakpoint(2) 2.2 Tylko OABI ARM, zdefiniowane
z przedrostkiem __ARM_NR
cacheflush(2) 1.2 Nie na x86
capget(2) 2.2
capset(2) 2.2
chdir(2) 1.0
chmod(2) 1.0
chown(2) 2.2 Wersje opisano szczegół. w
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 Tylko IA-64
clone(2) 1.0
clone3(2) 5.3
close(2) 1.0
close_range(2) 5.9
connect(2) 2.0 Zob. uwagi w socketcall(2)
copy_file_range(2) 4.5
creat(2) 1.0
create_module(2) 1.0 Usunięte w 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 Tylko SPARC/SPARC64, ze
wzgl. na kompat. z 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 Usunięte w 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 Usunięte w 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 Tylko OABI ARM, z
przedrostkiem __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; dost. jako
osf_getdomainname(2) na
Alpha od Linuksa 2.0
getdtablesize(2) 2.0 SPARC (usunięte w 2.6.26),
dostępne na Alpha jako
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, było dost. na SPARC
do Linuksa 2.6.26
getitimer(2) 1.0
getpeername(2) 2.0 Zob. uwagi w socketcall(2)
getpagesize(2) 2.0 Tylko Alpha, SPARC/SPARC64
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 Zob. uwagi w socketcall(2)
getsockopt(2) 2.0 Zob. uwagi w socketcall(2)
gettid(2) 2.4.11
gettimeofday(2) 1.0
getuid(2) 1.0
getuid32(2) 2.4
getunwind(2) 2.4.8 Tylko IA-64; przestarzałe
getxattr(2) 2.6; 2.4.18
getxgid(2) 2.0 Tylko Alpha; zob. UWAGI
getxpid(2) 2.0 Tylko Alpha; zob. UWAGI
getxuid(2) 2.0 Tylko Alpha; zob. UWAGI
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 Tylko 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 Wersje opisano szczegół. w
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 Zob. uwagi w 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 Tylko 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 Zob. uwagi w ipc(2)
msgget(2) 2.0 Zob. uwagi w ipc(2)
msgrcv(2) 2.0 Zob. uwagi w ipc(2)
msgsnd(2) 2.0 Zob. uwagi w 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 Zob. stat(2)
nfsservctl(2) 2.2 Usunięte w 3.1
nice(2) 1.0
old_adjtimex(2) 2.0 Tylko Alpha; zob. UWAGI
old_getrlimit(2) 2.4 Stary wariant getrlimit(2)
używający innej wartości
RLIM_INFINITY
oldfstat(2) 1.0
oldlstat(2) 1.0
oldolduname(2) 1.0
oldstat(2) 1.0
oldumount(2) 2.4.116 Nazwa starego umount(2)
wywołania syst. na 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 Tylko OpenRISC 1000
pause(2) 1.0
pciconfig_iobase(2) 2.2.15; 2.4 Nie na x86
pciconfig_read(2) 2.0.26; 2.2 Nie na x86
pciconfig_write(2) 2.0.26; 2.2 Nie na x86
perf_event_open(2) 2.6.31 Wcześniej
perf_counter_open() w
2.6.31; nowa nazwa w 2.6.32
personality(2) 1.2
perfctr(2) 2.2 Tylko SPARC; usunięte w
2.6.34
perfmonctl(2) 2.4 Tylko IA-64; usunięte w 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) Dodane jako „pread” 2.2;
nowa nazwa „pread64” w 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) Dodane jako „pwrite” w 2.2;
nowa nazwa „pwrite64” w 2.6
pwritev(2) 2.6.30
pwritev2(2) 4.6
query_module(2) 2.2 Usunięte w 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 Zob. uwagi w socketcall(2)
recvfrom(2) 2.0 Zob. uwagi w socketcall(2)
recvmsg(2) 2.0 Zob. uwagi w socketcall(2)
recvmmsg(2) 2.6.33
remap_file_pages(2) 2.6 Przestarzałe od 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 Tylko 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 Tylko PowerPC/PowerPC64
s390_runtime_instr(2) 3.7 Tylko s390
s390_pci_mmio_read(2) 3.19 Tylko s390
s390_pci_mmio_write(2) 3.19 Tylko s390
s390_sthyi(2) 4.15 Tylko s390
s390_guarded_storage(2) 4.12 Tylko s390
sched_get_affinity(2) 2.6 Nazwa sched_getaffinity(2)
na SPARC i 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 Nazwa sched_setaffinity(2)
na SPARC i 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 Zob. uwagi w ipc(2)
semget(2) 2.0 Zob. uwagi w ipc(2)
semop(2) 2.0 Zob. uwagi w ipc(2)
semtimedop(2) 2.6; 2.4.22
send(2) 2.0 Zob. uwagi w socketcall(2)
sendfile(2) 2.2
sendfile64(2) 2.6; 2.4.19
sendmmsg(2) 3.0
sendmsg(2) 2.0 Zob. uwagi w socketcall(2)
sendto(2) 2.0 Zob. uwagi w 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 Tylko OABI/EABI ARM (stała
ma przedrostek __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 Tylko Alpha; zob. UWAGI
sethostname(2) 1.0
setitimer(2) 1.0
setns(2) 3.0
setpgid(2) 1.0
setpgrp(2) 2.0 Inna nazwa setpgid(2) na
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 Zob. uwagi w socketcall(2)
settimeofday(2) 1.0
setuid(2) 1.0
setuid32(2) 2.4
setup(2) 1.0 Usunięte w 2.2
setxattr(2) 2.6; 2.4.18
sgetmask(2) 1.0
shmat(2) 2.0 Zob. uwagi w ipc(2)
shmctl(2) 2.0 Zob. uwagi w ipc(2)
shmdt(2) 2.0 Zob. uwagi w ipc(2)
shmget(2) 2.0 Zob. uwagi w ipc(2)
shutdown(2) 2.0 Zob. uwagi w 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 Zob. uwagi w socketcall(2)
socketcall(2) 1.0
socketpair(2) 2.0 Zob. uwagi w socketcall(2)
spill(2) 2.6.13 Tylko Xtensa
splice(2) 2.6.17
spu_create(2) 2.6.16 Tylko PowerPC/PowerPC64
spu_run(2) 2.6.16 Tylko 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 Tylko PowerPC/PowerPC64
swapcontext(2) 2.6.3 Tylko PowerPC/PowerPC64
switch_endian(2) 4.1 Tylko 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 Tylko PowerPC
syscall(2) 1.0 Wciąż dostępne na OABI ARM i
ABI O32 MIPS
sysfs(2) 1.2
sysinfo(2) 1.0
syslog(2) 1.0
sysmips(2) 2.6.0 Tylko 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 Tylko OABI ARM
usr32(2) 2.4.8.1 Tylko OABI ARM
utime(2) 1.0
utimensat(2) 2.6.22
utimes(2) 2.2
utrap_install(2) 2.2 Tylko SPARC64
vfork(2) 2.2
vhangup(2) 1.0
vm86old(2) 1.0 Wcześniej „vm86”; nowa nazwa
w 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 Tylko Xtensa
Na wielu platformach, w tym x86-32, wywołania gniazd są zwielokrotniane (za pomocą funkcji opakowujących
glibc) poprzez socketcall(2) i analogicznie wywołania IPC Systemu V są zwielokrotniane poprzez ipc(2).
Dla następujących wywołań systemowych zarezerwowano miejsca w systemowej tablicy wywołań, ale nie są one
zaimplementowane w standardowym jądrze: 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) i vserver(2) (zob. też unimplemented(2)). Jednak ftime(3), profil(3) i ulimit(3) istnieją jako
funkcje biblioteczne. Miejsce dla phys(2) od Linuksa 2.1.116 jest używane przez umount(2); phys(2) nigdy
nie zostanie zaimplementowane. Wywołania getpmsg(2) i putpmsg(2) są przeznaczone do jąder zmodyfikowanych
do obsługi struktury STREAMS i mogą nigdy nie trafić do standardowego jądra.
Istniało przez chwilę set_zone_reclaim(2), dodane w Linuksie 2.6.13 i usunięte w Linuksie 2.6.16; to
wywołanie systemowe nigdy nie było dostępne dla przestrzeni użytkownika.
Wywołania systemowe na usuniętych portach
Niektóre wywołania systemowe istniały tylko na architekturach Linuksa, które zostały już usunięte z
jądra:
AVR32 (port usunięty w Linuksie 4.12)
• pread(2)
• pwrite(2)
Blackfin (port usunięty w Linuksie 4.17)
• bfin_spinlock(2) (dodane w Linuksie 2.6.22)
• dma_memcpy(2) (dodane w Linuksie 2.6.22)
• pread(2) (dodane w Linuksie 2.6.22)
• pwrite(2) (dodane w Linuksie 2.6.22)
• sram_alloc(2) (dodane w Linuksie 2.6.22)
• sram_free(2) (dodane w Linuksie 2.6.22)
Metag (port usunięty w Linuksie 4.17)
• metag_get_tls(2) (dodane w Linuksie 3.9)
• metag_set_fpu_flags(2) (dodane w Linuksie 3.9)
• metag_set_tls(2) (dodane w Linuksie 3.9)
• metag_setglobalbit(2) (dodane w Linuksie 3.9)
Tile (port usunięty w Linuksie 4.17)
• cmpxchg_badaddr(2) (dodane w Linuksie 2.6.36)
UWAGI
Najczęściej kod należący do wywołania systemowego o numerze __NR_xxx zdefiniowanym w
/usr/include/asm/unistd.h można znaleźć w źródłach jądra Linux w funkcji sys_xxx(). Istnieje jednak wiele
wyjątków, głównie z powodu zastąpienia starszych wywołań systemowych nowszymi, co odbyło się w nie do
końca systematyczny sposób. Na platformach z zastrzeżoną emulacją systemu operacyjnego, takich jak sparc,
sparc64 i alpha, istnieje wiele dodatkowych wywołań systemowych; mips64 zawiera również pełny zbiór
32-bitowych wywołań systemowych.
Z czasem, konieczna była zmiana interfejsów niektórych wywołań systemowych. Jedną z przyczyn była
konieczność zwiększenia struktur wartości skalarnych przekazywanych do wywołań systemowych. Z powodów
tych zmian, niektóre architektury (między innymi długowieczne architektury 32-bitowe, takie jak i386)
mają obecnie grupy powiązanych wywołań systemowych (np. truncate(2) i truncate64(2)) realizujących
podobne zadania, lecz różniących się w szczegółach, takich jak rozmiar swoich argumentów (jak zaznaczono
wcześniej, aplikacje zwykle nie są tego świadome; funkcje opakowujące glibc wykonują pewną pracę, aby
przywołać odpowiednie wywołanie systemowe oraz zapewnić kompatybilność ABI dla starszych plików
wykonywalnych). Oto przykłady wywołań systemowych, które istnieją w różnych wersjach:
• Obecnie występują trzy różne wersje stat(2): sys_stat() (miejsce __NR_oldstat), sys_newstat() (miejsce
__NR_stat) i sys_stat64() (miejsce __NR_stat64), z których ostatnia jest najnowsza. Podobna sytuacja
występuje w przypadku lstat(2) i fstat(2).
• Podobnie, definicje __NR_oldolduname, __NR_olduname i __NR_uname odnoszą się do funkcji
sys_olduname(), sys_uname() i sys_newuname().
• W Linuksie 2.0, pojawiła się nowa wersja vm86(2), przy czym stara i nowa funkcja otrzymała nazwę,
odpowiednio, sys_vm86old() i sys_vm86().
• W Linuksie 2.4, pojawiła się nowa wersja getrlimit(2), przy czym stara i nowa funkcja otrzymała nazwę,
odpowiednio, sys_old_getrlimit() (miejsce __NR_getrlimit) i sys_getrlimit() (miejsce __NR_ugetrlimit).
• Linux 2.4 zwiększył rozmiar identyfikatorów użytkownika i grupy z 16 do 32 bitów. Aby obsłużyć tę
zmianę, dodano wiele wywołań systemowych (np. chown32(2), getuid32(2), getgroups32(2),
setresuid32(2)), zastępujących wcześniejsze wywołania o tej samej nazwie, bez przyrostka „32”.
• Linux 2.4 dodał obsługę dostępu do dużych plików dla aplikacji 32-bitowych (tj. plików, których
rozmiaru i przesunięcia pliku nie da się odwzorować w 32 bitach). Aby obsłużyć tę zmianę, konieczne
było zastąpienie wywołań systemowych, które działają na przesunięciach plików i ich rozmiarach. Z tego
względu dodano wywołania systemowe: fcntl64(2), getdents64(2), stat64(2), statfs64(2), truncate64(2)
oraz ich odpowiedniki działające na deskryptorach plików i dowiązaniach symbolicznych. Opisywane
wywołania zastąpiły starsze wywołania systemowe, które, z wyłączeniem wywołań „stat”, miały te same
nazwy, jedynie bez przyrostka „64”.
Na nowszych platformach, które mają jedynie 64-bitowy dostęp do plików i 32-bitowe identyfikatory
użytkownika i grupy (np. alpha, ia64, s390x, x86-64), istnieje jedynie pojedyncza wersja wywołań
systemowych związanych z UID-ami, GID-ami i dostępem do plików. Na platformach (zwykle 32-bitowych),
gdzie istnieją wywołania *64 i *32, pozostałe wersje są przestarzałe.
• Wywołania rt_sig* dodano w Linuksie 2.2 w celu obsługi sygnałów czasu rzeczywistego (zob. signal(7)).
Te wywołania systemowe zastąpiły starsze wywołania o tej samej nazwie, jedynie bez przedrostka „rt_”.
• Wywołania systemowe select(2) i mmap(2) używają pięciu lub więcej argumentów, co powodowało problemy,
ze względu na sposób, w jaki zorganizowano przekazywanie argumentów na i386. Z tego względu, choć inne
architektury mają sys_select() i sys_mmap() odpowiadające __NR_select i __NR_mmap, ma i386 można
znaleźć w tym miejscu old_select() i old_mmap() (funkcje korzystające z wskaźnika do bloku
argumentów). Obecnie przekazywanie pięciu argumentów nie jest już problemem, dlatego występuje
__NR__newselect, które odpowiada bezpośrednio sys_select() i podobnie __NR_mmap2. s390x jest jedyną
architekturą 64-bitową, która posiada old_mmap().
Szczegóły typowe dla architektury: Alpha
getxgid(2)
zwraca parę: identyfikator grupy i efektywny identyfikator grupy za pomocą rejestrów r0 i r20;
zapewnione w zamian za getgid(2) i getegid(2).
getxpid(2)
zwraca parę: identyfikator procesu i efektywny identyfikator procesu za pomocą rejestrów r0 i r20;
zapewnione w zamian za getpid(2) i getppid(2).
old_adjtimex(2)
jest wariantem adjtimex(2) używającym struct timeval32, ze względu na kompatybilność z OSF/1.
getxuid(2)
zwraca parę: identyfikator użytkownika i efektywny identyfikator użytkownika za pomocą rejestrów
r0 i r20; zapewnione w zamian za getuid(2) i geteuid(2).
sethae(2)
służy do konfiguracji rejestru Host Address Extension na tanich komputerach Alpha, w celu
uzyskania dostępu do przestrzeni adresowej poza pierwszymi 27 bitami.
ZOBACZ TAKŻE
ausyscall(1), intro(2), syscall(2), unimplemented(2), errno(3), libc(7), vdso(7)
TŁUMACZENIE
Tłumaczenie niniejszej strony podręcznika: Michał Kułach <michal.kulach@gmail.com>
Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać
zapoznając się z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje się ŻADNEJ
ODPOWIEDZIALNOŚCI.
Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej manpages-pl-
list@lists.sourceforge.net.
Linux man-pages 6.9.1 2 maja 2024 r. syscalls(2)