syscalls(2) System Calls Manual syscalls(2) BEZEICHNUNG syscalls - Linux-Systemaufrufe UBERSICHT 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 moglicherweise 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 enthalt Glibc eine Funktion chdir(), die den zugrundeliegenden Systemaufruf >>chdir<< aufruft. Oft ist die Glibc-Wrapper-Funktion recht dunn und sie macht kaum mehr, als die Argumente in die richtigen Register zu kopieren, bevor sie den Systemaufruf aufruft, und anschliessend errno entsprechend zu setzen, nachdem der Systemaufruf zuruckkehrte. (Dies sind die gleichen Schritte, die auch syscall(2) durchfuhrt, welches dazu verwandt werden kann, Systemaufrufe aufzurufen, fur die keine Wrapper-Funktion bereitgestellt wird.) Hinweis: Systemaufrufe zeigen einen Fehlschlag an, indem sie eine negative Fehlernummer an den Aufrufenden auf Architekturen zuruckliefern, die kein getrenntes Fehlerregister/-schalter bereitstellen. Darauf wird in syscall(2) hingewiesen. Wenn dies passiert negiert die Wrapper-Funktion die zuruckgelieferte Fehlernummer (damit sie positiv wird), kopiert sie nach errno und liefert -1 an den Aufrufenden des Wrappers zuruck. Manchmal erledigt die Wrapper-Funktion vor dem Aufruf des Systemaufrufs zusatzliche Aufgaben. Beispielsweise gibt es heutzutage (aus weiter unten beschriebenen Grunden) zwei zusammenhangende Systemaufrufe truncate(2) und truncate64(2) und die Glibc-Wrapper-Funktion truncate() pruft, 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 fur solche Systemaufrufe an, die in Linux 2.2 neu waren oder seitdem in dieser Kernelversion erschienen sind. Beachten Sie die folgenden Punkte: o Wo keine Kernelversion angezeigt ist, erschien der Systemaufruf in Linux 1.0 oder fruher. o 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 uber die instabile Linux-1.1.x-Kernelserie.) o 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, uber die instabile Linux-1.3.x-Kernelserie.) o 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 uber die instabile Linux-2.1.x-Kernelserie.) o 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 uber die instabile Linux-2.3.x-Kernelserie.) o 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 uber die instabile 2.5.x-Kernelserie.) o Beginnend mit Linux 2.6.0 wurde das Entwicklungsmodell geandert und neue Systemaufrufe konnen in jeder Linux-2.6.x-er Veroffentlichung erscheinen. In diesem Fall wird die genaue Versionsnummer, bei der der Systemaufruf erschien, angezeigt. Diese Konvention gilt auch fur 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. o In einigen Fallen wurde ein Systemaufruf zu einer stabilen Kernelserie hinzugefugt, nachdem sie von der vorherigen stabilen Kernelversion abgeleitet wurde, und dieser wurde dann in vorherige stabile Kernelserie zuruckportiert. Beispielsweise wurden einige Systemaufrufe, die in Linux 2.6.x erschienen, auch in eine Linux 2.4.x-Veroffentlichung nach Linux 2.4.15 ruckportiert. 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 verfugbar sind (oder in einigen wenigen Fallen nur in alteren 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 Prafix __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) fur 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 Kompatibilitat 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 Prafix __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; verfugbar als osf_getdomainname(2) auf Alpha seit Linux 2.0 getdtablesize(2) 2.0 SPARC (entfernt in 2.6.26), verfugbar 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 verfugbar getitimer(2) 1.0 getpeername(2) 2.0 Siehe Hinweise zu socketcall(2) getpagesize(2) 2.0 Nicht auf 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 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) fur 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 Altere Variante von getrlimit(2) die einen anderen Wert fur 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 hinzugefugt; 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. hinzugefugt; 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 Prafix __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 fur 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 verfugbar 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, einschliesslich X86-32, werden Socket-Aufrufe (mittels der Glibc-Wrapper-Funktionen) uber socketcall(2) im Multiplex-Verfahren behandelt und ebenso werden System-V-IPC-Aufrufe mittels ipc(2) im Multiplex-Verfahren behandelt. Obwohl fur sie in der Systemaufruftabelle Platze 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 fur phys(2) wird seit Linux 2.1.116 fur umount(2) verwandt; phys(2) wird niemals implementiert. Die Aufrufe getpmsg(2) und putpmsg(2) sind fur Kernel, die auf die Unterstutzung von Streams angepasst wurden, reserviert und konnten niemals im Standard-Kernel auftauchen. Fur einen kurzen Zeitraum gab es set_zone_reclaim(2), hinzugefugt in Linux 2.6.13 und entfernt in Linux 2.6.16. Dieser Systemaufruf stand dem Anwendungsraum niemals zur Verfugung. Systemaufrufe auf entfernten Portierungen Einige Systemaufrufe existierten ausschliesslich auf Linux-Architekturen, die seitdem aus dem Kernel entfernt wurden: AVR32 (Portierung in Linux 4.12 entfernt) o pread(2) o pwrite(2) Blackfin (Portierung in Linux 4.17 entfernt) o bfin_spinlock(2) (hinzugfugt in Linux 2.6.22) o dma_memcpy(2) (hinzugefugt in Linux 2.6.22) o pread(2) (hinzugefugt in Linux 2.6.22) o pwrite(2) (hinzugefugt in Linux 2.6.22) o sram_alloc(2) (hinzugefugt in Linux 2.6.22) o sram_free(2) (hinzugefugt in Linux 2.6.22) Metag (Portierung in Linux 4.17 entfernt) o metag_get_tls(2) (hinzugefugt in Linux 3.9) o metag_set_fpu_flags(2) (hinzugefugt in Linux 3.9) o metag_set_tls(2) (hinzugefugt in Linux 3.9) o metag_setglobalbit(2) (hinzugefugt in Linux 3.9) Tile (Portierung in Linux 4.17 entfernt) o cmpxchg_badaddr(2) (hinzugefugt 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 gehort in den Linux-Kernelquellen in der Routine sys_xxx() gefunden werden. Allerdings gibt es viele Ausnahmen, da hauptsachlich altere Systemaufrufe durch neuere ersetzt wurden und dabei nicht immer systematisch vorgegangen wurde. Auf Plattformen mit proprietaren Betriebssystem-Emulationen, wie Sparc, Sparc64 und Alpha, gibt es viele zusatzliche Systemaufrufe; Mips64 enthalt auch einen kompletten Satz an 32-bit-Systemaufrufen. Im Laufe der Zeit wurden Anderungen an einigen Schnittstellen der Systemaufrufe notwendig. Ein Grund fur solche Anderungen war die Notwendigkeit, die Grosse von Strukturen oder skalaren Werten, die an den Systemaufruf ubergeben werden, zu erhohen. Aufgrund dieser Anderungen haben jetzt bestimmte Architekturen (insbesondere die langexistierenden 32-bit-Architekturen wie I386) verschiedene Gruppen von zusammengehorigen Systemaufrufen (z.B. truncate(2) und truncate64(2)), die ahnliche Aufgaben erledigen, aber sich in Details wie der Grosse 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-Kompatibilitat fur altere Programme gewahrt wird). Folgende Systemaufrufe sind Beispiele, die in verschiedenen Versionen existieren: o 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 ahnliche Geschichte existiert fur lstat(2) und fstat(2). o Ahnlich beziehen sich die Definitionen __NR_oldolduname, __NR_olduname und __NR_uname auf die Routinen sys_olduname(), sys_uname() und sys_newuname(). o 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. o 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. o Linux 2.4 erhohte die Grosse der Benutzer- und Gruppenkennungen von 16 auf 32 bit. Um diese Anderung zu unterstutzen, wurden eine Reihe von Systemaufrufen hinzugefugt (z.B. chown32(2), getuid32(2), getgroups32(2), setresuid32(2)), die altere Aufrufe mit dem gleichen Namen ohne die Endung >>32<< ersetzen. o Linux 2.4 fugte Unterstutzungen zum Zugriff auf grosse Dateien (d.h. Dateien, deren Grosse und Dateiversatz nicht in 32 bit dargestellt werden kann) fur Anwendungen auf 32-bit-Architekturen hinzu. Um diese Anderung zu unterstutzen, wurden fur Systemaufrufe, die mit Dateiversatzen und -grossen umgehen, Ersetzungen notwendig. Daher wurden die folgenden Systemaufrufe hinzugefugt: fcntl64(2), getdents64(2), stat64(2), statfs64(2), truncate64(2) und ihre Entsprechungen, die mit Dateideskriptoren und symbolischen Links arbeiten. Diese Systemaufrufe ersetzen die alteren Systemaufrufe, die bis auf den Fall der >>stat<<-Systemaufrufe die gleichen Namen ohne die Endung >>64<< haben. Auf neueren Plattformen, die nur uber 64-bit-Zugriff und 32-bit UIDs/GIDs verfugen (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. o Die Aufrufe rt_sig* wurden in Linux 2.2 hinzugefugt, um die Hinzufugung von Echtzeitsignalen (siehe signal(7)) zu unterstutzen. Diese Systemaufrufe ersetzen die alteren Systemaufrufe mit dem gleichen Namen ohne den Prafix >>rt_<<. o Die Systemaufrufe select(2) und mmap(2) verwenden funf oder mehr Argumente, was zu Problemen mit der Art, wie die Argumentenubergabe auf I386 eingerichtet war, fuhrte. Wahrend andere Architekturen uber sys_select() und sys_mmap() entsprechend zu __NR_select und __NR_mmap verfugen, kann auf I386 stattdessen old_select() und old_mmap() (Routinen, die einen Zeiger auf einen Argumentenblock verwenden) gefunden werden. Heutzutage ist die Ubergabe von funf oder mehr Argumenten kein Problem mehr und es gibt ein __NR__newselect, das direkt sys_select() entspricht und ahnlich __NR_mmap2. S390x ist die einzige 64-bit-Architektur, die uber old_mmap() verfugt. Architektur-spezifische Details: Alpha getxgid(2) Liefert ein Paar an GID- und effektiver GID mittels der Register r0 und r20 zuruck; 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 zuruck; er wird anstelle von getpid(2) und getppid(2) bereitgestellt. old_adjtimex(2) Ist eine Variante von adjtimex(2), die zur Kompatibilitat mit OSF/1 struct timeval32 verwendet. getxuid(2) Liefert ein Paar an GID und effektiver GID mittels der Register r0 und r20 zuruck; er wird anstelle von getuid(2) und geteuid(2) bereitgestellt. sethae(2) Wird fur die Konfiguration der Rechneradressen-Erweiterungsregister in gunstigen 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) UBERSETZUNG Die deutsche Ubersetzung dieser Handbuchseite wurde von Helge Kreutzmann erstellt. Diese Ubersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezuglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG ubernommen. Wenn Sie Fehler in der Ubersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Ubersetzer . Linux man-pages 6.06 16. Januar 2024 syscalls(2)