next up previous contents
Next: Über dieses Dokument Up: Das VFS und ext2fs Previous: Die Quellen von ext2

Systemaufrufe

Jeder Systemaufruf hat eine Nummer, mount z.B. die 21. Ein Systemaufruf wird gemacht, indem man die Paramter des Aufrufs mitsamt der Nummer auf den Stack legt und dann Interrupt 0x80 auslöst und damit in den kernel springt. Der Interrupthandler befindet sich in den Kernel Quellen für Intel in arch/i386/kernel/entry.S. Dort wird der Nummer 21 der Aufruf der Funktion sys_mount zugeordnet.

Allerdings kann man Funktionen definieren, die einem diese Arbeit abnehmen. Dazu benutzt man Makros aus /usr/include/sys/syscall.h. Diese Datei inkludiert eine maschinenspezifisches Datei, für Intel z.B. /usr/include/i386/syscall.h. In dieser Datei sind Makros namens _systcallX definiert, um für systemcalls mit X verschieden Parametern eine Funktion mit ebensovielen Parametern zu definieren.

Im allgemeinen definiert die libc bereits eine Funktion für jeden systemcall. Die Funktion mount ist beispielsweise mit obigen Makros in den libc Quellen in sysdeps/linux/mount.S definiert.


next up previous contents
Next: Über dieses Dokument Up: Das VFS und ext2fs Previous: Die Quellen von ext2

Matthias
Fri May 8 12:45:01 MEST 1998