osdev.labedz.org

Procedury wywołań systemowych poziomu aplikacji

Procedury wywołań systemowych poziomu aplikacji mają za zadanie umieszczenie argumentów wywołania na stosie programowym aplikacji, ustawienie numeru wywołania systemowego w rejestrze EAX procesora, wywołanie bramki zadania w celu przełączenia wykonywania w tryb systemowy i ewentualnie pobranie zwróconej wartość ze stosu aplikacji.

Przykład wywołania systemowego poziomu aplikacji z pobraniem argumentu ze stosu:

pid_t getpid(void) { pid_t pid; __asm__("mov %0, %%eax" : : "r" (__NR_getpid)); __asm__("int $0x22"); __asm__("pop %eax"); __asm__("mov %%eax, %0": "=m" (pid)); return pid; }