Opis funkcji przerwania int 80h: 51-100

Jeśli jakaś funkcja zakończy się błędem, w EAX/RAX zwracana jest wartość ujemna z przedziału od -4096 do -1 włącznie.

Z drugiej strony, opisy funkcji na stronach manuala mówią, że zwracane jest -1, a wartość błędu jest zapisywana do zmiennej errno z biblioteki GLIBC. Dzieje się tak tylko w przypadku, gdy korzystamy z interfejsu języka C (czyli deklarujemy i uruchamiamy zewnętrzne funkcje odpowiadające wywołaniom systemowym i linkujemy nasz program z biblioteką języka C), a nie bezpośrednio z wywołań systemowych (czyli przerwania int 80h).

Najbardziej aktualne informacje o funkcjach systemowych można znaleźć zazwyczaj w sekcji 2 (lub 3) manuala, na przykład man 2 open.

Najnowsze wersje jądra można znaleźć na www.kernel.org, a pliki z listą funkcji i ich numerów są pod ścieżkami:

Najnowsze wersje stron manuala można znaleźć tu: www.kernel.org/pub/linux/docs/man-pages.

Napis ASCIIZ oznacza łańcuch znaków ASCII zakończony znakiem/bajtem Zerowym.

Jeśli potrzeba, przy każdej funkcji jest odnośnik do opisu argumentów i innych dodatkowych informacji: typów danych, wartości błędów, możliwych wartości parametrów itp.

Podstawowe funkcje przerwania 80h: 51-100
Numer/ EAX x86-64 RAX Opis ArgumentyZwraca
51
163
Włącz/wyłącz zapisywanie kończonych procesów (sys_acct)
EBX/RDI = adres nazwy pliku, gdzie ma być zapisywana informacja o kończonych procesach lub NULL, gdy chcemy wyłączyć takie zapisywanie.
EAX = 0
EAX = błąd ENOSYS, ENOMEM, EPERM, EACCES, EIO, EUSERS

52
166
Odmontowanie systemu plików 2 (sys_umount2)
EBX/RDI = adres nazwy zamontowanego pliku specjalnego/katalogu ASCIIZ
ECX/RSI = flaga = 1, by siłą odmonotwać, inaczej 0
EAX = 0
EAX = błąd - każdy związany z systemem plików

53
-
Funkcja systemowa sys_lock (porzucone)
--nieużywane od 2.0--
zawsze EAX = -1

54
16
Manipulacja urządzeniem znakowym (sys_ioctl)
EBX/RDI = deskryptor pliku
ECX/RSI = kod komendy (man 2 ioctl_list)
EDX/RDX = adres zapisywalnego obszaru danych lub innej struktury, zależy od komendy
EAX = 0
EAX = błąd EBADF, EFAULT, EINVAL, ENOTTY

55
72
Kontrola nad deskryptorem pliku (sys_fcntl)
EBX/RDI = deskryptor pliku
ECX/RSI = kod komendy
EDX/RDX zależy od komendy
EAX zależy od komendy
EAX = błąd EACCES, EAGAIN, EBADF, EDEADLK, EFAULT, EINTR, EINVAL, EMFILE, ENOLOCK, EPERM

56
-
Funkcja systemowa sys_mpx (porzucone)
--nieużywane od 2.0--
zawsze EAX = -1

57
109
Ustaw ID grupy procesu (sys_setpgid)
EBX/RDI = ID procesu (PID)
ECX/RSI = ID grupy
EAX = 0
EAX = błąd EINVAL, EPERM, ESRCH

58
libc
-
Pobierz/ustaw limity zasobów (sys_ulimit)
--nieużywane (zamiast tego używaj getrlimit, setrlimit, sysconf)--
man 3 ulimit
EBX/RDI = komenda, patrz: sys_ulimit
ECX/RSI = nowylimit
EAX = aktualny limit
EAX = błąd

59
-
Funkcja systemowa sys_oldolduname (porzucone)
 
 

60
95
Ustaw maskę uprawnień przy tworzeniu plików (sys_umask)
EBX/RDI = maska, patrz prawa dostępu / tryb
Gdy tworzymy plik o uprawnieniach X, naprawdę ma on uprawnienia X AND (NOT umask)
EAX = poprzednia umask

61
161
Zmień katalog główny (sys_chroot)
EBX/RDI = adres nazwy/ścieżki nowego katalogu głównego
EAX = 0
EAX = błąd - każdy zależny od systemu plików

62
libc
136
Informacje o zamontowanym systemie plików (sys_ustat)
--zamiast tego, używaj statfs--
EBX:ECX?/RDI = numer główny:poboczny urządzenia / EBX/RDI wskazuje na 64 bity numeru urządzenia
EDX/ECX (odpowiednio) / RSI = adres struktury ustat
EAX = 0
EAX = błąd EFAULT, EINVAL, ENOSYS

63
33
Zamień deskryptor zduplikowanym deskryptorem pliku (sys_dup2)
EBX/RDI = deskryptor do zduplikowania
ECX/RSI = deskryptor, do którego powinien być przyznany duplikat
EAX = zduplikowany deskryptor
EAX = błąd EBADF, EMFILE

64
110
Pobierz PID procesu rodzica (sys_getppid)
nic
EAX = PID rodzica

65
111
Pobierz ID grupy procesu rodzica (sys_getpgrp)
nic
EAX = GID rodzica
EAX=błąd EINVAL, EPERM, ESRCH

66
112
Stwórz sesję, ustaw ID grupy (sys_setsid)
nic
EAX = ID procesu uruchamiającego
EAX=błąd EPERM

67
-
Pobierz/ustal procedurę obsługi sygnału (sys_sigaction)
EBX/RDI = numer sygnału
ECX/RSI = adres struktury sigaction opisującą bieżącą procedurę
EDX/RDX = adres struktury sigaction opisującą starą procedurę
EAX = 0
EAX=błąd EINVAL, EINTR, EFAULT

68
-
Pobierz maskę sygnałów procesu (sys_sgetmask)
--przestarzałe (zamiast tego używaj sys_sigprocmask)--
EAX = maska sygnałów bieżącego procesu

69
-
Ustaw maskę sygnałów procesu (sys_ssetmask)
--przestarzałe (zamiast tego używaj sys_sigprocmask)--
EBX/RDI = nowa maska sygnałów procesu
EAX = poprzednia maska sygnałów

70
113
Ustaw realny i efektywny ID użytkownika (sys_setreuid)
EBX/RDI = realny ID użytkownika (UID)
ECX/RSI = efektywny UID
EAX = 0
EAX = błąd EPERM

71
114
Ustaw realny i efektywny ID grupy (sys_setregid)
EBX/RDI = realny ID grupy (GID)
ECX/RSI = efektywny GID
EAX = 0
EAX = błąd EPERM

72
-
Zastąpienie dla sigpause - sys_sigsuspend
EBX/RDI = adres nowej maski sygnałowej procesu - struktury sigset_t
EAX = 0
EAX = błąd

73
-
Pobierz trwające blokujące sygnały (sys_sigpending)
EBX/RDI = adres maski sygnałów - struktury sigset_t
EAX = 0
EAX = błąd

74
170
Ustaw nazwę hosta dla systemu (sys_sethostname)
EBX/RDI = adres nazwy hosta
ECX/RSI = długość nazwy
EAX = 0
EAX = błąd EFAULT, EINVAL, EPERM

75
160
Ustaw limity zasobów (sys_setrlimit)
EBX/RDI = numer zasobu
ECX/RSI = adres struktury rlimit
EAX = 0
EAX = błąd EFAULT, EINVAL, EPERM

76
97
Pobierz limity zasobów (sys_getrlimit)
EBX/RDI = numer zasobu
ECX/RSI = adres struktury rlimit
EAX = 0
EAX = błąd EFAULT, EINVAL, EPERM

77
98
Pobierz zużycie zasobów (sys_getrusage)
EBX/RDI = numer użytkownika (who)
ECX/RSI = adres struktury rusage
EAX = 0
EAX = błąd EFAULT, EINVAL, EPERM

78
96
Pobierz czas (sys_gettimeofday)
EBX/RDI = adres struktury timeval
ECX/RSI = adres struktury timezone
RAX = 0 i wynik zapisany w strukturach
EAX = błąd EFAULT, EINVAL, EPERM

79
164
Ustaw czas (sys_settimeofday)
EBX/RDI = adres struktury timeval
ECX/RSI = adres struktury timezone
EAX = 0
EAX = błąd EFAULT, EINVAL, EPERM

80
115
Pobierz liczbę dodatkowych grup (sys_getgroups)
EBX/RDI = rozmiar tablicy z ECX/RSI
ECX/RSI = adres tablicy, gdzie zostaną zapisane GID-y (DWORDY) grup dodatkowych
EAX = liczba dodatkowych grup procesu
EAX = błąd EFAULT, EINVAL, EPERM

81
116
Ustaw liczbę dodatkowych grup (sys_setgroups)
EBX/RDI = rozmiar tablicy z ECX/RSI
ECX/RSI = adres tablicy, gdzie zawierającą GID-y (DWORDY)
EAX = 0
EAX = błąd EFAULT, EINVAL, EPERM

82
23
Oczekiwanie zmiany stanu deskryptora(ów) (sys_select)
EBX/RDI = najwyższy numer spośród deskryptorów + 1
ECX/RSI = adres tablicy deskryptorów sprawdzanych, czy można z nich czytać
EDX/RDX = adres tablicy deskryptorów sprawdzanych, czy można do nich pisać
ESI/R10 = adres tablicy deskryptorów sprawdzanych, czy nie wystąpił u nich wyjątek
EDI/R8 = adres struktury timeval zawierającą maksymalny czas oczekiwania

EAX = całkowita liczba deskryptorów, która pozostała w tablicach
EAX = 0, gdy skończył się czas
EAX = błąd EBADF, EINTR, EINVAL, ENOMEM

83
88
Stwórz dowiązanie symboliczne do pliku (sys_symlink)
EBX/RDI = adres nazwy pliku ASCIIZ
ECX/RSI = adres nazwę linku ASCIIZ
EAX = 0
EAX = błędy związane z uprawnieniami lub systemem plików

84
-
Funkcja systemowa sys_oldlstat (porzucone)
 
 

85
89
Przeczytaj zawartość linku symbolicznego (sys_readlink)
EBX/RDI = adres nazwy dowiązania symbolicznego ASCIIZ
ECX/RSI = adres bufora, który otrzyma przeczytaną informację
EDX/RDX = długość bufora
EAX = liczba przeczytanych znaków
EAX = błąd

86
134
Wybierz współdzieloną bibliotekę (sys_uselib)
EBX/RDI = adres nazwy biblioteki ASCIIZ
EAX = 0
EAX = błąd EACCES, ENOEXEC

87
167
Uruchomienie pliku wymiany (sys_swapon)
EBX/RDI = adres ścieżki do pliku/urządzenia swap
ECX/RSI = flagi wymiany
EAX = 0
EAX = błąd

88
169
Reboot systemu (sys_reboot)
EBX/RDI = pierwsza liczba magiczna = 0FEE1DEADh
ECX/RSI = druga liczba magiczna = 672274793 lub 85072278 lub 369367448
EDX/RDX = flaga
ESI/R10 = adres dodatkowego argumentu (tylko przy RESTART2)
EAX = 0
EAX = błąd

89
-
Czytaj katalog (sys_readdir)
EBX/RDI = deskryptor otwartego katalogu
ECX/RSI = adres struktury dirent
EDX/RDX = liczba struktur do odczytania (ignorowane, czytana jest 1 struktura)
EAX = 1
EAX = 0 na końcu katalogu
EAX = błąd

90
9
Mapuj plik/urządzenie do pamięci (sys_mmap)
-- zgodne z man 2 mmap--
EBX/RDI = proponowany adres początkowy
ECX/RSI = długość mapowanego obszaru
EDX/RDX = ochrona
ESI/R10 = flagi mapowania
EDI/R8 = deskryptor mapowanego pliku, jeśli mapowanie nie jest anonimowe
EBP/R9 = offset początku mapowanych danych w pliku
EAX = rzeczywisty adres mapowania
EAX = błąd

91
11
Odmapuj plik/urządzenie z pamięci (sys_munmap)
EBX/RDI = adres początkowy obszaru
ECX/RSI = liczba bajtów
EAX = 0
EAX = błąd

92
76
Skróć plik (sys_truncate)
EBX/RDI = adres nazwy pliku ASCIIZ
ECX/RSI = liczba bajtów, do której ma zostać skrócony plik
EAX = 0
EAX = błąd

93
77
Skróć plik (sys_ftruncate)
EBX/RDI = deskryptor pliku otwartego do zapisu
ECX/RSI = liczba bajtów, do której ma zostać skrócony plik
EAX = 0
EAX = błąd

94
91
Zmiana uprawnień (sys_fchmod)
EBX/RDI = deskryptor otwartego pliku
ECX/RSI = nowe prawa dostępu
EAX = 0
EAX = błąd

95
93
Zmiana właściciela (sys_fchown)
EBX/RDI = deskryptor otwartego pliku
ECX/RSI = nowy numer użytkownika
EDX/RDX = nowy numer grupy
EAX = 0
EAX = błąd

96
140
Podaj priorytet szeregowania zadań (sys_getpriority)
EBX/RDI = czyj priorytet zmieniamy
ECX/RSI = identyfikator procesu, grupy procesów lub użytkownika, którego priorytet zmieniamy (0=bieżący)
EAX = aktualny priorytet dla wybranego obiektu (od 1 do 40)

97
141
Ustaw priorytet szeregowania zadań (sys_setpriority)
EBX/RDI = czyj priorytet zmieniamy
ECX/RSI = identyfikator procesu, grupy procesów lub użytkownika, którego priorytet zmieniamy (0=bieżący)
EDX/RDX = nowy priorytet -20...19
EAX = 0
EAX = błąd

98
-
Profilowanie czasu wykonywania (sys_profil)
--man 3 profil--
EBX/RDI = adres tablicy WORDów
ECX/RSI = długość tej tablicy, na którą pokazuje EBX/RDI
EDX/RDX = offset początkowy
ESI/R10 = mnożnik
zawsze EAX = 0

99
137
Pobierz statystyki systemu plików (sys_statfs)
EBX/RDI = adres nazwy dowolnego pliku w zamontowanym systemie plików
ECX/RSI = adres struktury statfs
EAX = 0
EAX = błąd

100
138
Pobierz statystyki systemu plików (sys_fstatfs)
EBX/RDI = deskryptor dowolnego otwartego pliku w zamontowanym systemie plików
ECX/RSI = adres struktury statfs
EAX = 0
EAX = błąd



Poprzednia część (klawisz dostępu 3)
Kolejna część (klawisz dostępu 4)
Spis treści off-line (klawisz dostępu 1)
Spis treści on-line (klawisz dostępu 2)
Ułatwienia dla niepełnosprawnych (klawisz dostępu 0)