syscalls(2)

NAVN
syscalls - Linuxsystemkald

SYNOPSIS
Linuxsystemkald.

BESKRIVELSE
Systemkaldet er en fundamental grænseflade mellem et program og Linuxkernen.

  Systemkald og biblioteksomslagsfunktioner
Systemkald startes generelt ikke direkte, men snarere via omslagsfunktioner i glibc (eller måske et andet bibliotek). For detaljer om direkte igangsættelse af et systemkald, se intro(2). Ofte, men ikke altid, er navnet for omslagsfunktionen det samme som navnet på systemkaldet, som det igangsætter. For eksempel indeholder glibc en funktion chdir(), der igangsætter det underliggende »chdir«-systemkald.

Ofte er glibc-omslagsfunktionen ret tynd, gør ikke meget andet end at kopiere argumenter til det korrekte register før igangsættelse af systemkaldet, og så angivelse af errno på passende vis efter systemkaldet er returneret. (Det er de samme trin, der udføres af syscall(2), det kan bruges til at igangsætte systemkald, hvor der ikke tilbydes en omslagsfunktion). Bemærk: systemkald indikerer en fejl ved at returnere et negativt fejlnummer til kalderen på arkitekturer uden et separat fejlregister/flag, som noteret i syscall(2); når dette sker, negerer omslagsfunktionen det returnerede fejlnummer (for at gøre det positivt), kopier det til errno, og returnerer -1 til kalderen af omslaget.

Nogle gange udfører omslagsfunktionen dog lidt ekstra arbejde før igangsættelse af systemkaldet. For eksempel er der i dag (af årsager 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. Bemærk de følgende punkter:

•   Hvor ingen kerneversion er indikeret, så kom systemkaldet i Linux 1.0 eller tidligere.

•   Hvor et systemkald er markeret »1.2«, betyder dette at systemkaldet sandsynligvis fremkom i en Linux 1.1.x-kerneversion og først 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).

•   Hvor et systemkald er markeret »2.0«, betyder dette at systemkaldet sandsynligvis fremkom i en Linux 1.3.x-kerneversion og først 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).

•   Hvor et systemkald er markeret »2.2«, betyder dette at systemkaldet sandsynligvis fremkom i en Linux 2.1.x-kerneversion og først 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).

•   Hvor et systemkald er markeret »2.4«, betyder dette at systemkaldet sandsynligvis fremkom i en Linux 2.3.x-kerneversion og først 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).

•   Hvor et systemkald er markeret »2.6«, betyder dette at systemkaldet sandsynligvis fremkom i en Linux 2.5.x-kerneversion og først 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).

•   Startende med Linux 2.6.0 blev udviklingsmodellen ændret, og nye systemkald kan komme i hver Linux 2.6.x-udgivelse. I dette tilfælde vises det præcise versionsnummer hvor systemkaldet opstod. Denne konvention fortsætter 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.

•   I nogle tilfælde blev et systemkald tilføjet til en stabil kerneserie efter denne blev forgrenet fra en tidligere stabil kerneserie, og så tilbageomkodet til den tidligere stabile kerneserie. For eksempel blev nogle systemkald der fremkom i Linux 2.6.x også tilbageomkodet til en Linux 2.4.x-udgivelse efter Linux 2.4.15. Når det er sådan, vises versionen hvor systemkaldet fremkom i begge hovedkerneserier.

Listen over systemkald der er tilgængelige fra og med Linux 5.14 (eller i nogle få tilfælde på ældre kerner) er som følger:

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 | Forældet (gør 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-præfiks
cacheflush(2) | 1.2 | Ikke på 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-præfiks
getcpu(2) | 2.6.19
getcwd(2) | 2.2
getdents(2) | 2.0
getdents64(2) | 2.4
getdomainname(2) | 2.2 | SPARC, SPARC64; tilgængelig som osf_getdomainname(2) på Alpha siden Linux 2.0
getdtablesize(2) | 2.0 | SPARC (fjernet i 2.6.26), tilgængelig på 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 tilgængellig på 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; forældet
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 værdi 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 på det gamle umount(2)- systemkald på 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 på x86
pciconfig_read(2) | 2.0.26; 2.2 | Ikke på x86
pciconfig_write(2) | 2.0.26; 2.2 | Ikke på x86
perf_event_open(2) | 2.6.31 | Var perf_counter_open() i 2.6.31; omdøbt 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) |  | Tilføjet som »pread« i 2.2; omdøbt »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) |  | Tilføjet som »pwrite« i 2.2; omdøbt »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 | Forældet 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 på sched_getaffinity(2) på 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 på sched_setaffinity(2) på 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-præfiks)
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) på 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 tilgængelig på 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«; omdøbt 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

På mange platforme, inklusive x86-32 bliver sokkelkald mulitplexede (via glibc-omslagsfunktioner) via socketcall(2) og på samme måde bliver System V IPC-kald multiplexede via ipc(2).

Selvom pladser er reserveret for dem i systemkaldtabellen, så er de følgende 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 også 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 understøtte STRØMME, og kommer måske aldrig i standardkernen.

Der var i kort tid set_zone_reclaim(2), tilføjet i Linux 2.6.13 og fjernet i Linux 2.6.16; dette systemkald var aldrig tilgængelig for brugerrummet.

  Systemkald på fjernede omkodninger
Nogle systemkald fandtes kun på Linuxarkitekturer, der siden er blevet fjernet fra kernen:

Blackfin (omkodning fjernet i Linux 4.17)
    •   bfin_spinlock(2) (tilføjet i Linux 2.6.22)
    •   dma_memcpy(2) (tilføjet i Linux 2.6.22)
    •   sram_alloc(2) (tilføjet i Linux 2.6.22)
    •   sram_free(2) (tilføjet i Linux 2.6.22)

Metag (omkodning fjernet i Linux 4.17)
    •   metag_get_tls(2) (tilføj i Linux 3.9)
    •   metag_set_fpu_flags(2) (tilføj i Linux 3.9)
    •   metag_set_tls(2) (tilføj i Linux 3.9)
    •   metag_setglobalbit(2) (tilføjet i Linux 3.9)

Tile (omkodning fjernet i Linux 4.17)
    •   cmpxchg_badaddr(2) (tilføjet i Linux 2.6.36)

NOTER
Overordnet set kan koden tilhørende 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 ældre systemkald blev erstattet af nye og dette er blevet ordnet noget usystematisk. På platforme med proprietær emulering af operativsystemet såsom sparc, sparc64 og alpha, er der mange yderligere systemkald; mips64 indeholder også et fuldt sæt af 32-bit systemkald.

Over tid er ændringer til grænsefladerne for nogle systemkald blevet nødvendige. En årsag til sådanne ændringer var behovet for at øge størrelsen på strukturer eller skalerbare værdier sendt til systemkaldet. På grund af disse ændringer har bestemte arkitekturer (specielt, langvarige 32-bit arkitekturer såsom i386) nu diverse grupper af relaterede systemkald (f.eks. truncate(2) og truncate64(2)) der udfører ligennde opgaver, men kan variere i detaljer såsom størrelsen på deres argumenter. (Som nævnt tidligere er programmer generelt ikke opmærksomme på dette: glibc-omslagsfunktionerne gør lidt arbejde for at sikre, at det rigtige systemkald igangsættes, og at ABI-kompatibilitet bevares for ældre binære filer). Eksempler på systemkald der findes i flere versioner er som følger:

•   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 gælder for lstat(2) og fstat(2).

•   På samme måde refererer __NR_oldolduname, __NR_olduname og __NR_uname til rutinerne sys_olduname(), sys_uname() og sys_newuname().

•   I LInux 2.0 kom en ny version af vm86(2), med den gamle og de nye kernerutiner navngivet sys_vm86old() og sys_vm86().

•   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).

•   Linux 2.4 øgede størrelsen på bruger- og gruppe-id'er fra 16 til 32 bit. For at understøtte denne ændring blev en vifte af systemkald tilføjet (f.eks. chown32(2), getuid32(2), getgroups32(2), setresuid32(2)), der efterfulgte tidligere kald med det samme navn uden »32«-suffiks.

•   Linux 2.4 tilføjede understøttelse for programmer på 32-bit arkitekturer for at tilgå store filer (dvs. filer hvor størrelserne og filforskydningerne ikke kan repræsenteres i 32 bit). For at understøtte denne ændring, var erstatninger kræver for systemkald der håndterer filforskydninger og størrelser. De følgende systemkald blev derfor tilføjet: fcntl64(2), getdents64(2), stat64(2), statfs64(2), truncate64(2) og deres analoger der fungerer med fildeskriptorer og symbolske henvisninger. Disse systemkald efterfølger ældre systemkald, der med undtagelse af »stat«-kald har de samme navne uden »64«-suffikset.

    På 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. På platforme (typisk 32-bit platforme) hvor *64- og *32-kald findes, er de andre versioner forældet.

•   Kaldene rt_sig* blev tilføjet i Linux 2.2 for at understøtte tilføjelsen af realtids signaler (se signal(7)). Disse systemkald efterfølger de ældre systemkald med det samme navn uden »rt_«-præfikset.

•   Systemkaldene select(2) og mmap(2) bruger fem eller flere argumenter, hvilket medførte problemer i måden argumentdirigering blev brugt på i386. Mens andre arkitekturer har sys_select() og sys_mmap() svarende til __NR_select og __NR_mmap, så finder man på 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 længere, 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 på prisbillige Alphaer for at tilgå adresserum udover de første 27 bit.

SE OGSÅ
intro(2), syscall(2), unimplemented(2), errno(3), libc(7), vdso(7), ausyscall(8)

OVERSÆTTELSE
Oversættere af denne manual til dansk Joe Hansen <joedalton2@yahoo.dk>

Denne oversættelse er gratis dokumentation; læs GNU General Public License version 3 (https://www.gnu.org/licenses/gpl-3.0.html) eller nyere for ophavsretbetingelser. Der er INGEN ANSVAR.

Hvis du støder på fejl i oversættelsen af ​​denne vejledning, skal du sende en besked til debian-l10n-danish@lists.debian.org.