   #Start Prev Next Contents Funkcje x86-32: 101-150

                   Opis funkcji systemowych syscall: 101-150

   Jesli jakas funkcja zakonczy sie bledem, w RAX zwracana jest wartosc
   ujemna z przedzialu od -4096 do -1 wlacznie.

   Z drugiej strony, opisy funkcji na stronach manuala mowia, ze zwracane
   jest -1, a wartosc bledu jest zapisywana do zmiennej errno z
   biblioteki GLIBC. Dzieje sie tak tylko w przypadku, gdy korzystamy z
   interfejsu jezyka C (czyli deklarujemy i uruchamiamy zewnetrzne
   funkcje odpowiadajace wywolaniom systemowym i linkujemy nasz program z
   biblioteka jezyka C), a nie bezposrednio z wywolan systemowych (czyli
   syscall).

   Najbardziej aktualne informacje o funkcjach systemowych mozna znalezc
   zazwyczaj w sekcji 2 (lub 3) manuala, na przyklad man 2 open.

   Najnowsze wersje jadra mozna znalezc na www.kernel.org, a pliki z
   lista funkcji i ich numerow sa pod sciezkami:
     * arch/x86/include/asm/unistd_{32,64}.h
     * arch/x86/syscalls/syscall_{32,64}.tbl
     * arch/x86/entry/syscalls/syscall_{32,64}.tbl

   Najnowsze wersje stron manuala mozna znalezc tu:
   www.kernel.org/pub/linux/docs/man-pages.

   Napis ASCIIZ oznacza lancuch znakow ASCII zakonczony znakiem/bajtem
   Zerowym.

   Jesli potrzeba, przy kazdej funkcji jest odnosnik do opisu argumentow
   i innych dodatkowych informacji: typow danych, wartosci bledow,
   mozliwych wartosci parametrow itp.

   CAPTION: Podstawowe funkcje syscall: 101-150

   Numer/ RAX Opis Argumenty Zwraca
   101
   Sledzenie procesu (sys_ptrace)
   RDI = zadane dzialanie
   RSI = identyfikator PID zadanego procesu
   RDX = adres w procesie docelowym
   R10 = adres w procesie sledzacym
   RAX zalezne od dzialania
   RAX = blad EIO, EFAULT, EPERM, ESRCH
     _________________________________________________________________

   102
   Pobierz identyfikator uzytkownika (sys_getuid)
   nic
   RAX = numer UID
     _________________________________________________________________

   103
   Opcje logowania (sys_syslog)
   RDI = komenda syslog
   RSI = adres bufora znakowego
   RDX = liczba bajtow (patrz opis RDI)
   RAX = liczba bajtow (patrz opis RDI) lub 0
   RAX = blad EINVAL, EPERM, ERESTARTSYS, ENOSYS
     _________________________________________________________________

   104
   Pobierz ID grupy biezacego procesu (sys_getgid)
   nic
   RAX = ID grupy
     _________________________________________________________________

   105
   Ustaw identyfikator uzytkownika (sys_setuid)
   RDI = nowy UID
   RAX = 0
   RAX = blad EPERM
     _________________________________________________________________

   106
   Ustaw ID grupy biezacego procesu (sys_setgid)
   RDI = nowy ID grupy
   RAX = 0
   RAX = blad EPERM
     _________________________________________________________________

   107
   Pobierz efektywne ID uzytkownika biezacego procesu (sys_geteuid)
   nic
   RAX = UID
     _________________________________________________________________

   108
   Pobierz efektywne ID grupy biezacego procesu (sys_getegid)
   nic
   RAX = GID
     _________________________________________________________________

   109
   Ustaw ID grupy procesu (sys_setpgid)
   RDI = ID procesu (PID)
   RSI = ID grupy
   RAX = 0
   RAX = blad 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=blad EINVAL, EPERM, ESRCH
     _________________________________________________________________

   112
   Stworz sesje, ustaw ID grupy (sys_setsid)
   nic
   RAX = ID procesu uruchamiajacego
   RAX=blad EPERM
     _________________________________________________________________

   113
   Ustaw realny i efektywny ID uzytkownika (sys_setreuid)
   RDI = realny ID uzytkownika (UID)
   RSI = efektywny UID
   RAX = 0
   RAX = blad EPERM
     _________________________________________________________________

   114
   Ustaw realny i efektywny ID grupy (sys_setregid)
   RDI = realny ID grupy (GID)
   RSI = efektywny GID
   RAX = 0
   RAX = blad EPERM
     _________________________________________________________________

   115
   Pobierz liczbe dodatkowych grup (sys_getgroups)
   RDI = rozmiar tablicy z RSI
   RSI = adres tablicy, gdzie zostana zapisane GID-y (DWORDY) grup
   dodatkowych
   RAX = liczba dodatkowych grup procesu
   RAX = blad EFAULT, EINVAL, EPERM
     _________________________________________________________________

   116
   Ustaw liczbe dodatkowych grup (sys_setgroups)
   RDI = rozmiar tablicy z RSI
   RSI = adres tablicy, gdzie zawierajaca GID-y (DWORDY)
   RAX = 0
   RAX = blad EFAULT, EINVAL, EPERM
     _________________________________________________________________

   117
   Ustaw rozne ID uzytkownika (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 = blad EPERM
     _________________________________________________________________

   118
   Pobierz rozne ID uzytkownika (sys_getresuid)
   RDI = adres DWORDa, ktory otrzyma realny UID
   RSI = adres DWORDa, ktory otrzyma efektywny UID
   RDX = adres DWORDa, ktory otrzyma zachowany UID
   RAX = 0
   RAX = blad EFAULT
     _________________________________________________________________

   119
   Ustaw realny, efektywny i zachowany ID grupy (sys_setresgid)
   RDI = realny GID
   RSI = efektywny GID
   RDX = zachowany (saved) GID
   RAX = 0
   RAX = blad EPERM
     _________________________________________________________________

   120
   Pobierz realny, efektywny i zachowany ID grupy (sys_getresgid)
   RDI = adres DWORDa, ktory otrzyma realny GID
   RSI = adres DWORDa, ktory otrzyma efektywny GID
   RDX = adres DWORDa, ktory otrzyma zachowany (saved) GID
   RAX = 0
   RAX = blad EFAULT
     _________________________________________________________________

   121
   Pobierz ID grupy procesow dla danego procesu (sys_getpgid)
   RDI = PID danego procesu
   RAX = ID grupy procesow
   RAX = blad ESRCH
     _________________________________________________________________

   122
   Ustal UID przy sprawdzaniu systemow plikow (sys_setfsuid)
   RDI = nowy ID uzytkownika
   RAX = stary UID (zawsze)
     _________________________________________________________________

   123
   Ustal GID przy sprawdzaniu systemow plikow (sys_setfsgid)
   RDI = nowy ID grupy
   RAX = stary GID (zawsze)
     _________________________________________________________________

   124
   Pobierz ID sesji dla procesu (sys_getsid)
   RDI = PID procesu, ktorego ID sesji chcemy znac
   RAX = ID sesji
   RAX = blad EPERM, ESRCH
     _________________________________________________________________

   125
   Pobierz mozliwosci procesu (sys_capget)
   RDI = adres struktury cap_user_header_t
   RSI = adres struktury cap_user_data_t
   RAX = RDI
   RAX=NULL, gdy blad EPERM, EINVAL
     _________________________________________________________________

   126
   Ustaw mozliwosci procesu (sys_capset)
   RDI = adres struktury cap_user_header_t
   RSI = adres struktury cap_user_data_t
   RAX = RDI
   RAX=NULL, gdy blad EPERM, EINVAL
     _________________________________________________________________

   127
   Pobierz sygnaly oczekujace (sys_rt_sigpending)
   RDI = adres zestawu sygnalow, ktory otrzyma oczekujace sygnaly
   RSI = rozmiar struktury sigset_t
   RAX = 0
   RAX=blad EFAULT
     _________________________________________________________________

   128
   Synchronicznie czekaj na zakolejkowane sygnaly (sys_rt_sigtimedwait)
   RDI = adres zestawu sygnalow, na ktore czekac
   RSI = adres struktury siginfo, ktora otrzyma informacje o sygnale
   RDX = adres struktury timespec okreslajacej czas oczekiwania
   R10 = rozmiar struktury sigset_t
   RAX = numer sygnalu
   RAX=blad EINVAL, EINTR, EAGAIN, EFAULT
     _________________________________________________________________

   129
   Zakolejkuj sygnal dla procesu (sys_rt_sigqueueinfo)
   RDI=PID procesu, ktory ma otrzymac sygnal
   RSI=numer sygnalu
   RDX=adres struktury siginfo_t do wyslania procesowi razem z sygnalem
   RAX = 0
   RAX=blad EFAULT, EPERM
     _________________________________________________________________

   130
   Czekaj na sygnal (sys_rt_sigsuspend)
   RDI = adres zestawu sygnalow, na ktore czekac
   RSI = rozmiar struktury sigset_t
   RAX = -1
   RAX=blad EINTR, EFAULT, EINVAL
     _________________________________________________________________

   131
   Ustaw alternatywny stos dla procedur obslugi sygnalow
   (sys_sigaltstack)
   RDI = adres struktury stack_t, opisujacej nowy stos
   RSI = adres struktury stack_t, opisujacej stary stos; lub NULL
   (ewentualnie RDX = adres nowego wierzcholka stosu)
   RAX = 0
   RAX = blad EPERM, EINVAL, ENOMEM
     _________________________________________________________________

   132
   Zmien czas dostepu do pliku (sys_utime)
   RDI = adres nazwy pliku (ASCIIZ)
   RSI = adres struktury utimbuf, NULL gdy chcemy biezacy czas
   RAX = 0
   RAX = blad EACCES, ENOENT, EPERM, EROFS
     _________________________________________________________________

   133
   Utworzenie pliku specjalnego (sys_mknod)
   RDI = adres sciezki ASCIIZ
   RSI = typ urzadzenia OR prawa dostepu
   RDX,R10 - wynik dzialania makra makedev
   RAX = 0
   RAX = blad EACCES, EEXIST, EFAULT, EINVAL, ELOOP, ENAMETOOLONG,
   ENOENT, ENOMEM, ENOSPC, ENOTDIR, EPERM, EROFS
     _________________________________________________________________

   134
   Wybierz wspoldzielona biblioteke (sys_uselib)
   RDI = adres nazwy biblioteki ASCIIZ
   RAX = 0
   RAX = blad EACCES, ENOEXEC
     _________________________________________________________________

   135
   Ustal domene wykonywania procesu (sys_personality)
   RDI = numer nowej domeny
   RAX = numer starej domeny
   RAX = blad
     _________________________________________________________________

   136
   Informacje o zamontowanym systemie plikow (sys_ustat)
   --zamiast tego, uzywaj statfs--
   RDI = numer glowny:poboczny urzadzenia / RDI wskazuje na 64 bity
   numeru urzadzenia
   RSI = adres struktury ustat
   RAX = 0
   RAX = blad EFAULT, EINVAL, ENOSYS
     _________________________________________________________________

   137
   Pobierz statystyki systemu plikow (sys_statfs)
   RDI = adres nazwy dowolnego pliku w zamontowanym systemie plikow
   RSI = adres struktury statfs
   RAX = 0
   RAX = blad
     _________________________________________________________________

   138
   Pobierz statystyki systemu plikow (sys_fstatfs)
   RDI = deskryptor dowolnego otwartego pliku w zamontowanym systemie
   plikow
   RSI = adres struktury statfs
   RAX = 0
   RAX = blad
     _________________________________________________________________

   139
   Informacje o systemie plikow (sys_sysfs)
   RDI = opcja
   RSI, RDX - zalezne od RDI
   RAX zalezne od RDI
   RAX = blad EINVAL, EFAULT
     _________________________________________________________________

   140
   Podaj priorytet szeregowania zadan (sys_getpriority)
   RDI = czyj priorytet zmieniamy
   RSI = identyfikator procesu, grupy procesow lub uzytkownika, ktorego
   priorytet zmieniamy (0=biezacy)
   RAX = aktualny priorytet dla wybranego obiektu (od 1 do 40)
     _________________________________________________________________

   141
   Ustaw priorytet szeregowania zadan (sys_setpriority)
   RDI = czyj priorytet zmieniamy
   RSI = identyfikator procesu, grupy procesow lub uzytkownika, ktorego
   priorytet zmieniamy (0=biezacy)
   RDX = nowy priorytet -20...19
   RAX = 0
   RAX = blad
     _________________________________________________________________

   142
   Ustaw parametry szeregowania zadan (sys_sched_setparam)
   RDI = PID procesu
   RSI = adres struktury sched_param, zawierajacej dane
   RAX = 0
   RAX = blad EINVAL, ESRCH, EPERM
     _________________________________________________________________

   143
   Pobierz parametry szeregowania zadan (sys_sched_getparam)
   RDI = PID procesu
   RSI = adres struktury sched_param, ktora otrzyma wynik
   RAX = 0
   RAX = blad EINVAL, ESRCH, EPERM
     _________________________________________________________________

   144
   Ustaw parametry/algorytm szeregowania zadan (sys_sched_setsheduler)
   RDI = PID procesu
   RSI = polityka
   RSI = adres struktury sched_param, zawierajacej dane
   RAX = 0
   RAX = blad EINVAL, ESRCH, EPERM
     _________________________________________________________________

   145
   Pobierz parametry/algorytm szeregowania zadan (sys_sched_getsheduler)
   RDI = PID procesu
   RAX = polityka
   RAX = blad EINVAL, ESRCH, EPERM
     _________________________________________________________________

   146
   Pobierz maksymalny priorytet statyczny (sys_sched_get_priority_max)
   RDI = polityka
   RAX = maksymalny priorytet dla tej polityki
   RAX = blad EINVAL
     _________________________________________________________________

   147
   Pobierz minimalny priorytet statyczny (sys_sched_get_priority_min)
   RDI = polityka
   RAX = minimalny priorytet dla tej polityki
   RAX = blad EINVAL
     _________________________________________________________________

   148
   Pobierz dlugosc czasu w szeregowaniu cyklicznym
   (sys_sched_rr_get_interval)
   RDI = PID procesu (0 = ten proces)
   RSI = adres struktury timeval, ktora otrzyma wynik
   RAX = 0
   RAX = blad ESRCH, ENOSYS
     _________________________________________________________________

   149
   Zablokowanie stron w pamieci (sys_mlock)
   RDI = adres obszaru pamieci (wyrownany do wielokrotnosci rozmiaru
   strony pamieci)
   RSI = dlugosc obszaru pamieci
   RAX = 0
   RAX = blad EINVAL, EAGAIN, ENOMEM
     _________________________________________________________________

   150
   Odblokowanie stron pamieci (sys_munlock)
   RDI = adres obszaru pamieci (wyrownany do wielokrotnosci rozmiaru
   strony pamieci)
   RSI = dlugosc obszaru pamieci
   RAX = 0
   RAX = blad EINVAL, ENOMEM
     _________________________________________________________________

   Poprzednia czesc (klawisz dostepu 3)
   Kolejna czesc (klawisz dostepu 4)
   Spis tresci off-line (klawisz dostepu 1)
   Spis tresci on-line (klawisz dostepu 2)
   Ulatwienia dla niepelnosprawnych (klawisz dostepu 0)
