syscalls(2) System Calls Manual syscalls(2) NAVN syscalls - Linuxsystemkald SYNOPSIS Linuxsystemkald. BESKRIVELSE Systemkaldet er en fundamental graenseflade mellem et program og Linuxkernen. Systemkald og biblioteksomslagsfunktioner Systemkald startes generelt ikke direkte, men snarere via omslagsfunktioner i glibc (eller maske et andet bibliotek). For detaljer om direkte igangsaettelse af et systemkald, se intro(2). Ofte, men ikke altid, er navnet for omslagsfunktionen det samme som navnet pa systemkaldet, som det igangsaetter. For eksempel indeholder glibc en funktion chdir(), der igangsaetter det underliggende >>chdir<<-systemkald. Ofte er glibc-omslagsfunktionen ret tynd, gor ikke meget andet end at kopiere argumenter til det korrekte register for igangsaettelse af systemkaldet, og sa angivelse af errno pa passende vis efter systemkaldet er returneret. (Det er de samme trin, der udfores af syscall(2), det kan bruges til at igangsaette systemkald, hvor der ikke tilbydes en omslagsfunktion). Bemaerk: systemkald indikerer en fejl ved at returnere et negativt fejlnummer til kalderen pa arkitekturer uden et separat fejlregister/flag, som noteret i syscall(2); nar dette sker, negerer omslagsfunktionen det returnerede fejlnummer (for at gore det positivt), kopier det til errno, og returnerer -1 til kalderen af omslaget. Nogle gange udforer omslagsfunktionen dog lidt ekstra arbejde for igangsaettelse af systemkaldet. For eksempel er der i dag (af arsager beskrevet nedenfor) to relaterede systemkald, truncate(2) og truncate64(2), og glibc-omslagsfunktionen truncate() tjekker hvilket af disse systemkald der tilbydes af kernen og bestemmer hvilken der skal udrulles. Systemkaldliste Nedenfor er en liste over Linuxsystemkald. I listen indikerer kolonnen Kernel kerneversionen for disse systemkald, der var nye i Linux 2.2, eller er kommet siden den kerneversion. Bemaerk de folgende punkter: o Hvor ingen kerneversion er indikeret, sa kom systemkaldet i Linux 1.0 eller tidligere. o Hvor et systemkald er markeret >>1.2<<, betyder dette at systemkaldet sandsynligvis fremkom i en Linux 1.1.x-kerneversion og forst var i en stabil kerne med 1.2. (Udviklingen af Linux 1.2-kernen blev igangsat fra en gren af Linux 1.0.6 via den ustabile kerneserie Linux 1.1.x). o Hvor et systemkald er markeret >>2.0<<, betyder dette at systemkaldet sandsynligvis fremkom i en Linux 1.3.x-kerneversion og forst var i en stabil kerne med Linux 2.0. (Udviklingen af Linux 2.0-kernen blev igangsat fra en gren af Linux 1.2.x, cirka omkring Linux 1.2.10, via den ustabile kerneserie Linux 1.3.x). o Hvor et systemkald er markeret >>2.2<<, betyder dette at systemkaldet sandsynligvis fremkom i en Linux 2.1.x-kerneversion og forst var i en stabil kerne med Linux 2.2.0. (Udviklingen af Linux 2.2-kernen blev igangsat fra en gren af Linux 2.0.21, via den ustabile kerneserie Linux 2.1.x). o Hvor et systemkald er markeret >>2.4<<, betyder dette at systemkaldet sandsynligvis fremkom i en Linux 2.3.x-kerneversion og forst var i en stabil kerne med Linux 2.4.0. (Udviklingen af Linux 2.4-kernen blev igangsat fra en gren af Linux 2.2.8, via den ustabile kerneserie Linux 2.3.x). o Hvor et systemkald er markeret >>2.6<<, betyder dette at systemkaldet sandsynligvis fremkom i en Linux 2.5.x-kerneversion og forst var i en stabil kerne med Linux 2.6.0. (Udviklingen af Linux 2.6-kernen blev igangsat fra en gren af Linux 2.4.15, via den ustabile kerneserie Linux 2.5.x). o Startende med Linux 2.6.0 blev udviklingsmodellen aendret, og nye systemkald kan komme i hver Linux 2.6.x-udgivelse. I dette tilfaelde vises det praecise versionsnummer hvor systemkaldet opstod. Denne konvention fortsaetter med Linux 3.x-kerneserien, der fulgte fra Linux 2.6.39; og Linux 4.x-kerneserien, der fulgte fra Linux 4.20; og Linux 6.x-kerneserien, der fulgte fra Linux 5.19. o I nogle tilfaelde blev et systemkald tilfojet til en stabil kerneserie efter denne blev forgrenet fra en tidligere stabil kerneserie, og sa tilbageomkodet til den tidligere stabile kerneserie. For eksempel blev nogle systemkald der fremkom i Linux 2.6.x ogsa tilbageomkodet til en Linux 2.4.x-udgivelse efter Linux 2.4.15. Nar det er sadan, vises versionen hvor systemkaldet fremkom i begge hovedkerneserier. Listen over systemkald der er tilgaengelige fra og med Linux 5.14 (eller i nogle fa tilfaelde pa aeldre kerner) er som folger: Systemkald Kerne Noter ----------------------------------------------------------------------- _llseek(2) 1.2 _newselect(2) 2.0 _sysctl(2) 2.0 Fjernet i 5.5 accept(2) 2.0 Se noterne for 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 Fjernet i 3.5.44 arc_gettls(2) 3.9 Kun ARC arc_settls(2) 3.9 Kun ARC arc_usr_cmpxchg(2) 4.9 Kun ARC arch_prctl(2) 2.6 x86_64, x86 siden 4.12 atomic_barrier(2) 2.6.34 Kun m68k atomic_cmpxchg_32(2) 2.6.34 Kun m68k bdflush(2) 1.2 Foraeldet (gor ingenting) siden 2.6, fjernet i 5.15 bind(2) 2.0 Se noterne for socketcall(2) bpf(2) 3.18 brk(2) 1.0 breakpoint(2) 2.2 Kun ARM OABI, defineret med __ARM_NR-praefiks cacheflush(2) 1.2 Ikke pa x86 capget(2) 2.2 capset(2) 2.2 chdir(2) 1.0 chmod(2) 1.0 chown(2) 2.2 Se chown(2) for versionsdetaljer 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 Kun IA-64 clone(2) 1.0 clone3(2) 5.3 close(2) 1.0 close_range(2) 5.9 connect(2) 2.0 Se noterne for socketcall(2) copy_file_range(2) 4.5 creat(2) 1.0 create_module(2) 1.0 Fjernet i 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 Kun SPARC/SPARC64 for kompatibilitet med 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 Fjernet i 3.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 Fjernet i 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 Kun ARM OABI, har __ARM_NR-praefiks getcpu(2) 2.6.19 getcwd(2) 2.2 getdents(2) 2.0 getdents64(2) 2.4 getdomainname(2) 2.2 SPARC, SPARC64; tilgaengelig som osf_getdomainname(2) pa Alpha siden Linux 2.0 getdtablesize(2) 2.0 SPARC (fjernet i 2.6.26), tilgaengelig pa Alpha som 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, var tilgaengellig pa SPARC op til Linux 2.6.26 getitimer(2) 1.0 getpeername(2) 2.0 Se noterne for socketcall(2) getpagesize(2) 2.0 Alpha, kun 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 Se noterne for socketcall(2) getsockopt(2) 2.0 Se noterne for socketcall(2) gettid(2) 2.4.11 gettimeofday(2) 1.0 getuid(2) 1.0 getuid32(2) 2.4 getunwind(2) 2.4.8 Kun IA-64; foraeldet getxattr(2) 2.6; 2.4.18 getxgid(2) 2.0 Kun Alpha; se NOTER getxpid(2) 2.0 Kun Alpha; se NOTER getxuid(2) 2.0 Kun Alpha; se NOTER 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 Kun 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 Se chown(2) for versionsdetaljer lchown32(2) 2.4 lgetxattr(2) 2.6; 2.4.18 link(2) 1.0 linkat(2) 2.6.16 listen(2) 2.0 Se noterne for 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 Kun 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 Se noterne for ipc(2) msgget(2) 2.0 Se noterne for ipc(2) msgrcv(2) 2.0 Se noterne for ipc(2) msgsnd(2) 2.0 Se noterne for 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 Se stat(2) nfsservctl(2) 2.2 Fjernet i 3.1 nice(2) 1.0 old_adjtimex(2) 2.0 Kun Alpha; se NOTER old_getrlimit(2) 2.4 Gammel variant af getrlimit(2) der brugte en anden vaerdi for RLIM_INFINITY oldfstat(2) 1.0 oldlstat(2) 1.0 oldolduname(2) 1.0 oldstat(2) 1.0 oldumount(2) 2.4.116 Navn pa det gamle umount(2)- systemkald pa 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 Kun OpenRISC 1000 pause(2) 1.0 pciconfig_iobase(2) 2.2.15; 2.4 Ikke pa x86 pciconfig_read(2) 2.0.26; 2.2 Ikke pa x86 pciconfig_write(2) 2.0.26; 2.2 Ikke pa x86 perf_event_open(2) 2.6.31 Var perf_counter_open() i 2.6.31; omdobt i 2.6.32 personality(2) 1.2 perfctr(2) 2.2 Kun SPARC; fjernet i 2.6.34 perfmonctl(2) 2.4 Kun IA-64; fjernet i 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) Tilfojet som >>pread<< i 2.2; omdobt >>pread64<< i 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) Tilfojet som >>pwrite<< i 2.2; omdobt >>pwrite64<< i 2.6 pwritev(2) 2.6.30 pwritev2(2) 4.6 query_module(2) 2.2 Fjernet i 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 Se noterne for socketcall(2) recvfrom(2) 2.0 Se noterne for socketcall(2) recvmsg(2) 2.0 Se noterne for socketcall(2) recvmmsg(2) 2.6.33 remap_file_pages(2) 2.6 Foraeldet siden 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 Kun 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 Kun PowerPC/PowerPC64 s390_runtime_instr(2) 3.7 Kun s390 s390_pci_mmio_read(2) 3.19 Kun s390 s390_pci_mmio_write(2) 3.19 Kun s390 s390_sthyi(2) 4.15 Kun s390 s390_guarded_storage(2) 4.12 Kun s390 sched_get_affinity(2) 2.6 Navn pa sched_getaffinity(2) pa SPARC og 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 Navn pa sched_setaffinity(2) pa SPARC og 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 Se noterne for ipc(2) semget(2) 2.0 Se noterne for ipc(2) semop(2) 2.0 Se noterne for ipc(2) semtimedop(2) 2.6; 2.4.22 send(2) 2.0 Se noterne for socketcall(2) sendfile(2) 2.2 sendfile64(2) 2.6; 2.4.19 sendmmsg(2) 3.0 sendmsg(2) 2.0 Se noterne for socketcall(2) sendto(2) 2.0 Se noterne for 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 Kun ARM OABI/EABI (konstant har __ARM_NR-praefiks) 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 Kun Alpha; se NOTER sethostname(2) 1.0 setitimer(2) 1.0 setns(2) 3.0 setpgid(2) 1.0 setpgrp(2) 2.0 Alternativt navn for setpgid(2) pa 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 Se noterne for socketcall(2) settimeofday(2) 1.0 setuid(2) 1.0 setuid32(2) 2.4 setup(2) 1.0 Fjernet i 2.2 setxattr(2) 2.6; 2.4.18 sgetmask(2) 1.0 shmat(2) 2.0 Se noterne for ipc(2) shmctl(2) 2.0 Se noterne for ipc(2) shmdt(2) 2.0 Se noterne for ipc(2) shmget(2) 2.0 Se noterne for ipc(2) shutdown(2) 2.0 Se noterne for 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 Se noterne for socketcall(2) socketcall(2) 1.0 socketpair(2) 2.0 Se noterne for socketcall(2) spill(2) 2.6.13 Kun Xtensa splice(2) 2.6.17 spu_create(2) 2.6.16 Kun PowerPC/PowerPC64 spu_run(2) 2.6.16 Kun 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 Kun PowerPC/PowerPC64 swapcontext(2) 2.6.3 Kun PowerPC/PowerPC64 switch_endian(2) 4.1 Kun 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 Kun PowerPC syscall(2) 1.0 Stadig tilgaengelig pa ARM OABI og MIPS 032 ABI sysfs(2) 1.2 sysinfo(2) 1.0 syslog(2) 1.0 sysmips(2) 2.6.0 Kun 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 Kun ARM OABI usr32(2) 2.4.8.1 Kun ARM OABI utime(2) 1.0 utimensat(2) 2.6.22 utimes(2) 2.2 utrap_install(2) 2.2 Kun SPARC64 vfork(2) 2.2 vhangup(2) 1.0 vm86old(2) 1.0 Var >>vm86<<; omdobt i 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 Kun Xtensa Pa mange platforme, inklusive x86-32 bliver sokkelkald mulitplexede (via glibc-omslagsfunktioner) via socketcall(2) og pa samme made bliver System V IPC-kald multiplexede via ipc(2). Selvom pladser er reserveret for dem i systemkaldtabellen, sa er de folgende systemkald ikke implementeret i standardkernen: : 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) og vserver(2) (se ogsa unimplemented(2)). ftime(3), profil(3) og ulimit(3) findes dog som biblioteksrutiner. Pladsen for phys(2) er i brug siden Linux 2.1.116 for umount(2); phys(2) vil aldrig blive implementeret. Kaldene getpmsg(2) og putpmsg(2) er for kerner tilrettet for at understotte STROMME, og kommer maske aldrig i standardkernen. Der var i kort tid set_zone_reclaim(2), tilfojet i Linux 2.6.13 og fjernet i Linux 2.6.16; dette systemkald var aldrig tilgaengelig for brugerrummet. Systemkald pa fjernede omkodninger Nogle systemkald fandtes kun pa Linuxarkitekturer, der siden er blevet fjernet fra kernen: Blackfin (omkodning fjernet i Linux 4.17) o bfin_spinlock(2) (tilfojet i Linux 2.6.22) o dma_memcpy(2) (tilfojet i Linux 2.6.22) o sram_alloc(2) (tilfojet i Linux 2.6.22) o sram_free(2) (tilfojet i Linux 2.6.22) Metag (omkodning fjernet i Linux 4.17) o metag_get_tls(2) (tilfoj i Linux 3.9) o metag_set_fpu_flags(2) (tilfoj i Linux 3.9) o metag_set_tls(2) (tilfoj i Linux 3.9) o metag_setglobalbit(2) (tilfojet i Linux 3.9) Tile (omkodning fjernet i Linux 4.17) o cmpxchg_badaddr(2) (tilfojet i Linux 2.6.36) NOTER Overordnet set kan koden tilhorende til systemkaldet med nummeret __NR_xxx defineret i /usr/include/asm/unistd.h findes i Linuxkernekilden i rutinen sys_xxx(). Der er dog mange undtagelser, hovedsagelig fordi aeldre systemkald blev erstattet af nye og dette er blevet ordnet noget usystematisk. Pa platforme med proprietaer emulering af operativsystemet sasom sparc, sparc64 og alpha, er der mange yderligere systemkald; mips64 indeholder ogsa et fuldt saet af 32-bit systemkald. Over tid er aendringer til graensefladerne for nogle systemkald blevet nodvendige. En arsag til sadanne aendringer var behovet for at oge storrelsen pa strukturer eller skalerbare vaerdier sendt til systemkaldet. Pa grund af disse aendringer har bestemte arkitekturer (specielt, langvarige 32-bit arkitekturer sasom i386) nu diverse grupper af relaterede systemkald (f.eks. truncate(2) og truncate64(2)) der udforer ligennde opgaver, men kan variere i detaljer sasom storrelsen pa deres argumenter. (Som naevnt tidligere er programmer generelt ikke opmaerksomme pa dette: glibc-omslagsfunktionerne gor lidt arbejde for at sikre, at det rigtige systemkald igangsaettes, og at ABI-kompatibilitet bevares for aeldre binaere filer). Eksempler pa systemkald der findes i flere versioner er som folger: o Der er nu tre forskellige versioner af stat(2): sys_stat() (plads __NR_oldstat), sys_newstat() (plads __NR_stat) og sys_stat64() (plads __NR_stat64), for den sidste er den nyeste. En lignende historie gaelder for lstat(2) og fstat(2). o Pa samme made refererer __NR_oldolduname, __NR_olduname og __NR_uname til rutinerne sys_olduname(), sys_uname() og sys_newuname(). o I LInux 2.0 kom en ny version af vm86(2), med den gamle og de nye kernerutiner navngivet sys_vm86old() og sys_vm86(). o I Linux 2.4 kom en ny version af getrlimit(2), med den gamle og nye kernerutiner navngivet sys_old_getrlimit() (plads __NR_getrlimit) og sys_getrlimit() (plads __NR_ugetrlimit). o Linux 2.4 ogede storrelsen pa bruger- og gruppe-id'er fra 16 til 32 bit. For at understotte denne aendring blev en vifte af systemkald tilfojet (f.eks. chown32(2), getuid32(2), getgroups32(2), setresuid32(2)), der efterfulgte tidligere kald med det samme navn uden >>32<<-suffiks. o Linux 2.4 tilfojede understottelse for programmer pa 32-bit arkitekturer for at tilga store filer (dvs. filer hvor storrelserne og filforskydningerne ikke kan repraesenteres i 32 bit). For at understotte denne aendring, var erstatninger kraever for systemkald der handterer filforskydninger og storrelser. De folgende systemkald blev derfor tilfojet: fcntl64(2), getdents64(2), stat64(2), statfs64(2), truncate64(2) og deres analoger der fungerer med fildeskriptorer og symbolske henvisninger. Disse systemkald efterfolger aeldre systemkald, der med undtagelse af >>stat<<-kald har de samme navne uden >>64<<-suffikset. Pa nyere platforme der kun har 64-bit filadgang og 32-bit UID'er/GID'er (f.eks. alpha, ia64, s390x, x86-64), er der kun en enkelt version af systemkaldene for UID/GID og filadgang. Pa platforme (typisk 32-bit platforme) hvor *64- og *32-kald findes, er de andre versioner foraeldet. o Kaldene rt_sig* blev tilfojet i Linux 2.2 for at understotte tilfojelsen af realtids signaler (se signal(7)). Disse systemkald efterfolger de aeldre systemkald med det samme navn uden >>rt_<<-praefikset. o Systemkaldene select(2) og mmap(2) bruger fem eller flere argumenter, hvilket medforte problemer i maden argumentdirigering blev brugt pa i386. Mens andre arkitekturer har sys_select() og sys_mmap() svarende til __NR_select og __NR_mmap, sa finder man pa i386 old_select() og old_mmap() (rutiner der bruger en peger til en argumentblok) i stedet for. I disse dage er fem argumenter ikke et problem laengere, og der er en __NR__newselect, der svarer direkte til sys_select() og tilsvarende for __NR_mmap2. s390x er den eneste 64-bit arkitektur, der har old_mmap(). Arkitekturspecifikke detaljer: Alpha getxgid(2) returnerer et par af UID og effektiv UID via registrene r0 og r20; tilbydes i stedet for getgid(2) og getegid(2). getxpid(2) returnerer et par af PID og over-PID via registrene r0 and r20; tilbydes i stedet for getpid(2) og getppid(2). old_adjtimex(2) er en variant af adjtimex(2), der bruger struct timeval32, for kompatibilitet med OSF/1. getxuid(2) returnerer et par af UID og effektiv UID via registrene r0 og r20; tilbydes i stedet for getuid(2) og geteuid(2). sethae(2) bruges til at konfigurere Host Address Extension-registeret pa prisbillige Alphaer for at tilga adresserum udover de forste 27 bit. SE OGSA intro(2), syscall(2), unimplemented(2), errno(3), libc(7), vdso(7), ausyscall(8) OVERSAETTELSE Oversaettere af denne manual til dansk Joe Hansen Denne oversaettelse er gratis dokumentation; laes GNU General Public License version 3 eller nyere for ophavsretbetingelser. Der er INGEN ANSVAR. Hvis du stoder pa fejl i oversaettelsen af denne vejledning, skal du sende en besked til . Linux man-pages 6.18 8. februar 2026 syscalls(2)