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

BEZEICHNUNG
syscalls - Linux-Systemaufrufe
ÜBERSICHT
Linux-Systemaufrufe.
BESCHREIBUNG
Der Systemaufruf ist eine fundamentale Schnittstelle zwischen Anwendungen und dem Linux-Kernel.
Systemaufrufe und Bibliothek-Wrapper-Funktionen
Systemaufrufe werden im Allgemeinen nicht direkt aufgerufen, sondern mittels Wrapper-Funktionen in Glibc
(oder möglicherweise einer anderen Bibliothek). Zu Details des direkten Aufrufs eines Systemaufrufs siehe
intro(2). Oft, aber nicht immer, ist der Name der Wrapper-Funktion identisch zu dem Namen des
Systemaufrufs, den sie aufruft. Beispielsweise enthält Glibc eine Funktion chdir(), die den
zugrundeliegenden Systemaufruf »chdir« aufruft.
Oft ist die Glibc-Wrapper-Funktion recht dünn und sie macht kaum mehr, als die Argumente in die richtigen
Register zu kopieren, bevor sie den Systemaufruf aufruft, und anschließend errno entsprechend zu setzen,
nachdem der Systemaufruf zurückkehrte. (Dies sind die gleichen Schritte, die auch syscall(2) durchführt,
welches dazu verwandt werden kann, Systemaufrufe aufzurufen, für die keine Wrapper-Funktion
bereitgestellt wird.) Hinweis: Systemaufrufe zeigen einen Fehlschlag an, indem sie eine negative
Fehlernummer an den Aufrufenden auf Architekturen zurückliefern, die kein getrenntes
Fehlerregister/-schalter bereitstellen. Darauf wird in syscall(2) hingewiesen. Wenn dies passiert negiert
die Wrapper-Funktion die zurückgelieferte Fehlernummer (damit sie positiv wird), kopiert sie nach errno
und liefert -1 an den Aufrufenden des Wrappers zurück.
Manchmal erledigt die Wrapper-Funktion vor dem Aufruf des Systemaufrufs zusätzliche Aufgaben.
Beispielsweise gibt es heutzutage (aus weiter unten beschriebenen Gründen) zwei zusammenhängende
Systemaufrufe truncate(2) und truncate64(2) und die Glibc-Wrapper-Funktion truncate() prüft, welche
dieser Systemaufrufe vom Kernel bereitgestellt wird und bestimmt, welcher eingesetzt werden soll.
Liste der Systemaufrufe
Nachfolgend ist eine Liste der Linux-Systemaufrufe. In der Liste zeigt die Spalte Kernel die
Kernelversion für solche Systemaufrufe an, die in Linux 2.2 neu waren oder seitdem in dieser
Kernelversion erschienen sind. Beachten Sie die folgenden Punkte:
• Wo keine Kernelversion angezeigt ist, erschien der Systemaufruf in Linux 1.0 oder früher.
• Wo ein Systemaufruf mit »1.2« markiert ist, bedeutet dies, dass der Systemaufruf wahrscheinlich in
einer Linux 1.1.x-Kernelversion und erstmalig in einem stabilen Kernel mit 1.2 erschien. (Die
Entwicklung der Linux 1.2er-Kernel erfolgte von einem Zweig von Linux 1.0.6 über die instabile
Linux-1.1.x-Kernelserie.)
• Wo ein Systemaufruf mit »2.0« markiert ist, bedeutet dies, dass der Systemaufruf wahrscheinlich in
einer Linux 1.3.x-Kernelversion und erstmalig in einem stabilen Kernel mit Linux 2.0 erschien. (Die
Entwicklung der Linux 2.0er-Kernel erfolgte von einem Zweig von Linux 1.2.x, irgendwo rund um Linux
1.2.10, über die instabile Linux-1.3.x-Kernelserie.)
• Wo ein Systemaufruf mit »2.2« markiert ist, bedeutet dies, dass der Systemaufruf wahrscheinlich in
einer Linux 2.1.x-Kernelversion und erstmalig in einem stabilen Kernel mit Linux 2.2.0 erschien. (Die
Entwicklung der Linux 2.2er-Kernel erfolgte von einem Zweig von Linux 2.0.21 über die instabile
Linux-2.1.x-Kernelserie.)
• Wo ein Systemaufruf mit »2.4« markiert ist, bedeutet dies, dass der Systemaufruf wahrscheinlich in
einer Linux 2.3.x-Kernelversion und erstmalig in einem stabilen Kernel mit Linux 2.4.0 erschien. (Die
Entwicklung der Linux 2.4er-Kernel erfolgte von einem Zweig von Linux 2.2.8 über die instabile
Linux-2.3.x-Kernelserie.)
• Wo ein Systemaufruf mit »2.6« markiert ist, bedeutet dies, dass der Systemaufruf wahrscheinlich in
einer Linux 2.5.x-Kernelversion und erstmalig in einem stabilen Kernel mit Linux 2.6.0 erschien. (Die
Entwicklung der Linux 2.6er-Kernel erfolgte von einem Zweig des Kernels 2.4.15 über die instabile
2.5.x-Kernelserie.)
• Beginnend mit Linux 2.6.0 wurde das Entwicklungsmodell geändert und neue Systemaufrufe können in jeder
Linux-2.6.x-er Veröffentlichung erscheinen. In diesem Fall wird die genaue Versionsnummer, bei der der
Systemaufruf erschien, angezeigt. Diese Konvention gilt auch für die Linux 3.x-er-Kernelserie, die auf
Linux 2.6.39 folgte und die Linux 4.x-er-Kernelserie, die auf Linux 3.19 folgte und die Linux
5.x-er-Kernelserie, die auf Linux 4.20 folgte; und die Linux 6.x-Kernelserie, die auf Linux 5.19
folgte.
• In einigen Fällen wurde ein Systemaufruf zu einer stabilen Kernelserie hinzugefügt, nachdem sie von
der vorherigen stabilen Kernelversion abgeleitet wurde, und dieser wurde dann in vorherige stabile
Kernelserie zurückportiert. Beispielsweise wurden einige Systemaufrufe, die in Linux 2.6.x erschienen,
auch in eine Linux 2.4.x-Veröffentlichung nach Linux 2.4.15 rückportiert. Wenn dies der Fall ist,
werden die Versionen, in denen der Systemaufruf in beiden Haupt-Kernelserien erschien, aufgelistet.
Die Liste der Systemaufrufe, die in Linux 5.14 verfügbar sind (oder in einigen wenigen Fällen nur in
älteren Kerneln) ist wie folgt:
Systemaufruf Kernel Hinweise
───────────────────────────────────────────────────────────────────────
_llseek(2) 1.2
_newselect(2) 2.0
_sysctl(2) 2.0 Entfernt in 5.5
accept(2) 2.0 Siehe Hinweise zu
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 Entfernt in 2.5.44
arc_gettls(2) 3.9 Nur ARC
arc_settls(2) 3.9 Nur ARC
arc_usr_cmpxchg(2) 4.9 Nur ARC
arch_prctl(2) 2.6 X86_64, X86 seit 4.12
atomic_barrier(2) 2.6.34 Nur M68k
atomic_cmpxchg_32(2) 2.6.34 Nur M68k
bdflush(2) 1.2 Veraltet (bewirkt nichts)
seit 2.6
bind(2) 2.0 Siehe Hinweise zu
socketcall(2)
bpf(2) 3.18
brk(2) 1.0
breakpoint(2) 2.2 Nur ARM OABI, definiert mit
Präfix __ARM_NR
cacheflush(2) 1.2 Nicht auf X86
capget(2) 2.2
capset(2) 2.2
chdir(2) 1.0
chmod(2) 1.0
chown(2) 2.2 Siehe chown(2) für
Versionsdetails
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 Nur IA-64
clone(2) 1.0
clone3(2) 5.3
close(2) 1.0
close_range(2) 5.9
connect(2) 2.0 Siehe Hinweise zu
socketcall(2)
copy_file_range(2) 4.5
creat(2) 1.0
create_module(2) 1.0 Entfernt in 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 Nur SPARC/SPARC64, zur
Kompatibilität mit 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 Entfernt in 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 Entfernt in 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 Nur ARM OABI, hat Präfix
__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; verfügbar
als osf_getdomainname(2) auf
Alpha seit Linux 2.0
getdtablesize(2) 2.0 SPARC (entfernt in 2.6.26),
verfügbar auf Alpha als
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, war auf SPARC bis
Linux 2.6.26 verfügbar
getitimer(2) 1.0
getpeername(2) 2.0 Siehe Hinweise zu
socketcall(2)
getpagesize(2) 2.0 Nur 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 Siehe Hinweise zu
socketcall(2)
getsockopt(2) 2.0 Siehe Hinweise zu
socketcall(2)
gettid(2) 2.4.11
gettimeofday(2) 1.0
getuid(2) 1.0
getuid32(2) 2.4
getunwind(2) 2.4.8 Nur IA-64; veraltet
getxattr(2) 2.6; 2.4.18
getxgid(2) 2.0 Nur Alpha; siehe HINWEISE
getxpid(2) 2.0 Nur Alpha; siehe HINWEISE
getxuid(2) 2.0 Nur Alpha; siehe HINWEISE
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 Nur 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 Siehe chown(2) für
Versionsdetails
lchown32(2) 2.4
lgetxattr(2) 2.6; 2.4.18
link(2) 1.0
linkat(2) 2.6.16
listen(2) 2.0 Siehe Hinweise zu
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 Nur 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 Siehe Hinweise zu ipc(2)
msgget(2) 2.0 Siehe Hinweise zu ipc(2)
msgrcv(2) 2.0 Siehe Hinweise zu ipc(2)
msgsnd(2) 2.0 Siehe Hinweise zu 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 Siehe stat(2)
nfsservctl(2) 2.2 Entfernt in 3.1
nice(2) 1.0
old_adjtimex(2) 2.0 Nur Alpha; siehe HINWEISE
old_getrlimit(2) 2.4 Ältere Variante von
getrlimit(2) die einen
anderen Wert für
RLIM_INFINITY verwandte
oldfstat(2) 1.0
oldlstat(2) 1.0
oldolduname(2) 1.0
oldstat(2) 1.0
oldumount(2) 2.4.116 Name des alten Systemaufrufs
umount(2) auf 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 Nur OpenRISC 1000
pause(2) 1.0
pciconfig_iobase(2) 2.2.15; 2.4 Nicht auf X86
pciconfig_read(2) 2.0.26; 2.2 Nicht auf X86
pciconfig_write(2) 2.0.26; 2.2 Nicht auf X86
perf_event_open(2) 2.6.31 War perf_counter_open() in
2.6.31; umbenannt in 2.6.32
personality(2) 1.2
perfctr(2) 2.2 Nur SPARC; entfernt in
2.6.34
perfmonctl(2) 2.4 Nur IA-64; entfernt 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) Als »pread« in 2.2
hinzugefügt; in »pread64« in
2.6 umbenannt
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) Als »pwrite« in 2.2.
hinzugefügt; in »pwrite64«
in 2.6 umbenannt
pwritev(2) 2.6.30
pwritev2(2) 4.6
query_module(2) 2.2 Entfernt in 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 Siehe Hinweise zu
socketcall(2)
recvfrom(2) 2.0 Siehe Hinweise zu
socketcall(2)
recvmsg(2) 2.0 Siehe Hinweise zu
socketcall(2)
recvmmsg(2) 2.6.33
remap_file_pages(2) 2.6 Veraltet seit 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 Nur 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 Nur PowerPC/PowerPC64
s390_runtime_instr(2) 3.7 Nur S390
s390_pci_mmio_read(2) 3.19 Nur S390
s390_pci_mmio_write(2) 3.19 Nur S390
s390_sthyi(2) 4.15 Nur S390
s390_guarded_storage(2) 4.12 Nur S390
sched_get_affinity(2) 2.6 Name von
sched_getaffinity(2) auf
SPARC und 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 von
sched_setaffinity(2) auf
SPARC und 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 Siehe Hinweise zu ipc(2)
semget(2) 2.0 Siehe Hinweise zu ipc(2)
semop(2) 2.0 Siehe Hinweise zu ipc(2)
semtimedop(2) 2.6; 2.4.22
send(2) 2.0 Siehe Hinweise zu
socketcall(2)
sendfile(2) 2.2
sendfile64(2) 2.6; 2.4.19
sendmmsg(2) 3.0
sendmsg(2) 2.0 Siehe Hinweise zu
socketcall(2)
sendto(2) 2.0 Siehe Hinweise zu
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 Nur ARM OABI/EABI (Konstante
hat Präfix __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 Nur Alpha; siehe HINWEISE
sethostname(2) 1.0
setitimer(2) 1.0
setns(2) 3.0
setpgid(2) 1.0
setpgrp(2) 2.0 Alternativer Name für
setpgid(2) auf 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 Siehe Hinweise zu
socketcall(2)
settimeofday(2) 1.0
setuid(2) 1.0
setuid32(2) 2.4
setup(2) 1.0 Entfernt in 2.2
setxattr(2) 2.6; 2.4.18
sgetmask(2) 1.0
shmat(2) 2.0 Siehe Hinweise zu ipc(2)
shmctl(2) 2.0 Siehe Hinweise zu ipc(2)
shmdt(2) 2.0 Siehe Hinweise zu ipc(2)
shmget(2) 2.0 Siehe Hinweise zu ipc(2)
shutdown(2) 2.0 Siehe Hinweise zu
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 Siehe Hinweise zu
socketcall(2)
socketcall(2) 1.0
socketpair(2) 2.0 Siehe Hinweise zu
socketcall(2)
spill(2) 2.6.13 Nur Xtensa
splice(2) 2.6.17
spu_create(2) 2.6.16 Nur PowerPC/PowerPC64
spu_run(2) 2.6.16 Nur 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 Nur PowerPC/PowerPC64
swapcontext(2) 2.6.3 Nur PowerPC/PowerPC64
switch_endian(2) 4.1 Nur 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 Nur PowerPC
syscall(2) 1.0 Im ARM OABI und MIPS O32 ABI
immer noch verfügbar
sysfs(2) 1.2
sysinfo(2) 1.0
syslog(2) 1.0
sysmips(2) 2.6.0 Nur 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 Nur ARM OABI
usr32(2) 2.4.8.1 Nur ARM OABI
utime(2) 1.0
utimensat(2) 2.6.22
utimes(2) 2.2
utrap_install(2) 2.2 Nur SPARC64
vfork(2) 2.2
vhangup(2) 1.0
vm86old(2) 1.0 War »vm86«; wurde in
2.0.28/2.2 umbenannt
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 Nur Xtensa
Auf vielen Plattformen, einschließlich X86-32, werden Socket-Aufrufe (mittels der
Glibc-Wrapper-Funktionen) über socketcall(2) im Multiplex-Verfahren behandelt und ebenso werden
System-V-IPC-Aufrufe mittels ipc(2) im Multiplex-Verfahren behandelt.
Obwohl für sie in der Systemaufruftabelle Plätze reserviert sind, sind die folgenden Systemaufrufe im
Standard-Kernel nicht implementiert: 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) und vserver(2) (siehe auch unimplemented(2)). Allerdings existieren ftime(3), profil(3) und
ulimit(3) als Bibliotheksroutinen. Der Platz für phys(2) wird seit Linux 2.1.116 für umount(2) verwandt;
phys(2) wird niemals implementiert. Die Aufrufe getpmsg(2) und putpmsg(2) sind für Kernel, die auf die
Unterstützung von Streams angepasst wurden, reserviert und könnten niemals im Standard-Kernel auftauchen.
Für einen kurzen Zeitraum gab es set_zone_reclaim(2), hinzugefügt in Linux 2.6.13 und entfernt in Linux
2.6.16. Dieser Systemaufruf stand dem Anwendungsraum niemals zur Verfügung.
Systemaufrufe auf entfernten Portierungen
Einige Systemaufrufe existierten ausschließlich auf Linux-Architekturen, die seitdem aus dem Kernel
entfernt wurden:
AVR32 (Portierung in Linux 4.12 entfernt)
• pread(2)
• pwrite(2)
Blackfin (Portierung in Linux 4.17 entfernt)
• bfin_spinlock(2) (hinzugfügt in Linux 2.6.22)
• dma_memcpy(2) (hinzugefügt in Linux 2.6.22)
• pread(2) (hinzugefügt in Linux 2.6.22)
• pwrite(2) (hinzugefügt in Linux 2.6.22)
• sram_alloc(2) (hinzugefügt in Linux 2.6.22)
• sram_free(2) (hinzugefügt in Linux 2.6.22)
Metag (Portierung in Linux 4.17 entfernt)
• metag_get_tls(2) (hinzugefügt in Linux 3.9)
• metag_set_fpu_flags(2) (hinzugefügt in Linux 3.9)
• metag_set_tls(2) (hinzugefügt in Linux 3.9)
• metag_setglobalbit(2) (hinzugefügt in Linux 3.9)
Tile (Portierung in Linux 4.17 entfernt)
• cmpxchg_badaddr(2) (hinzugefügt in Linux 2.6.36)
ANMERKUNGEN
Grob gesagt kann der Code, der zu dem Systemaufruf mit der in /usr/include/asm/unistd.h definierten
Nummer __NR_xxx gehört in den Linux-Kernelquellen in der Routine sys_xxx() gefunden werden. Allerdings
gibt es viele Ausnahmen, da hauptsächlich ältere Systemaufrufe durch neuere ersetzt wurden und dabei
nicht immer systematisch vorgegangen wurde. Auf Plattformen mit proprietären Betriebssystem-Emulationen,
wie Sparc, Sparc64 und Alpha, gibt es viele zusätzliche Systemaufrufe; Mips64 enthält auch einen
kompletten Satz an 32-bit-Systemaufrufen.
Im Laufe der Zeit wurden Änderungen an einigen Schnittstellen der Systemaufrufe notwendig. Ein Grund für
solche Änderungen war die Notwendigkeit, die Größe von Strukturen oder skalaren Werten, die an den
Systemaufruf übergeben werden, zu erhöhen. Aufgrund dieser Änderungen haben jetzt bestimmte Architekturen
(insbesondere die langexistierenden 32-bit-Architekturen wie I386) verschiedene Gruppen von
zusammengehörigen Systemaufrufen (z.B. truncate(2) und truncate64(2)), die ähnliche Aufgaben erledigen,
aber sich in Details wie der Größe ihrer Argumente unterscheiden. (Wie weiter oben angemerkt, bekommen
das Anwendungen im Allgemeinen nicht mit: Die Glibc-Wrapperfunktion haben Vorkehrungen um
sicherzustellen, dass der richtige Systemaufruf aufgerufen wird und dass die ABI-Kompatibilität für
ältere Programme gewährt wird). Folgende Systemaufrufe sind Beispiele, die in verschiedenen Versionen
existieren:
• Es gibt jetzt drei verschiedene Versionen von stat(2): sys_stat() (Platz __NR_oldstat), sys_newstat()
(Platz __NR_stat) und sys_stat64() (Platz __NR_stat64), wobei letzterer der neuste ist. Eine ähnliche
Geschichte existiert für lstat(2) und fstat(2).
• Ähnlich beziehen sich die Definitionen __NR_oldolduname, __NR_olduname und __NR_uname auf die Routinen
sys_olduname(), sys_uname() und sys_newuname().
• In Linux 2.0 erschien eine neue Version von vm86(2), wobei die alte und die neue Kernelroutine als
sys_vm86old() und sys_vm86() benannt wurden.
• In Linux 2.4 erschien eine neue Version von getrlimit(2) , wobei die alte und die neue Kernelroutine
als sys_old_getrlimit() (Platz __NR_getrlimit) und sys_getrlimit() (Platz __NR_ugetrlimit) benannt
wurden.
• Linux 2.4 erhöhte die Größe der Benutzer- und Gruppenkennungen von 16 auf 32 bit. Um diese Änderung zu
unterstützen, wurden eine Reihe von Systemaufrufen hinzugefügt (z.B. chown32(2), getuid32(2),
getgroups32(2), setresuid32(2)), die ältere Aufrufe mit dem gleichen Namen ohne die Endung »32«
ersetzen.
• Linux 2.4 fügte Unterstützungen zum Zugriff auf große Dateien (d.h. Dateien, deren Größe und
Dateiversatz nicht in 32 bit dargestellt werden kann) für Anwendungen auf 32-bit-Architekturen hinzu.
Um diese Änderung zu unterstützen, wurden für Systemaufrufe, die mit Dateiversätzen und -größen
umgehen, Ersetzungen notwendig. Daher wurden die folgenden Systemaufrufe hinzugefügt: fcntl64(2),
getdents64(2), stat64(2), statfs64(2), truncate64(2) und ihre Entsprechungen, die mit
Dateideskriptoren und symbolischen Links arbeiten. Diese Systemaufrufe ersetzen die älteren
Systemaufrufe, die bis auf den Fall der »stat«-Systemaufrufe die gleichen Namen ohne die Endung »64«
haben.
Auf neueren Plattformen, die nur über 64-bit-Zugriff und 32-bit UIDs/GIDs verfügen (z.B. Alpha, Ia64,
S390x, X86-64) gibt es nur eine einzige Version der UID/GID- und Dateizugriffs-Systemaufrufe. Auf
Plattformen (typischerweise 32-bit-Plattformen), bei denen die *64- und *32-Aufrufe existieren, sind
die anderen Versionen veraltet.
• Die Aufrufe rt_sig* wurden in Linux 2.2 hinzugefügt, um die Hinzufügung von Echtzeitsignalen (siehe
signal(7)) zu unterstützen. Diese Systemaufrufe ersetzen die älteren Systemaufrufe mit dem gleichen
Namen ohne den Präfix »rt_«.
• Die Systemaufrufe select(2) und mmap(2) verwenden fünf oder mehr Argumente, was zu Problemen mit der
Art, wie die Argumentenübergabe auf I386 eingerichtet war, führte. Während andere Architekturen über
sys_select() und sys_mmap() entsprechend zu __NR_select und __NR_mmap verfügen, kann auf I386
stattdessen old_select() und old_mmap() (Routinen, die einen Zeiger auf einen Argumentenblock
verwenden) gefunden werden. Heutzutage ist die Übergabe von fünf oder mehr Argumenten kein Problem
mehr und es gibt ein __NR__newselect, das direkt sys_select() entspricht und ähnlich __NR_mmap2. S390x
ist die einzige 64-bit-Architektur, die über old_mmap() verfügt.
Architektur-spezifische Details: Alpha
getxgid(2)
Liefert ein Paar an GID- und effektiver GID mittels der Register r0 und r20 zurück; er wird
anstelle von getgid(2) und getegid(2) bereitgestellt.
getxpid(2)
Liefert ein Paar an PID und Eltern-PID mittels der Register r0 und r20 zurück; er wird anstelle
von getpid(2) und getppid(2) bereitgestellt.
old_adjtimex(2)
Ist eine Variante von adjtimex(2), die zur Kompatibilität mit OSF/1 struct timeval32 verwendet.
getxuid(2)
Liefert ein Paar an GID und effektiver GID mittels der Register r0 und r20 zurück; er wird
anstelle von getuid(2) und geteuid(2) bereitgestellt.
sethae(2)
Wird für die Konfiguration der Rechneradressen-Erweiterungsregister in günstigen Alphas verwandt,
damit auf den Adressraum jenseits der ersten 27 bit zugegriffen werden kann.
SIEHE AUCH
ausyscall(1), intro(2), syscall(2), unimplemented(2), errno(3), libc(7), vdso(7)
ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Helge Kreutzmann <debian@helgefjell.de> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer
bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die
Mailingliste der Übersetzer: debian-l10n-german@lists.debian.org.
Linux man-pages 6.9.1 2. Mai 2024 syscalls(2)