Opis funkcji systemowych syscall: 151-200

Jeśli jakaś funkcja zakończy się błędem, w 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 syscall).

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 syscall: 151-200
Numer/ RAX Opis ArgumentyZwraca
151
Zablokowanie całej pamięci procesu (sys_mlockall)
RDI = flagi blokowania pamięci
RAX = 0
RAX = błąd EINVAL, ENOMEM, EAGAIN, EPERM

152
Odblokowanie całej pamięci procesu (sys_munlockall)
nic
RAX = 0
RAX = błąd.

153
Wirtualnie odłącz bieżący terminal (sys_vhangup)
nic
RAX = 0
RAX = błąd EPERM

154
Zmień tablicę LDT (sys_modify_ldt)
RDI = numer funkcji
RSI = adres miejsca na przechowanie danych
RDX = liczba bajtów obszaru pod [RSI]
RAX = liczba przeczytanych bajtów lub 0 (gdy zapisywano)
RAX = błąd EINVAL, ENOSYS, EFAULT

155
Zmień główny system plików/katalog (sys_pivot_root)
RDI = adres łańcucha znaków - nowy główny katalog bieżącego procesu
RSI = adres łańcucha znaków - otrzyma stary główny katalog bieżącego procesu
RAX = 0
RAX = błąd EBUSY, EINVAL, EPERM, ENOTDIR + błędy sys_stat

156
Zmień parametry jądra (sys_sysctl)
RDI = adres struktury sysctl_args
RAX = 0
RAX = błąd EPERM, ENOTDIR, EFAULT

157
Działania na procesie (sys_prctl)
RDI = opcja
RSI, RDX, R10, R8 = argumenty
RAX = 0 lub 1
RAX = błąd EINVAL

158
Ustaw stan wątku zależny od architektury (sys_arch_prctl)
RDI = kod podfunkcji
RSI = parametr podfunkcji (wartość do wstawienia lub adres zmiennej w przypadku pobierania)
RAX = 0
RAX = błąd EFAULT, EINVAL, EPERM

159
Dopasowanie zegara w jądrze (sys_adjtimex)
RDI = adres struktury timex
RAX = stan zegara (patrz timex)
RAX = błąd EINVAL, EPERM, EFAULT

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

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

162
Zapisz pamięć podręczną na dysku (sys_sync)
nic
RAX zawsze = 0 i nie ma żadnych błędów

163
Włącz/wyłącz zapisywanie kończonych procesów (sys_acct)
RDI = adres nazwy pliku, gdzie ma być zapisywana informacja o kończonych procesach lub NULL, gdy chcemy wyłączyć takie zapisywanie.
RAX = 0
RAX = błąd ENOSYS, ENOMEM, EPERM, EACCES, EIO, EUSERS

164
Ustaw czas (sys_settimeofday)
RDI = adres struktury timeval
RSI = adres struktury timezone
RAX = 0
RAX = błąd EFAULT, EINVAL, EPERM

165
Montowanie systemu plików (sys_mount)
RDI = adres nazwy urządzenia/pliku specjalnego
RSI = adres ścieżki do punktu montowania
RDX = adres nazwy systemu plików
R10 = flagi montowania
R8 = adres dodatkowych danych, niezależne od urządzenia
RAX = 0
RAX = błąd - każdy, który może się zdarzyć w systemie plików lub jądrze

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

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

168
Wyłączenie pliku wymiany (sys_swapoff)
RDI = adres ścieżki i nazwy pliku/urządzenia swap
RAX = 0
RAX = błąd

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

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

171
Ustal nazwę domeny (sys_setdomainname)
RDI = adres łańcucha znaków, zawierającego domenę
RSI = długość tego łańcucha znaków
RAX = 0
RAX = błąd EINVAL, EPERM, EFAULT

172
Ustaw prawa dostępu do wszystkich portów (sys_iopl)
RDI = poziom IOPL od 0 (normalny proces) do 3
RAX = 0
RAX = błąd

173
Zmień prawa dostępu do portów (sys_ioperm)
RDI = początkowy numer portu
RSI = liczba bajtów, które będzie można wysłać/odebrać
RDX = końcowy numer portu
RAX = 0
RAX = błąd

174
Utwórz wpis ładowalnego modułu jądra (sys_create_module)
RDI = adres nazwy modułu
RSI = długość nazwy
RAX = adres modułu w jądrze
RAX = błąd EINVAL, EPERM, EFAULT, EEXIST, ENOMEM

175
Inicjalizacja modułu jądra (sys_init_module)
RDI = adres nazwy modułu
RSI = adres struktury module
RAX = 0
RAX = błąd EINVAL, EPERM, EFAULT, ENOENT, EBUSY

176
Usuń wpis nieużywanego modułu jądra (sys_delete_module)
RDI = adres nazwy modułu (0 oznacza usunięcie wpisów wszystkich nieużywanych modułów, które można usunąć automatycznie)
RAX = 0
RAX = błąd EINVAL, EPERM, EFAULT, ENOENT, EBUSY

177
Pobierz symbole eksportowane przez jądro i moduły (sys_get_kernel_syms)
RDI = adres struktury kernel_sym (0 oznacza, że chcemy tylko pobrać liczbę symboli)
RAX = liczba symboli
RAX = błąd EINVAL, EPERM, EFAULT, ENOENT, EBUSY

178
Zapytaj o moduł (sys_query_module)
RDI = adres nazwy modułu lub NULL (jądro)
RSI = numer podfunkcji
RDX = adres bufora
R10 = rozmiar bufora
R8 = adres DWORDa
RAX = 0
RAX = błąd EFAULT, ENOSPC, EINVAL, ENOENT

179
Zarządzanie limitami dyskowymi (sys_quotactl)
RDI = komenda limitu
RSI = adres nazwy pliku urządzenia blokowego, który ma być zarządzany
RDX = identyfikator UID lub GID
R10 = adres dodatkowej struktury danych (zależy od komendy w RDI)
RAX = 0
RAX = błąd EINVAL, EPERM, EFAULT, ENOENT, EBUSY, ENOTBLK, ESRCH, EUSERS, EACCES

180
Interfejs demona NFS (sys_nfsservctl)
RDI = komenda
RSI = adres struktury nfsctl_arg
RDX = adres unii union nfsctl_res
RAX = 0
RAX = błąd

181
Funkcja systemowa sys_getpmsg
zarezerwowane dla LiS/STREAMS
zawsze RAX = ENOSYS

182
Funkcja systemowa sys_putpmsg
zarezerwowane dla LiS/STREAMS
zawsze RAX = ENOSYS

183
Funkcja systemowa sys_afs_syscall
niezaimplementowane
zawsze RAX = ENOSYS

184
Zarezerwowane (sys_tuxcall)
niezaimplementowane
zawsze RAX = ENOSYS

185
Funkcja systemowa sys_security
niezaimplementowane
zawsze RAX = ENOSYS

186
Pobierz identyfikator wątku (sys_gettid)
nic
RAX = id wątku

187
Czytaj kilka stron pliku z wyprzedzeniem do pamięci podręcznej (sys_readahead)
RDI = deskryptor pliku
RSI = miejsce w pliku, od którego zacząć
RDX = liczba bajtów do przeczytania
RAX = EBADF, gdy błąd

188
Ustaw wartość atrybutu rozszerzonego (sys_setxattr)
RDI = adres ścieżki pliku
RSI = adres nazwy atrybutu
RDX = wartość atrybutu
R10 = długość atrybutu
R8 = flaga (1=utwórz, 2=zamień)
RAX = 0
RAX = błąd

189
Ustaw wartość atrybutu rozszerzonego (sys_lsetxattr)
RDI = adres ścieżki pliku, funkcja nie podąża za dowiązaniami symbolicznymi
RSI = adres nazwy atrybutu
RDX = wartość atrybutu
R10 = długość atrybutu
R8 = flaga (1=utwórz, 2=zamień)
RAX = 0
RAX = błąd

190
Ustaw wartość atrybutu rozszerzonego (sys_fsetxattr)
RDI = deskryptor pliku
RSI = adres nazwy atrybutu
RDX = wartość atrybutu
R10 = długość atrybutu
R8 = flaga (1=utwórz, 2=zamień)
RAX = 0
RAX = błąd

191
Pobierz wartość atrybutu rozszerzonego (sys_getxattr)
RDI = adres ścieżki pliku
RSI = adres nazwy atrybutu
RDX = wartość atrybutu
R10 = długość atrybutu
RAX = 0
RAX = błąd

192
Pobierz wartość atrybutu rozszerzonego (sys_lgetxattr)
RDI = adres ścieżki pliku, funkcja nie podąża za dowiązaniami symbolicznymi
RSI = adres nazwy atrybutu
RDX = wartość atrybutu
R10 = długość atrybutu
RAX = 0
RAX = błąd

193
Pobierz wartość atrybutu rozszerzonego (sys_fgetxattr)
RDI = deskryptor pliku
RSI = adres nazwy atrybutu
RDX = wartość atrybutu
R10 = długość atrybutu
RAX = 0
RAX = błąd

194
Pobierz listę nazw atrybutów rozszerzonych pliku (sys_listxattr)
RDI = adres ścieżki pliku
RSI = adres tablicy na nazwy
RDX = długość tablicy
RAX = 0
RAX = błąd

195
Pobierz listę nazw atrybutów rozszerzonych pliku (sys_llistxattr)
RDI = adres ścieżki pliku, funkcja nie podąża za dowiązaniami symbolicznymi
RSI = adres tablicy na nazwy
RDX = długość tablicy
RAX = 0
RAX = błąd

196
Pobierz listę nazw atrybutów rozszerzonych pliku (sys_flistxattr)
RDI = deskryptor pliku
RSI = adres tablicy na nazwy
RDX = długość tablicy
RAX = 0
RAX = błąd

197
Usuń atrybut rozszerzony pliku (sys_removexattr)
RDI = adres ścieżki pliku
RSI = adres nazwy atrybutu do usunięcia
RAX = 0
RAX = błąd

198
Usuń atrybut rozszerzony pliku (sys_lremovexattr)
RDI = adres ścieżki pliku, funkcja nie podąża za dowiązaniami symbolicznymi
RSI = adres nazwy atrybutu do usunięcia
RAX = 0
RAX = błąd

199
Usuń atrybut rozszerzony pliku (sys_fremovexattr)
RDI = deskryptor pliku
RSI = adres nazwy atrybutu do usunięcia
RAX = 0
RAX = błąd

200
Zabij pojedyncze zadanie (sys_tkill)
RDI = PID zadania (niekoniecznie całego procesu)
RSI = numer sygnału do wysłania
RAX = 0
RAX = błąd EINVAL, ESRCH, EPERM



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)