Opis funkcji systemowych syscall: 101-150

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: 101-150
Numer/ RAX Opis ArgumentyZwraca
101
Śledzenie procesu (sys_ptrace)
RDI = żądane działanie
RSI = identyfikator PID żądanego procesu
RDX = adres w procesie docelowym
R10 = adres w procesie śledzącym
RAX zależne od działania
RAX = błąd EIO, EFAULT, EPERM, ESRCH

102
Pobierz identyfikator użytkownika (sys_getuid)
nic
RAX = numer UID

103
Opcje logowania (sys_syslog)
RDI = komenda syslog
RSI = adres bufora znakowego
RDX = liczba bajtów (patrz opis RDI)
RAX = liczba bajtów (patrz opis RDI) lub 0
RAX = błąd EINVAL, EPERM, ERESTARTSYS, ENOSYS

104
Pobierz ID grupy bieżącego procesu (sys_getgid)
nic
RAX = ID grupy

105
Ustaw identyfikator użytkownika (sys_setuid)
RDI = nowy UID
RAX = 0
RAX = błąd EPERM

106
Ustaw ID grupy bieżącego procesu (sys_setgid)
RDI = nowy ID grupy
RAX = 0
RAX = błąd EPERM

107
Pobierz efektywne ID użytkownika bieżącego procesu (sys_geteuid)
nic
RAX = UID

108
Pobierz efektywne ID grupy bieżącego procesu (sys_getegid)
nic
RAX = GID

109
Ustaw ID grupy procesu (sys_setpgid)
RDI = ID procesu (PID)
RSI = ID grupy
RAX = 0
RAX = błąd EINVAL, EPERM, ESRCH

110
Pobierz PID procesu rodzica (sys_getppid)
nic
RAX = PID rodzica

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

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

113
Ustaw realny i efektywny ID użytkownika (sys_setreuid)
RDI = realny ID użytkownika (UID)
RSI = efektywny UID
RAX = 0
RAX = błąd EPERM

114
Ustaw realny i efektywny ID grupy (sys_setregid)
RDI = realny ID grupy (GID)
RSI = efektywny GID
RAX = 0
RAX = błąd EPERM

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

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

117
Ustaw różne ID użytkownika (sys_setresuid)
RDI = realny UID lub -1 (wtedy jest bez zmian)
RSI = efektywny UID lub -1 (bez zmian)
RDX = zachowany (saved) UID lub -1 (bez zmian)
RAX = 0
RAX = błąd EPERM

118
Pobierz różne ID użytkownika (sys_getresuid)
RDI = adres DWORDa, który otrzyma realny UID
RSI = adres DWORDa, który otrzyma efektywny UID
RDX = adres DWORDa, który otrzyma zachowany UID
RAX = 0
RAX = błąd EFAULT

119
Ustaw realny, efektywny i zachowany ID grupy (sys_setresgid)
RDI = realny GID
RSI = efektywny GID
RDX = zachowany (saved) GID
RAX = 0
RAX = błąd EPERM

120
Pobierz realny, efektywny i zachowany ID grupy (sys_getresgid)
RDI = adres DWORDa, który otrzyma realny GID
RSI = adres DWORDa, który otrzyma efektywny GID
RDX = adres DWORDa, który otrzyma zachowany (saved) GID
RAX = 0
RAX = błąd EFAULT

121
Pobierz ID grupy procesów dla danego procesu (sys_getpgid)
RDI = PID danego procesu
RAX = ID grupy procesów
RAX = błąd ESRCH

122
Ustal UID przy sprawdzaniu systemów plików (sys_setfsuid)
RDI = nowy ID użytkownika
RAX = stary UID (zawsze)

123
Ustal GID przy sprawdzaniu systemów plików (sys_setfsgid)
RDI = nowy ID grupy
RAX = stary GID (zawsze)

124
Pobierz ID sesji dla procesu (sys_getsid)
RDI = PID procesu, którego ID sesji chcemy znać
RAX = ID sesji
RAX = błąd EPERM, ESRCH

125
Pobierz możliwości procesu (sys_capget)
RDI = adres struktury cap_user_header_t
RSI = adres struktury cap_user_data_t
RAX = RDI
RAX=NULL, gdy błąd EPERM, EINVAL

126
Ustaw możliwości procesu (sys_capset)
RDI = adres struktury cap_user_header_t
RSI = adres struktury cap_user_data_t
RAX = RDI
RAX=NULL, gdy błąd EPERM, EINVAL

127
Pobierz sygnały oczekujące (sys_rt_sigpending)
RDI = adres zestawu sygnałów, który otrzyma oczekujące sygnały
RSI = rozmiar struktury sigset_t
RAX = 0
RAX=błąd EFAULT

128
Synchronicznie czekaj na zakolejkowane sygnały (sys_rt_sigtimedwait)
RDI = adres zestawu sygnałów, na które czekać
RSI = adres struktury siginfo, która otrzyma informację o sygnale
RDX = adres struktury timespec określającej czas oczekiwania
R10 = rozmiar struktury sigset_t
RAX = numer sygnału
RAX=błąd EINVAL, EINTR, EAGAIN, EFAULT

129
Zakolejkuj sygnał dla procesu (sys_rt_sigqueueinfo)
RDI=PID procesu, który ma otrzymać sygnał
RSI=numer sygnału
RDX=adres struktury siginfo_t do wysłania procesowi razem z sygnałem
RAX = 0
RAX=błąd EFAULT, EPERM

130
Czekaj na sygnał (sys_rt_sigsuspend)
RDI = adres zestawu sygnałów, na które czekać
RSI = rozmiar struktury sigset_t
RAX = -1
RAX=błąd EINTR, EFAULT, EINVAL

131
Ustaw alternatywny stos dla procedur obsługi sygnałów (sys_sigaltstack)
RDI = adres struktury stack_t, opisującej nowy stos
RSI = adres struktury stack_t, opisującej stary stos; lub NULL
(ewentualnie RDX = adres nowego wierzchołka stosu)
RAX = 0
RAX = błąd EPERM, EINVAL, ENOMEM

132
Zmień czas dostępu do pliku (sys_utime)
RDI = adres nazwy pliku (ASCIIZ)
RSI = adres struktury utimbuf, NULL gdy chcemy bieżący czas
RAX = 0
RAX = błąd EACCES, ENOENT, EPERM, EROFS

133
Utworzenie pliku specjalnego (sys_mknod)
RDI = adres ścieżki ASCIIZ
RSI = typ urządzenia OR prawa dostępu
RDX,R10 - wynik działania makra makedev
RAX = 0
RAX = błąd EACCES, EEXIST, EFAULT, EINVAL, ELOOP, ENAMETOOLONG, ENOENT, ENOMEM, ENOSPC, ENOTDIR, EPERM, EROFS

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

135
Ustal domenę wykonywania procesu (sys_personality)
RDI = numer nowej domeny
RAX = numer starej domeny
RAX = błąd

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

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

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

139
Informacje o systemie plików (sys_sysfs)
RDI = opcja
RSI, RDX - zależne od RDI
RAX zależne od RDI
RAX = błąd EINVAL, EFAULT

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

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

142
Ustaw parametry szeregowania zadań (sys_sched_setparam)
RDI = PID procesu
RSI = adres struktury sched_param, zawierającej dane
RAX = 0
RAX = błąd EINVAL, ESRCH, EPERM

143
Pobierz parametry szeregowania zadań (sys_sched_getparam)
RDI = PID procesu
RSI = adres struktury sched_param, która otrzyma wynik
RAX = 0
RAX = błąd EINVAL, ESRCH, EPERM

144
Ustaw parametry/algorytm szeregowania zadań (sys_sched_setsheduler)
RDI = PID procesu
RSI = polityka
RSI = adres struktury sched_param, zawierającej dane
RAX = 0
RAX = błąd EINVAL, ESRCH, EPERM

145
Pobierz parametry/algorytm szeregowania zadań (sys_sched_getsheduler)
RDI = PID procesu
RAX = polityka
RAX = błąd EINVAL, ESRCH, EPERM

146
Pobierz maksymalny priorytet statyczny (sys_sched_get_priority_max)
RDI = polityka
RAX = maksymalny priorytet dla tej polityki
RAX = błąd EINVAL

147
Pobierz minimalny priorytet statyczny (sys_sched_get_priority_min)
RDI = polityka
RAX = minimalny priorytet dla tej polityki
RAX = błąd EINVAL

148
Pobierz długość czasu w szeregowaniu cyklicznym (sys_sched_rr_get_interval)
RDI = PID procesu (0 = ten proces)
RSI = adres struktury timeval, która otrzyma wynik
RAX = 0
RAX = błąd ESRCH, ENOSYS

149
Zablokowanie stron w pamięci (sys_mlock)
RDI = adres obszaru pamięci (wyrównany do wielokrotności rozmiaru strony pamięci)
RSI = długość obszaru pamięci
RAX = 0
RAX = błąd EINVAL, EAGAIN, ENOMEM

150
Odblokowanie stron pamięci (sys_munlock)
RDI = adres obszaru pamięci (wyrównany do wielokrotności rozmiaru strony pamięci)
RSI = długość obszaru pamięci
RAX = 0
RAX = błąd EINVAL, ENOMEM



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