Syscall-Liste Linux

05/08/2010 - 11:08 von Simon T. | Report spam
Hallo!

Gibt es irgentwo eine Liste mit allen Linux-Syscalls und den Argumenten
die Übermittelt werden können/müssen? Auch ausführlich und mit
Beschreibung?
Danke für eure Hilfe!



MfG Simon T.
 

Lesen sie die antworten

#1 Markus Wichmann
05/08/2010 - 15:01 | Warnen spam
Simon T. schrieb:
Hallo!

Gibt es irgentwo eine Liste mit allen Linux-Syscalls und den Argumenten
die Übermittelt werden können/müssen? Auch ausführlich und mit
Beschreibung?
Danke für eure Hilfe!






Da gibts nicht viel zu wissen. In /usr/include/asm/unistd.h (oder aber
..._64.h) stehen die Syscall-Nummern nebst Namen, in den Manpages die
Argumente nebst Beschreibung und Rückgabewert (Besonderheit: Der Syscall
gibt im Fehlerfall -errno zurück.[*] Das Auftrennen von Rückgabewert und
errno macht der Wrapper der libc.) Und die Register-Reihenfolge ist
immer die gleiche.

Für i386: Syscall-Nummer nach eax, die Argumente nach ebx, ecx, edx,
esi, edi und ebp.

Für amd64: Syscall-Nummer nach rax, Argumente nach rdi, rsi, rdx, r10,
r8, r9.

Steht übrigens im ABI drin. Ansonsten gilt noch, dass Syscalls nur die
General Purpose-Register veràndern dürfen, also keine FPU-, MMX- oder
SSE-Register.

[*] Wenn du es ganz pedantisch haben willst: Liegt der Rückgabewert im
Bereich von -1 bis -4095, so ist der syscall fehlgeschlagen und der
Rückgabewert die negative errno-Konstante für den Grund.

Tschö,
Markus

Ähnliche fragen