Należy przyjąć, że "int", "long", "PID", "clock_t", "time_t", "u(int)32" są typu DWORD, zaś "short" jest typu WORD.
Struktura "pt_regs" (funkcja 2) z /usr/include/asm/ptrace.h:
struct pt_regs { long ebx; long ecx; long edx; long esi; long edi; long ebp; long eax; int xds; int xes; long orig_eax; long eip; int xcs; long eflags; long esp; int xss; };
nazwa | ósemkowo | komentarz |
---|---|---|
O_ACCMODE | 3 | Pełne prawa dostępu |
O_RDONLY | 0 | Otwieranie tylko do odczytu. Dostępne dla sys_mq_open. |
O_WRONLY | 1 | Otwieranie tylko do zapisu. Dostępne dla sys_mq_open. |
O_RDWR | 2 | Otwieranie do odczytu i zapisu. Dostępne dla sys_mq_open. |
O_CREAT | 100 | Utworzenie pliku. Dostępne dla sys_mq_open. |
O_EXCL | 200 | Nie twórz pliku, jeśli już istnieje. Dostępne dla sys_mq_open. |
O_NOCTTY | 400 | Jeśli podana nazwa pliku to terminal, to NIE zostanie on terminalem kontrolnym procesu. |
O_TRUNC | 1000 | Obcięcie pliku |
O_APPEND | 2000 | Dopisywanie do pliku |
O_NONBLOCK | 4000 | Nie otwieraj, jeśli spowoduje to blokadę. Dostępne dla sys_mq_open. |
O_NDELAY | O_NONBLOCK | jak wyżej |
O_SYNC | 10000 | specyficzne dla ext2 i urządzeń blokowych |
FASYNC | 20000 | fcntl, dla zgodności z BSD |
O_DIRECT | 40000 | podpowiedź bezpośredniego dostępu do dysku, obecnie ignorowana |
O_LARGEFILE | 100000 | Pozwól na otwieranie plików >4GB |
O_DIRECTORY | 200000 | musi być katalogiem |
O_NOFOLLOW | 400000 | nie podążaj za linkami |
nazwa | ósemkowo | komentarz |
---|---|---|
S_ISUID | 4000 |
ustaw ID użytkownika przy wykonywaniu (suid) |
S_ISGID | 2000 |
ustaw ID grupy przy wykonywaniu (sgid) |
S_ISVTX | 1000 |
"sticky bit" - usuwać z takiego katalogu może tylko właściciel |
S_IRUSR | 400 |
czytanie przez właściciela (S_IREAD) |
S_IWUSR | 200 |
zapis przez właściciela (S_IWRITE) |
S_IXUSR | 100 |
wykonywanie/przeszukiwanie katalogu przez właściciela (S_IEXEC) |
S_IRGRP | 40 |
czytanie przez grupę |
S_IWGRP | 20 |
zapis przez grupę |
S_IXGRP | 10 |
wykonywanie/przeszukiwanie katalogu przez grupę |
S_IROTH | 4 |
czytanie przez innych (R_OK) |
S_IWOTH | 2 |
zapis przez innych (W_OK) |
S_IWOTH | 1 |
wykonywanie/przeszukiwanie katalogu przez innych (X_OK) |
S_IRWXUGO | (S_IRWXU | S_IRWXG | S_IRWXO) |
czytanie, pisanie i wykonywanie przez wszystkich |
S_IALLUGO | (S_ISUID | S_ISGID | S_ISVTX | S_IRWXUGO) |
czytanie, pisanie i wykonywanie przez wszystkich + suid + sgid + sticky bit |
S_IRUGO | (S_IRUSR | S_IRGRP | S_IROTH) |
czytanie dla wszystkich |
S_IWUGO | (S_IWUSR | S_IWGRP | S_IWOTH) |
zapis dla wszystkich |
S_IXUGO | (S_IXUSR | S_IXGRP | S_IXOTH) |
wykonywanie/przeszukiwanie katalogu dla wszystkich |
nazwa | wartość | komentarz |
---|---|---|
MS_MGC_MSK | 0xC0ED |
in m.s. 16-bit; 'magic', niezbędne przed 2.4.0-t9 (????) |
MS_RDONLY | 1 |
Zamontuj tylko do odczytu |
MS_NOSUID | 2 |
Ignoruj bity suid i sgid |
MS_NODEV | 4 |
Zabroń dostępu do specjalnych plików/urządzeń |
MS_NOEXEC | 8 |
Zabroń wykonywania programów |
MS_SYNCHRONOUS | 16 |
Zapisy są synchronizowane natychmiast |
MS_REMOUNT | 32 |
Zmień flagi zamontowanego systemu plików (przemontuj z innymi atrybutami) |
MS_MANDLOCK | 64 |
Pozwól na nakazane blokady na systemie plików (???) |
MS_NOATIME | 1024 |
Nie zmieniaj czasów dostępu |
MS_NODIRATIME | 2048 |
Nie zmieniaj czasów dostępu do katalogów |
MS_BIND | 4096 |
Montowanie bindowane - widoczne w innym miejscu systemu plików |
MS_REC | 16384 |
|
MS_VERBOSE | 32768 |
|
MS_ACTIVE | (1<<30) |
|
MS_NOUSER | (1<<31) |
|
nazwa | wartość | znaczenie |
---|---|---|
SEEK_SET | 0 |
Przesuwanie zaczyna się od początku pliku |
SEEK_CUR | 1 |
Przesuwanie zaczyna się od bieżącej pozycji |
SEEK_END | 2 |
Przesuwanie zaczyna się od końca pliku |
PID | dany sygnał zostanie wysłany do |
---|---|
> 0 |
procesu potomnego o tym PID |
0 |
każdego procesu potomnego w grupie procesów wywołującego |
-1 |
wszystkich procesów potomnych z wyjątkiem pierwszego |
< -1 |
wszystkich procesów potomnych w grupie |{gid}| |
PTRACE_... | wartość | argumenty | zwraca |
---|---|---|---|
PEEKTEXT | 0 |
PID, adres, wskaźnik na dane | czytaj (d)word pod podanym adresem |
PEEKDATA | 1 |
PID, adres, wskaźnik na dane | czytaj (d)word pod podanym adresem w obszarze pamięci Użytkownika |
PEEKUSR | 2 |
PID, adres, wskaźnik na dane | czytaj (d)word pod podanym adresem w obszarze pamięci Użytkownika |
POKETEXT | 3 |
PID, adres, wskaźnik na dane | zapisz (d)word pod podanym adresem |
POKEDATA | 4 |
PID, adres, wskaźnik na dane | zapisz (d)word pod podanym adresem |
POKEUSR | 5 |
PID, adres, wskaźnik na dane | zapisz (d)word pod podanym adresem w obszarze pamięci Użytkownika |
TRACEME | 6 |
- | Ustaw bit PTRACE we flagach procesu |
CONT | 7 |
PID, - , numer sygnału | Uruchom ponownie po sygnale |
KILL | 8 |
PID | wyślij sygnał SIGKILL do procesu potomnego, kończąc go |
SINGLESTEP | 9 |
PID | Ustaw flagę TRAP, sygnał SIGTRAP |
GETREGS | 12 |
PID, -, wskaźnik na dane | pobierz wartości rejestrów procesu potomnego |
SETREGS | 13 |
PID, -, wskaźnik na dane | ustaw wartości rejestrów procesu potomnego |
GETFPREGS | 14 |
PID, -, wskaźnik na dane | pobierz stan FPU procesu potomnego |
SETFPREGS | 15 |
PID, -, wskaźnik na dane | ustal stan FPU procesu potomnego |
ATTACH | 16 |
PID, -, - | przyłącz proces do już uruchomionego procesu. |
DETACH | 17 |
PID, -, - | odłącz wcześniej przyłączony proces |
(K4)GETFPXREGS | 18 |
PID, -, wskaźnik na dane | pobierz rozszerzony stan FPU procesu potomnego |
(K4)SETFPXREGS | 19 |
PID, -, wskaźnik na dane | ustal rozszerzony stan FPU procesu potomnego |
(K4)SETOPTIONS | 21 |
PID, -, dane | Opcja PTRACE_O_TRACESYSGOOD lub żadna |
SYSCALL | 24 |
PID, -, numer sygnału | Kontynuuj i zatrzymaj się na następnym powrocie z danego sygnału |
Rejestry są ustawione tak:
EBX, ECX, EDX, ESI, EDI, EBP, EAX, DS, ES, FS, GS, ORIG_EAX, EIP, CS, EFL, UESP, SS, FRAME_SIZE.
Wartości błędów zwracanych przez funkcje systemowe Linuksa. Te numery można znaleźć także w:
"Prawdziwe" zwracane wartości błędów są przeciwnego znaku (na przykład EIO = -5).
%define EPERM 1 ; Operacja niedozwolona %define ENOENT 2 ; Nie ma takiego pliku/katalogu %define ESRCH 3 ; Nie ma takiego procesu %define EINTR 4 ; Przerwana funkcja systemowa %define EIO 5 ; Błąd I/O %define ENXIO 6 ; Nie ma takiego urządzenia/adresu %define E2BIG 7 ; Za długa lista argumentów %define ENOEXEC 8 ; Błąd formatu wykonywalnego %define EBADF 9 ; Zły numer pliku %define ECHILD 10 ; Nie ma procesów potomnych %define EAGAIN 11 ; Zasoby chwilowo niedostępne. %define ENOMEM 12 ; Brak pamięci %define EACCES 13 ; Odmowa dostępu %define EFAULT 14 ; Zły adres %define ENOTBLK 15 ; Wymagane jest urządzenie blokowe %define EBUSY 16 ; Urządzenie/zasób zajęty %define EEXIST 17 ; Plik istnieje %define EXDEV 18 ; Dowiązanie międzyurządzeniowe %define ENODEV 19 ; Nie ma takiego urządzenia %define ENOTDIR 20 ; To nie jest katalog %define EISDIR 21 ; To jest katalog %define EINVAL 22 ; Nieprawidłowy argument %define ENFILE 23 ; Przepełnienie tablicy plików %define EMFILE 24 ; Za dużo otwartych plików %define ENOTTY 25 ; Nieodpowiednia operacja kontroli ; wejścia/wyjścia (Not a typewriter) %define ETXTBSY 26 ; Plik tekstowy zajęty %define EFBIG 27 ; Plik za duży %define ENOSPC 28 ; Brak miejsca na urządzeniu %define ESPIPE 29 ; Nieprawidłowa zmiana pozycji w pliku %define EROFS 30 ; System plików tylko do odczytu %define EMLINK 31 ; Za dużo linków %define EPIPE 32 ; Zły potok %define EDOM 33 ; Argument poza dziedziną funkcji matemat. %define ERANGE 34 ; Wyniku nie da się przedstawić %define EDEADLK 35 ; Uniknięto zakleszczenia zasobów ; (Resource deadlock would occur) %define ENAMETOOLONG 36 ; Zbyt długa nazwa pliku %define ENOLCK 37 ; Brak dostępnych blokad %define ENOSYS 38 ; Funkcja nie zaimplementowana %define ENOTEMPTY 39 ; Katalog nie jest pusty %define ELOOP 40 ; Zbyt dużo linków symbolicznych %define EWOULDBLOCK EAGAIN ; Zasoby chwilowo niedostępne (operacja ; zablokowałaby program) %define ENOMSG 42 ; Nie ma wiadomości żądanego typu %define EIDRM 43 ; Identyfikator usunięty %define ECHRNG 44 ; Numer kanału spoza zasięgu %define EL2NSYNC 45 ; Poziom 2 nie zsynchronizowany %define EL3HLT 46 ; Poziom 3 zatrzymany %define EL3RST 47 ; Poziom 3 ponownie uruchomiony %define ELNRNG 48 ; Za duża liczba linków/numer linku %define EUNATCH 49 ; Niepodłączony sterownik protokołu %define ENOCSI 50 ; Brak wolnych struktur CSI %define EL2HLT 51 ; Poziom 2 zatrzymany %define EBADE 52 ; Nieprawidłowa wymiana %define EBADR 53 ; Nieprawidłowy deskryptor żądania %define EXFULL 54 ; Wymiana pełna (bufor?) %define ENOANO 55 ; No anode %define EBADRQC 56 ; Nieprawidłowy kod zadania %define EBADSLT 57 ; Invalid slot %define EDEADLOCK EDEADLK %define EBFONT 59 ; Nieprawidłowy format pliku czcionki %define ENOSTR 60 ; Urządzenie nie jest strumieniem %define ENODATA 61 ; Nie ma danych %define ETIME 62 ; Przekroczony limit czasu %define ENOSR 63 ; Brak zasobów strumieniowych %define ENONET 64 ; Komputer nie jest w sieci %define ENOPKG 65 ; Pakiet nie zainstalowany %define EREMOTE 66 ; Obiekt jest zdalny %define ENOLINK 67 ; Link has been severed %define EADV 68 ; Advertise error %define ESRMNT 69 ; Srmount error %define ECOMM 70 ; Błąd komunikacji przy wysyłaniu %define EPROTO 71 ; Błąd protokołu %define EMULTIHOP 72 ; Multihop attempted %define EDOTDOT 73 ; Błąd specyficzny dla RFS %define EBADMSG 74 ; To nie jest wiadomość z danymi %define EOVERFLOW 75 ; Wartość za duża dla określonego typu %define ENOTUNIQ 76 ; Nazwa nie jest unikalna w sieci %define EBADFD 77 ; Deskryptor pliku w złym stanie %define EREMCHG 78 ; Zmiana adresu zdalnego %define ELIBACC 79 ; Nie można się dostać do wymaganej bibl. %define ELIBBAD 80 ; Dostęp do zepsutej ; biblioteki współdzielonej %define ELIBSCN 81 ; Zepsuta sekcja .lib w a.out %define ELIBMAX 82 ; Próba podłączenia zbyt wielu bibliotek ; współdzielonych %define ELIBEXEC 83 ; Nie można bezpośrednio uruchamiać ; biblioteki współdzielonej %define EILSEQ 84 ; Nieprawidłowa sekwencja bajtów %define ERESTART 85 ; Przerwana funkcja systemowa powinna zostać ; uruchomiona ponownie %define ESTRPIPE 86 ; Streams pipe error %define EUSERS 87 ; Za dużo użytkowników %define ENOTSOCK 88 ; Operacja gniazdowa na nie-gnieździe %define EDESTADDRREQ 89 ; Wymagany adres docelowy %define EMSGSIZE 90 ; Wiadomość za długa %define EPROTOTYPE 91 ; Zły typ protokołu dla gniazda %define ENOPROTOOPT 92 ; Protokół niedostępny %define EPROTONOSUPPORT 93 ; Protokół nieobsługiwany %define ESOCKTNOSUPPORT 94 ; Typ gniazda nieobsługiwany %define EOPNOTSUPP 95 ; Operacja nie obsługiwana po drugiej ; stronie transportu %define EPFNOSUPPORT 96 ; Nieobsługiwana rodzina protokołów %define EAFNOSUPPORT 97 ; Rodzina adresów nie obsługiwana przez ; ten protokół %define EADDRINUSE 98 ; Adres już jest używany %define EADDRNOTAVAIL 99 ; Nie można przydzielić żądanego adresu %define ENETDOWN 100 ; Sieć nie działa %define ENETUNREACH 101 ; Sieć jest niedostępna %define ENETRESET 102 ; Brak sieci z powodu resetu %define ECONNABORTED 103 ; Przerwanie połączenia przez program %define ECONNRESET 104 ; Reset połączenia przez drugą stronę %define ENOBUFS 105 ; Brak miejsca w buforze %define EISCONN 106 ; Druga strona transportu już jest ; podłączona %define ENOTCONN 107 ; Druga strona transportu nie jest ; podłączona %define ESHUTDOWN 108 ; Nie można wysyłać po wyłączeniu z drugiej ; strony transportu %define ETOOMANYREFS 109 ; Too many references: cannot splice %define ETIMEDOUT 110 ; Przekroczony limit czasu połączenia %define ECONNREFUSED 111 ; Odmowa połączenia %define EHOSTDOWN 112 ; Host jest wyłączony %define EHOSTUNREACH 113 ; Nie ma drogi do hosta %define EALREADY 114 ; Operacja już trwa %define EINPROGRESS 115 ; Operacja trwa teraz %define ESTALE 116 ; Stale NFS file handle %define EUCLEAN 117 ; Struktura wymaga porządkowania %define ENOTNAM 118 ; Not a XENIX named type file %define ENAVAIL 119 ; No XENIX semaphores available %define EISNAM 120 ; Is a named type file %define EREMOTEIO 121 ; Błąd zdalnego I/O %define EDQUOT 122 ; Przekroczony limit dyskowy (Quota) %define ENOMEDIUM 123 ; Brak nośnika %define EMEDIUMTYPE 124 ; Zły typ nośnika %define ECANCELED 125 ; Zrezygnowano z operacji %define ENOKEY 126 ; Wymagany klucz niedostępny %define EKEYEXPIRED 127 ; Klucz przedawniony %define EKEYREVOKED 128 ; Klucz nieważny %define EKEYREJECTED 129 ; Klucz odrzucony %define EOWNERDEAD 130 ; Właściciel zginął %define ENOTRECOVERABLE 131 ; State not recoverable %define ERESTARTSYS 512 %define ERESTARTNOINTR 513 %define ERESTARTNOHAND 514 ; restart if no handler.. %define ENOIOCTLCMD 515 ; No ioctl command %define ERESTART_RESTARTBLOCK 516 ; restart by calling sys_restart_syscall ; NFS v3 %define EBADHANDLE 521 ; Illegal NFS file handle %define ENOTSYNC 522 ; Update synchronization mismatch %define EBADCOOKIE 523 ; Cookie is stale %define ENOTSUPP 524 ; Operacja nieobsługiwana %define ETOOSMALL 525 ; Bufor lub żądanie za małe %define ESERVERFAULT 526 ; An untranslatable error occurred %define EBADTYPE 527 ; Typ nieobsługiwany przez serwer %define EJUKEBOX 528 ; Request initiated, but will not ; complete before timeout %define EIOCBQUEUED 529 ; iocb queued, will get completion event %define EIOCBRETRY 530 ; iocb queued, will trigger a retry #define EWOULDBLOCKIO 530 ; Would block due to block-IO
Struktura "tms" (funkcja 43) z /usr/include/linux/times.h:
struct tms { clock_t tms_utime; clock_t tms_stime; clock_t tms_cutime; clock_t tms_cstime; };
Struktura "flock" z /usr/include/asm/fcntl.h:
struct flock { short l_type; // rodzaj blokady pliku (WORD) short l_whence; // patrz SEEK_* powyżej? (WORD) off_t l_start; // adres miejsca, do którego odnosi // się blokada, w bajtach liczonych // od pozycji określonej // przez l_whence (DWORD) off_t l_len; // długość zablokowanego obszaru. // Zero oznacza do końca pliku (DWORD) pid_t l_pid; // otrzymane komendą F_GETLK, // ignorowane przy włączaniu blokady (DWORD) };
ECX (komenda) | Wartość | Opis |
---|---|---|
F_DUPFD | 0 |
EDX staje się kopią deskryptora z EBX |
F_GETFD | 1 |
Odczytaj flagę close-on-exec. Gdy bit0=0, plik zostanie otwarty pomimo exec, inaczej plik zostanie zamknięty. |
F_SETFD | 2 |
Ustaw flagę close-on-exec na wartość ostatniego bitu w EDX |
F_GETFL | 3 |
Zwróć takie flagi deskryptora, jakie były ustawione przez funkcję open |
F_SETFL | 4 |
Ustaw flagi deskryptora na wartość EDX. Można ustawić tylko O_APPEND i O_NONBLOCK. |
F_GETLK | 5 |
[Jeśli uruchamiasz sys_fcntl64, użyj wersji 64-bitowej] EDX ma adres struktury flock. Zwróć strukturę flock, która chroni nas przed uzyskaniem blokady lub ustaw pole l_type blokady na F_UNLCK jeśli możliwe |
F_SETLK | 6 |
[Jeśli uruchamiasz sys_fcntl64, użyj wersji 64-bitowej] EDX ma adres struktury flock. Blokada jest ustawiana jeśli l_type jest F_RDLCK lub F_WRLCK albo usuwana, gdy jest F_UNLCK. Jeśli blokada jest przechowywana przez kogoś innego, zwraca -1 i EACCES lub EAGAIN. |
F_SETLKW | 7 |
[Jeśli uruchamiasz sys_fcntl64, użyj wersji 64-bitowej] Podobnie jak F_SETLK, ale zamiast zwracać błąd, czeka na zwolnienie blokady. |
F_SETOWN | 8 |
Ustaw proces, będący właścicielem gniazda (socket). Tutaj i w poniższej funkcji grupy procesów zwracane są jako wartości ujemne. |
F_GETOWN | 9 |
Pobierz ID procesu, będącego właścicielem gniazda. |
F_SETSIG | 10 |
Ustaw numer sygnału, który ma zostać wysłany. |
F_GETSIG | 11 |
Pobierz numer sygnału, który ma zostać wysłany. |
F_GETLK64 | 12 |
EDX ma adres struktury flock. Zwróć strukturę flock, która chroni nas przed uzyskaniem blokady lub ustaw pole l_type locka na F_UNLCK jeśli możliwe |
F_SETLK64 | 13 |
EDX ma adres struktury flock. Blokada jest ustawiana jeśli l_type jest F_RDLCK lub F_WRLCK albo usuwana, gdy jest F_UNLCK. Jeśli blokada jest przechowywana przez kogoś innego, zwraca -1 i EACCES lub EAGAIN. |
F_SETLKW64 | 14 |
Podobnie jak F_SETLK, ale zamiast zwracać błąd, czeka na zwolnienie blokady. |
F_SETLEASE | 1024 |
Ustaw dzierżawę. |
F_GETLEASE | 1025 |
Pobierz informację, jaka dzierżawa jest aktywna. |
F_NOTIFY | 1026 |
Żądaj powiadomień na danym katalogu. |
Struktura sigaction (funkcja 67) z /usr/include/asm/signal.h:
struct sigaction { __sighandler_t sa_handler; //procedura obsługi sygnału unsigned long sa_flags; void (*sa_restorer)(void); // procedura przywracająca? sigset_t sa_mask; // maska utrzymywana dla // rozszerzalności }; typedef void (*__sighandler_t)(int); // typ procedury // obsługi sygnału #define _NSIG 64 #define _NSIG_BPW 32 #define _NSIG_WORDS (_NSIG/_NSIG_BPW) typedef struct { unsigned long sig[_NSIG_WORDS]; } sigset_t; // definicja typu tej // maski powyżej
Struktura rlimit (funkcje 75 i 76) z /usr/include/linux/resource.h:
struct rlimit { unsigned long rlim_cur; // limit "miękki" lub // RLIM_INFINITY=-1 jeśli brak unsigned long rlim_max; // maksymalny limit lub // RLIM_INFINITY jeśli brak };
nazwa | wartość | co oznacza |
---|---|---|
RLIMIT_CPU | 0 |
limit czasu procesora w sekundach |
RLIMIT_FSIZE | 1 |
rozmiar w bajtach największego pliku możliwego do utworzenia |
RLIMIT_DATA | 2 |
maksymalny rozmiar w bajtach wszystkich segmentów danych |
RLIMIT_STACK | 3 |
maksymalny rozmiar stosu w bajtach |
RLIMIT_CORE | 4 |
maksymalny rozmiar rdzenia (core) w bajtach |
RLIMIT_RSS | 5 |
maksymalny rozmiar kodu rezydentnego |
RLIMIT_NPROC | 6 |
maksymalna liczba procesów dla danego rzeczywistego PID |
RLIMIT_OFILE, RLIMIT_NOFILE | 7 |
maksymalna liczba otwartych deskryptorów + 1 |
RLIMIT_MEMLOCK | 8 |
maksymalna liczba bajtów pamięci, którą można zablokować (sys_mlock) |
RLIMIT_AS | 9 |
limit przestrzeni adresowej |
RLIMIT_LOCKS | 10 |
limit blokad plików (sys_flock itp.) |
RLIMIT_SIGPENDING | 11 |
maksymalna liczba czekających sygnałów |
RLIMIT_MSGQUEUE | 12 |
maksymalna liczba bajtów w kolejkach wiadomości |
RLIMIT_NICE | 13 |
maksymalny priorytet sys_nice, jaki można ustawić |
RLIMIT_RTPRIO | 14 |
maksymalny priorytet czasu rzeczywistego, jaki można ustawić dla nieuprzywilejowanego procesu |
Struktura rusage (funkcja 77) z /usr/include/linux/resource.h:
#define RUSAGE_SELF 0 #define RUSAGE_CHILDREN (-1) #define RUSAGE_BOTH (-2) // sys_wait4() używa tego struct rusage { struct timeval ru_utime; // wykorzystany czas użytkownika struct timeval ru_stime; // wykorzystany czas systemu long ru_maxrss; // rozmiar maksymalnego // rezydentnego zbioru? long ru_ixrss; // rozmiar współdzielonej pamięci long ru_idrss; // rozmiar niewspółdzielonej pamięci long ru_isrss; // rozmiar niewspółdzielonego stosu long ru_minflt; // liczba odzyskanych stron pamięci long ru_majflt; // liczba błędów stron pamięci long ru_nswap; // wymiany (swaps) long ru_inblock; // blokujące operacje wejścia long ru_oublock; // blokujące operacje wyjścia long ru_msgsnd; // wysłane wiadomości long ru_msgrcv; // odebrane wiadomości long ru_nsignals; // odebrane sygnały long ru_nvcsw; // dobrowolne zmiany kontekstu long ru_nivcsw; // niedobrowolne zmiany kontekstu };
Struktura timeval (funkcja 78) z /usr/include/linux/time.h:
struct timeval { time_t tv_sec; // dword, sekundy suseconds_t tv_usec; // dword, mikrosekundy };
Struktura timezone (funkcja 78) z /usr/include/linux/time.h:
struct timezone { int tz_minuteswest; // minuty na zachód od Greenwich int tz_dsttime; // typ poprawki punktu docelowego? };
Struktura sigset_t (funkcje 72 i 73) z /usr/include/asm/signal.h:
#define _NSIG 64 #define _NSIG_BPW 32 #define _NSIG_WORDS (_NSIG/_NSIG_BPW) typedef struct { unsigned long sig[_NSIG_WORDS]; } sigset_t;
nazwa | wartość | komenda |
---|---|---|
UL_GETFSIZE | 1 |
pobierz limit rozmiaru pliku, w 512-bajtowych jednostkach |
UL_SETFSIZE | 2 |
ustaw limit rozmiaru pliku, w 512-bajtowych jednostkach |
__UL_GETMAXBRK | 3 |
(podobno nie w Linuksie) podaj najwyższy możliwy adres w segmencie danych |
__UL_GETOPENMAX | 4 |
podaj największą liczbę plików, którą ten proces może otworzyć |
nazwa | ósemkowo | typ urządzenia |
---|---|---|
S_IFREG | 0100000 |
normalny plik |
S_IFCHR | 0020000 |
urządzenie znakowe |
S_IFBLK | 0060000 |
urządzenie blokowe |
S_IFIFO | 0010000 |
nazwany potok (named pipe) |
Struktura "utimbuf" (funkcja 30) z /usr/include/linux/utime.h:
struct utimbuf { time_t actime; /* czas dostępu */ time_t modtime; /* czas ostatniej zmiany */ };
Struktura "timeb" (funkcja 35) z /usr/include/sys/timeb.h:
struct timeb { time_t time; /*liczba sekund od początku epoki*/ unsigned short millitm; /* liczba milisekund od chwili time sekund */ short timezone; /* przesuniecie czasu dla strefy lokalnej w minutach na zachód od Greenwich */ short dstflag; /* różne od zera oznacza, że w danej części roku obowiązuje czas letni */ };
Struktura "ustat" (funkcja 62) z /usr/include/bits/ustat.h:
struct ustat { __daddr_t f_tfree; /* całkowita liczba wolnych bloków */ __ino_t f_tinode; /* liczba wolnych węzłów i-node */ char f_fname[6]; /* nazwa systemu plików (nieużywane) */ char f_fpack[6]; /* nazwa paczki(?) systemu plików (nieużywane) */ };
Flagi dla funkcji swapon (numer 87) z /usr/include/sys/swap.h:
/* Priorytet przestrzeni wymiany swap jest kodowany tak: (prio << SWAP_FLAG_PRIO_SHIFT) & SWAP_FLAG_PRIO_MASK */ #define SWAP_FLAG_PREFER 0x8000 /* Ustawiony, jeśli jest określony priorytet. Ustawienie tego bitu powoduje to, że nowa przestrzeń wymiany będzie miała wyższy priorytet */ #define SWAP_FLAG_PRIO_MASK 0x7fff #define SWAP_FLAG_PRIO_SHIFT 0
nazwa | wartość | co oznacza |
---|---|---|
LINUX_REBOOT_CMD_RESTART | 0x01234567 |
reset systemu |
LINUX_REBOOT_CMD_HALT | 0xCDEF0123 |
zatrzymanie systemu |
LINUX_REBOOT_CMD_CAD_ON | 0x89ABCDEF |
włączenie obsługi Ctrl-Alt-Del |
LINUX_REBOOT_CMD_CAD_OFF | 0x00000000 |
wyłączenie obsługi Ctrl-Alt-Del |
LINUX_REBOOT_CMD_POWER_OFF | 0x4321FEDC |
wyłączenie zasilania |
LINUX_REBOOT_CMD_RESTART2 | 0xA1B2C3D4 |
reset z użyciem komendy podanej jako dodatkowy argument |
Struktura "dirent" (funkcja 89 i 141) z /usr/include/linux/dirent.h:
struct dirent { long d_ino; /* numer i-węzła */ off_t d_off; /* offset od początku katalogu do następnej struktury dirent (do bieżącego dirent?) */ unsigned short d_reclen; /* długość tego dirent (d_name?) */ char d_name [NAME_MAX+1]; /* nazwa pliku (zakończona znakiem zerowym) */ };
nazwa | wartość | co oznacza |
---|---|---|
PROT_READ | 1 | strona pamięci może być czytana |
PROT_WRITE | 2 | strona może być zapisywana |
PROT_EXEC | 4 | strona może być wykonywana |
PROT_NONE | 0 | nie ma dostępu do strony |
nazwa | wartość | co oznacza |
---|---|---|
MAP_FIXED | 0x10 |
Koniecznie użyj adresu podanego jako parametr |
MAP_GROWSDOWN | 0x0100 |
Segment typu stosowego ("rośnie" w dół) |
MAP_DENYWRITE | 0x0800 |
Ignorowane |
MAP_EXECUTABLE | 0x1000 |
Wykonywalny (ignorowane) |
MAP_LOCKED | 0x2000 |
Zablokuj mapowanie. Ignorowane. |
MAP_NORESERVE | 0x4000 |
Nie rezerwuj stron wymiany swap dla tego mapowania. |
MAP_POPULATE | 0x8000 |
Rozmnóż tablice stron? |
MAP_NONBLOCK | 0x10000 |
Nie blokuj w czasie we/wy. |
MAP_FILE | 0 |
użyj pliku? Ignorowane. |
MAP_ANONYMOUS, MAP_ANON | 0x20 |
Nie używaj pliku. Ignorowane są deskryptor pliku i parametr offset. Zaimplementowany od 2.4 |
nazwa | wartość | co oznacza |
---|---|---|
MAP_SHARED | 0x01 |
współdzielenie zmian |
MAP_PRIVATE | 0x02 |
zmiany są prywatne |
EBX = czyj priorytet pobieramy/zmieniamy | wartość w EBX | co oznacza |
---|---|---|
PRIO_PROCESS | 0 |
ECX to ID procesu |
PRIO_PGRP | 1 |
ECX to ID grupy procesów |
PRIO_USER | 2 |
ECX to ID użytkownika |
Struktura "statfs" (funkcja 99) z /usr/include/asm/statfs.h:
struct statfs {
long f_type; /* typ systemu plików (patrz niżej) */
long f_bsize; /* optymalny rozmiar bloku transferu */
long f_blocks; /* całkowita liczba bloków danych */
long f_bfree; /* wolne bloki */
long f_bavail; /* wolne bloki dostępne dla
nie-superużytkowników */
long f_files; /* całkowita liczba węzłów plików
(file nodes) */
long f_ffree; /* wolne węzły */
fsid_t f_fsid; /* ID systemu plików */
long f_namelen; /* maks. długość nazwy pliku */
long f_spare[6]; /* zapasowe na później */
};
struct
{
int __val[2];
} __fsid_t; /* typ struktury fsid_t powyżej */
nazwa | wartość |
---|---|
AFFS_SUPER_MAGIC | 0xADFF |
EXT_SUPER_MAGIC | 0x137D |
EXT2_OLD_SUPER_MAGIC | 0xEF51 |
EXT2_SUPER_MAGIC | 0xEF53 |
HPFS_SUPER_MAGIC | 0xF995E849 |
ISOFS_SUPER_MAGIC | 0x9660 |
MINIX_SUPER_MAGIC | 0x137F (oryg. minix) |
MINIX_SUPER_MAGIC2 | 0x138F (30-znakowy minix) |
MINIX2_SUPER_MAGIC | 0x2468 (minix V2) |
MINIX2_SUPER_MAGIC2 | 0x2478 (minix V2, 30-znakowy) |
MSDOS_SUPER_MAGIC | 0x4d44 |
NCP_SUPER_MAGIC | 0x564c |
NFS_SUPER_MAGIC | 0x6969 |
PROC_SUPER_MAGIC | 0x9fa0 |
SMB_SUPER_MAGIC | 0x517B |
XENIX_SUPER_MAGIC | 0x012FF7B4 |
SYSV4_SUPER_MAGIC | 0x012FF7B5 |
SYSV2_SUPER_MAGIC | 0x012FF7B6 |
COH_SUPER_MAGIC | 0x012FF7B7 |
UFS_MAGIC | 0x00011954 |
_XIAFS_SUPER_MAGIC | 0x012FD16D |
wartość | komentarz |
---|---|
0 |
Zamknij log. Nic nie robi. |
1 |
Otwórz log. Nic nie robi. |
2 |
Czytaj z logu co najwyżej EDX bajtów do [ECX]. Zwraca w EAX liczbę odczytanych bajtów. |
3 |
Przeczytaj wszystkie (ostatnie EDX bajtów) wiadomości pozostałe w buforze. Zwraca w EAX liczbę odczytanych bajtów. |
4 |
Przeczytaj i wyczyść wszystkie (ostatnie EDX bajtów) wiadomości pozostałe w buforze. Zwraca w EAX liczbę odczytanych bajtów. |
5 |
Wyczyść bufor. |
6 |
Wyłącz funkcję printk() na konsolę. |
7 |
Włącz funkcję printk() na konsolę. |
8 |
Ustal poziom logowania wiadomości wysyłanych na konsolę. |
nazwa | wartość | komentarz |
---|---|---|
ITIMER_REAL | 0 |
odlicza czas rzeczywisty |
ITIMER_VIRTUAL | 1 |
odlicza czas wykonywania się procesu |
ITIMER_PROF | 2 |
odlicza oba czasy |
Struktura "itimerval" (funkcja 104) z /usr/include/linux/time.h:
struct itimerval { struct timeval it_interval; /* następna wartość? */ struct timeval it_value; /* obecna wartość */ }; struct timeval { long tv_sec; /* sekundy */ long tv_usec; /* mikrosekundy */ };
Struktura "stat" (funkcja 104) z man 2 stat (i /usr/include/asm/stat.h, gdzie zwykle dane są bardziej adekwatne do posiadanego systemu, niż na stronach manuala):
/* ze strony manuala: */ struct stat { dev_t st_dev; /* urządzenie */ ino_t st_ino; /* i-węzeł (inode) */ umode_t st_mode; /* ochrona */ nlink_t st_nlink; /* liczba dowiązań stałych (hardlinks) */ uid_t st_uid; /*ID użytkownika właściciela*/ gid_t st_gid; /* ID grupy właściciela */ dev_t st_rdev; /* typ urządzenia (jeśli urządzenie inode) */ off_t st_size; /* całkowity rozmiar w bajtach */ unsigned long st_blksize; /* wielkość bloku dla I/O systemu plików */ unsigned long st_blocks; /*liczba zaalokowanych bloków*/ time_t st_atime; /* czas ostatniego dostępu */ time_t st_mtime; /*czas ostatniej modyfikacji*/ time_t st_ctime; /* czas ostatniej zmiany */ }; /* z pliku /usr/include/asm/stat.h: */ struct stat { unsigned long st_dev; unsigned long st_ino; unsigned short st_mode; unsigned short st_nlink; unsigned short st_uid; unsigned short st_gid; unsigned long st_rdev; unsigned long st_size; unsigned long st_blksize; unsigned long st_blocks; unsigned long st_atime; unsigned long st_atime_nsec; unsigned long st_mtime; unsigned long st_mtime_nsec; unsigned long st_ctime; unsigned long st_ctime_nsec; unsigned long __unused4; unsigned long __unused5; };
nazwa | ósemkowo | co oznacza |
---|---|---|
S_IFMT | 00170000 |
maska bitowa dla pól bitowych typu pliku |
S_IFSOCK | 0140000 |
gniazdo |
S_IFLNK | 0120000 |
dowiązanie symboliczne (symbolic link) |
S_IFREG | 0100000 |
plik regularny |
S_IFBLK | 0060000 |
urządzenie blokowe |
S_IFDIR | 0040000 |
katalog |
S_IFCHR | 0020000 |
urządzenie znakowe |
S_IFIFO | 0010000 |
fifo |
S_ISUID | 0004000 |
bit 'set UID' |
S_ISGID | 0002000 |
bit 'set GID' |
S_ISVTX | 0001000 |
bit 'sticky' |
S_IRWXU | 00700 |
użytkownik (właściciel pliku) ma prawa odczytu, zapisu i wykonania |
S_IRUSR (S_IREAD) | 00400 |
użytkownik ma prawa odczytu |
S_IWUSR (S_IWRITE) | 00200 |
użytkownik ma prawa zapisu |
S_IXUSR (S_IEXEC) | 00100 |
użytkownik ma prawa wykonania |
S_IRWXG | 0070 |
grupa ma prawa odczytu, zapisu i wykonania |
S_IRGRP (S_IREAD) | 0040 |
grupa ma prawa odczytu |
S_IWGRP (S_IWRITE) | 0020 |
grupa ma prawa zapisu |
S_IXGRP (S_IEXEC) | 0010 |
użytkownik ma prawa wykonania |
S_IRWXO | 007 |
inni mają prawa odczytu, zapisu i wykonania |
S_IROTH (S_IREAD) | 004 |
inni mają prawa odczytu |
S_IWOTH (S_IWRITE) | 002 |
inni mają prawa zapisu |
S_IXOTH (S_IEXEC) | 001 |
inni mają prawa wykonania |
Struktura "vm86_struct" (funkcja 113) z /usr/include/asm/vm86.h:
struct vm86_struct { struct vm86_regs regs; unsigned long flags; unsigned long screen_bitmap; unsigned long cpu_type; struct revectored_struct int_revectored; struct revectored_struct int21_revectored; }; struct vm86_regs { /* * normalne rejestry, ze specjalnym znaczeniem dla rej.segmentowych i deskryptorów */ long ebx; long ecx; long edx; long esi; long edi; long ebp; long eax; long __null_ds; long __null_es; long __null_fs; long __null_gs; long orig_eax; long eip; unsigned short cs, __csh; long eflags; long esp; unsigned short ss, __ssh; /* * te są specyficzne dla trybu v86: */ unsigned short es, __esh; unsigned short ds, __dsh; unsigned short fs, __fsh; unsigned short gs, __gsh; }; struct revectored_struct { unsigned long __map[8]; /* 256 bitów */ };
Opcje dla funkcji typu "wait" (numer 7 i 114) to wartość 0 lub jedna lub więcej tych opcji (z /usr/include/bits/waitflags.h):
nazwa | wartość | co oznacza |
---|---|---|
WNOHANG | 1 |
nie blokuj czekania, wraca natychmiast, gdy żaden potomek się nie zakończył. Tylko dla sys_wait/pid |
WUNTRACED | 2 |
podaj status zatrzymanych procesów potomnych. Tylko dla sys_wait, sys_waitpid |
WCONTINUED | 8 |
czekaj na zatrzymanych potomków, wznowionych sygnałem SIGCONT |
WSTOPPED | 2 |
czekaj na potomków zatrzymanych przez sygnał. Tylko dla sys_waitid |
WEXITED | 4 |
czekaj na zakończenie potomków. Tylko dla sys_waitid |
WNOWAIT | 0x01000000 |
tylko pobierz status. Tylko dla sys_waitid |
__WNOTHREAD | 0x20000000 |
nie czekaj na potomków innych wątków grupy. Tylko dla sys_waitid |
__WALL | 0x40000000 |
czekaj na któregokolwiek z potomków. Tylko dla sys_waitid |
__WCLONE | 0x80000000 |
czekaj na sklonowane procesy. Tylko dla sys_waitid |
Struktura sysinfo (funkcja 116) z /usr/include/linux/kernel.h:
(pre 2.3.16, wszystkie rozmiary w bajtach): struct sysinfo { long uptime; /* liczba sekund od startu systemu */ unsigned long loads[3]; /* średnie obciążenie w ciągu 1, 5 i 15 minut */ unsigned long totalram; /* ilość pamięci */ unsigned long freeram; /* ilość wolnej pamięci */ unsigned long sharedram; /* ilość pamięci wspólnej */ unsigned long bufferram; /* pamięć wykorzystywana przez bufory */ unsigned long totalswap; /* ilość pamięci wymiany */ unsigned long freeswap; /* ilość wolnej pamięci wymiany */ unsigned short procs; /* liczba procesów */ char _f[22]; /* dopełnienie do 64 bajtów */ }; (od 2.3.48, rozmiary w krotnościach mem_unit?) struct sysinfo { long uptime; /* liczba sekund od startu systemu */ unsigned long loads[3]; /* średnie obciążenie w ciągu 1, 5 i 15 minut */ unsigned long totalram; /* ilość pamięci */ unsigned long freeram; /* ilość wolnej pamięci */ unsigned long sharedram; /* ilość pamięci wspólnej */ unsigned long bufferram; /* pamięć wykorzystywana przez bufory */ unsigned long totalswap; /* ilość pamięci wymiany */ unsigned long freeswap; /* ilość wolnej pamięci wymiany */ unsigned short procs; /* liczba procesów */ unsigned long totalhigh; /* ilość pamięci wysokiej */ unsigned long freehigh; /* ilość wolnej pamięci wysokiej */ unsigned int mem_unit; /* wielkość jednostki pamięci w bajtach */ /* dopełnienie dla libc5 */ char _f[20-2*sizeof(long)-sizeof(int)]; };
Flagi dla funkcji 120 (dla jądra 2.4.18?) z /usr/include/linux/sched.h:
nazwa | wartość | co oznacza |
---|---|---|
CSIGNAL | 0x000000ff |
maska sygnałów do wysłania przy wychodzeniu |
CLONE_VM | 0x00000100 |
gdy VM jest dzielone między procesy |
CLONE_FS | 0x00000200 |
gdy informacje o systemie plików jest dzielone między procesy |
CLONE_FILES | 0x00000400 |
gdy otwarte pliki są dzielone między procesy |
CLONE_SIGHAND | 0x00000800 |
gdy dzielone są procedury obsługi sygnałów i blokowane sygnały |
CLONE_PID | 0x00001000 |
gdy PID jest dzielony między procesy |
CLONE_PTRACE | 0x00002000 |
jeśli chcemy, aby klon też mógł być śledzony |
CLONE_VFORK | 0x00004000 |
jeśli klonujący chce, by proces potomny go obudził przy mm_release |
CLONE_PARENT | 0x00008000 |
jeśli klon ma mieć tego samego rodzica, co klonujący |
CLONE_THREAD | 0x00010000 |
Ta sama grupa wątków? |
CLONE_NEWNS | 0x00020000 |
Nowa grupa przestrzeni nazw?? |
CLONE_SIGNAL | (CLONE_SIGHAND | CLONE_THREAD) |
Połączenie tych dwóch: ta sama grupa wątków oraz
gdy dzielone są procedury obsługi sygnałów i blokowane sygnały |
Struktura utsname (funkcja 122) z /usr/include/sys/utsname.h:
#define _UTSNAME_LENGTH 65 /* wszystkie tablice poniżej są tej długości */ struct utsname { /* Nazwa implementacji systemu operacyjnego. */ char sysname[_UTSNAME_SYSNAME_LENGTH]; /* Nazwa tego komputera w sieci. */ char nodename[_UTSNAME_NODENAME_LENGTH]; /* Wydanie (release) tej implementacji. */ char release[_UTSNAME_RELEASE_LENGTH]; /* Wersja tego wydania. */ char version[_UTSNAME_VERSION_LENGTH]; /* Nazwa sprzętu, na który system pracuje. */ char machine[_UTSNAME_MACHINE_LENGTH]; #if _UTSNAME_DOMAIN_LENGTH - 0 /* Nazwa domeny tego komputera w sieci. */ # ifdef __USE_GNU char domainname[_UTSNAME_DOMAIN_LENGTH]; # else char __domainname[_UTSNAME_DOMAIN_LENGTH]; # endif #endif };
Numery funkcji dla modify_ldt (funkcja 123)
wartość | co oznacza |
---|---|
0 | Czytaj LDT do [ECX], EDX bajtów |
1 | Zmień 1 wpis w LDT. ECX ma adres struktury modify_ldt_ldt_s, a EDX - jej rozmiar |
2 | Czytaj domyślne LDT do [ECX], EDX bajtów |
17 | Zmień 1 wpis w LDT. ECX ma adres struktury modify_ldt_ldt_s, a EDX - jej rozmiar (?) |
Struktura "modify_ldt_ldt_s" (funkcja 123) z /usr/include/asm/ldt.h:
struct modify_ldt_ldt_s { unsigned int entry_number; unsigned long base_addr; unsigned int limit; unsigned int seg_32bit:1; unsigned int contents:2; unsigned int read_exec_only:1; unsigned int limit_in_pages:1; unsigned int seg_not_present:1; unsigned int useable:1; };
Struktura "timex" (funkcja 124) z man 2 adjtimex (w /usr/include/linux/timex.h jest trochę większa):
struct timex { int modes; /* przełącznik trybu */ long offset; /* offset czasu (mikrosekundy) */ long frequency; /* offset częstotliwości (skalowany ppm) */ long maxerror; /* maksymalny błąd (mikrosekundy) */ long esterror; /* obliczony błąd (mikrosekundy) */ int status; /* komenda/status zegara */ long constant; /* stała czasu pll */ long precision; /* dokładność zegara (mikrosekundy) (tylko do odczytu) */ long tolerance; /* tolerancja częstotliwości zegara (ppm) (tylko do odczytu) */ struct timeval time; /* aktualny czas (tylko do odczytu) */ long tick; /* czas miedzy tyknięciami zegara (mikrosekundy) */ };
Pole "modes" określa, które parametry (jeśli w ogóle) ustawić. Może ono zawierać bitowe OR kombinacji zera lub więcej spośród następujących wartości:
nazwa | wartość | opis |
---|---|---|
ADJ_OFFSET | 0x0001 |
offset czasu |
ADJ_FREQUENCY | 0x0002 |
offset częstotliwości |
ADJ_MAXERROR | 0x0004 |
maksymalny błąd czasu |
ADJ_ESTERROR | 0x0008 |
obliczany błąd czasu |
ADJ_STATUS | 0x0010 |
status zegara |
ADJ_TIMECONST | 0x0020 |
stała czasu pll |
ADJ_TICK | 0x4000 |
wartość tyknięcia |
ADJ_OFFSET_SINGLESHOT | 0x8001 |
staromodne adjtime |
Zwyczajni użytkownicy są ograniczeni do wartości zero dla "modes". Jedynie superużytkownik może ustawiać jakiekolwiek parametry.
Jeśli nie wystąpił błąd, zwracane jest:
nazwa | wartość | opis |
---|---|---|
TIME_OK | 0 |
zegar zsynchronizowany |
TIME_INS | 1 |
dodaj sekundę przestępną |
TIME_DEL | 2 |
skasuj sekundę przestępną |
TIME_OOP | 3 |
sekunda przestępna trwa |
TIME_WAIT | 4 |
wystąpiła sekunda przestępna |
TIME_BAD | 5 |
błąd, zegar nie zsynchronizowany |
Więcej informacji w /usr/include/linux/timex.h.
Akcja do wykonania (funkcja 126) z /usr/include/asm/signal.h:
nazwa | wartość | opis |
---|---|---|
SIG_BLOCK | 0 |
Do aktualnego zestawu sygnałów blokowanych dodaj te spod [ECX]. |
SIG_UNBLOCK | 1 |
Od aktualnego zestawu sygnałów blokowanych usuń te spod [ECX]. |
SIG_SETMASK | 2 |
Aktualny zestaw sygnałów blokowanych zamień na ten spod [ECX]. |
Struktura "module" (funkcja 128) z man module:
struct module { unsigned long size_of_struct; struct module *next; const char *name; unsigned long size; long usecount; unsigned long flags; unsigned int nsyms; unsigned int ndeps; struct module_symbol *syms; struct module_ref *deps; struct module_ref *refs; int (*init)(void); void (*cleanup)(void); const struct exception_table_entry *ex_table_start; const struct exception_table_entry *ex_table_end; #ifdef __alpha__ unsigned long gp; #endif };
Więcej w /usr/include/linux/module.h.
Struktura "kernel_sym" (funkcja 130) z /usr/include/linux/module.h:
struct kernel_sym { unsigned long value; char name[60]; };
Komenda do wykonania (funkcja 131) z /usr/include/sys/quota.h (w nawiasach z /usr/include/linux/quota.h):
nazwa | wartość | opis |
---|---|---|
Q_QUOTAON | 0x0100 (0x800002) |
Włącz limity dyskowe. ESI = adres nazwy pliku zawierającego limity. |
Q_QUOTAOFF | 0x0200 (0x800003) |
Wyłącz limity. EDX i ESI ignorowane. |
Q_GETQUOTA | 0x0300 (0x800007) |
Pobierz limity i bieżące zapełnienie dla użytkownika/grupy EDX. ESI = adres struktury mem_dqblk. |
Q_SETQUOTA | 0x0400 (0x800008) |
Ustaw limity i bieżące zapełnienie dla użytkownika/grupy EDX. ESI = adres struktury mem_dqblk. |
Q_SETQLIM | 0x0700 (brak) |
Ustaw limity dla użytkownika/grupy EDX. ESI = adres struktury mem_dqblk. |
Q_SETUSE | 0x0500 (brak) |
Ustaw bieżące zapełnienie dla użytkownika/grupy EDX. ESI = adres struktury mem_dqblk. |
Q_SYNC | 0x0600 (0x800001) |
Aktualizuj kopię quot dla systemu plików. Jeśli ECX=0, synchronizowane są wszystkie systemy plików z włączoną quotą. EDX i ESI ignorowane. |
Q_GETSTATS | 0x0800 |
Pobierz statystyki i ogólne informacje o quocie. ESI = adres struktury dqstats. ECX i EDX ignorowane. |
Q_GETINFO | brak (0x800005) |
Pobierz informacje o pliku z quotami?. ESI = adres struktury mem_dqinfo. EDX ignorowane. |
Q_SETINFO | brak (0x800006) |
Ustaw informacje o pliku z quotami?. ESI = adres struktury mem_dqinfo. EDX ignorowane. |
Q_SETGRACE | brak (brak) |
Ustal "grace times" w pliku z quotami?. ESI = adres struktury mem_dqinfo. EDX ignorowane. |
Q_SETFLAGS | brak (brak) |
Ustal flagi w informacji o pliku z quotami?. ESI = adres struktury mem_dqinfo. EDX ignorowane. |
Na systemie plików XFS komendy są inne.
struct mem_dqblk { __u32 dqb_bhardlimit; /* bezwzględny limit zajętych bloków na dysku */ __u32 dqb_bsoftlimit; /* preferowany limit zajętych bloków na dysku */ qsize_t dqb_curspace; /* bieżący rozmiar zajmowanej przestrzeni */ __u32 dqb_ihardlimit; /* bezwzględny limit zajętych węzłów (i-nodes) na dysku*/ __u32 dqb_isoftlimit; /* preferowany limit zajętych węzłów na dysku */ __u32 dqb_curinodes; /*bieżąca liczba zajętych węzłów*/ time_t dqb_btime; /* limit czasu nadmiernego użycia dysku */ time_t dqb_itime; /* limit czasu nadmiernego użycia węzła */ }; struct mem_dqinfo { struct quota_format_type *dqi_format; int dqi_flags; unsigned int dqi_bgrace; unsigned int dqi_igrace; union { struct v1_mem_dqinfo v1_i; struct v2_mem_dqinfo v2_i; } u; }; struct dqstats { int lookups; int drops; int reads; int writes; int cache_hits; int allocated_dquots; int free_dquots; int syncs; };
Komenda do wykonania (funkcja 134):
wartość EBX | opis |
---|---|
<= 0 | jeśli demon nie był uruchomiony, to funkcja wchodzi w kod demona i nigdy nie powraca. |
1 | Niektóre bufory są zapisywane na dysk. |
>=2 i jest parzyste | ECX = adres DWORDa, pod [ECX] zostaje zwrócony parametr dostrajający równy (EBX-2)/2 |
>=3 i jest nieparzyste | ECX = DWORD, jądro nadaje tę wartość parametrowi dostrajającemu o numerze (EBX-3)/2 |
Opcje dla sysfs (funkcja 135):
EBX | opis | ECX i EDX | co zwraca |
---|---|---|---|
1 | Tłumacz nazwę systemu plików na numer |
ECX = adres łańcucha znaków zawierającego nazwę. |
EAX = numer systemu plików |
2 | Tłumacz numer systemu plików na nazwę |
ECX = numer systemu plików EDX = adres bufora na nazwę. | EAX = 0 |
3 | Zwróć ogólną liczbę systemów plików aktualnie obecnych w jądrze. |
ignorowane | EAX = liczba systemów plików |
Operacja dla sys_flock (funkcja 143) z /usr/include/asm/fcntl.h:
nazwa | wartość | opis |
---|---|---|
LOCK_SH | 1 |
Założenie blokady współdzielonej. |
LOCK_EX | 2 |
Założenie blokady wyłącznej. |
LOCK_UN | 8 |
Usunięcie blokady założonej przez ten proces |
Flagi dla sys_msync (funkcja 144) z /usr/include/asm/mman.h:
nazwa | wartość | opis |
---|---|---|
MS_ASYNC | 1 |
Wykonaj zapisy asynchroniczne. |
MS_INVALIDATE | 2 |
Zaznacz dane jako nieważne po zapisaniu |
MS_SYNC | 4 |
Wykonaj zapisy synchroniczne. |
Struktura iovec (funkcja 145) z /usr/include/bits/uio.h:
struct iovec { void *iov_base; /* adres danych */ size_t iov_len; /* długość danych */ };
Struktura sysctl_args (funkcja 149) z man 2 sysctl:
struct __sysctl_args { int *name; /* wektor liczb całkowitych opisujący zmienną */ int nlen; /* długość tego wektora */ void *oldval; /* 0 lub adres, gdzie zachować starą wartość */ size_t *oldlenp; /* ilość miejsca na starą wartość nadpisywana przez rzeczywisty jej rozmiar */ void *newval; /* 0 lub adres nowej wartości */ size_t newlen; /* rozmiar nowej wartości */ };
Flagi dla sys_mlockall (funkcja 152) z /usr/include/bits/mman.h:
nazwa | wartość | opis |
---|---|---|
MCL_CURRENT | 1 |
Zablokuj wszystkie strony pamięci w przestrzeni adresowej procesu. |
MCL_FUTURE | 2 |
Zablokuj wszystkie strony pamięci w przestrzeni adresowej procesu w przyszłości, w chwili mapowania ich do przestrzeni procesu. |
Struktura sched_param (funkcja 154) z /usr/include/bits/sched.h:
struct sched_param { int __sched_priority; };
Polityka dla szeregowania zadań (funkcje 156,157,159,160) z /usr/include/bits/sched.h:
nazwa | wartość | opis |
---|---|---|
SCHED_OTHER | 0 |
Domyślny sposób szeregowania zadań |
SCHED_FIFO | 1 |
Pierwszy na wejściu, pierwszy na wyjściu |
SCHED_RR | 2 |
Szeregowanie cykliczne |
Struktura timespec (funkcja 162 i inne) z man nanosleep:
struct timespec { time_t tv_sec; /* sekundy */ long tv_nsec; /* nanosekundy */ };
Flagi dla funkcji sys_mremap (numer 163) z /usr/include/linux/mman.h:
nazwa | wartość | opis |
---|---|---|
MREMAP_MAYMOVE | 1 |
Można przenosić te strony |
MREMAP_FIXED | 2 |
Nie można przenosić stron. |
Kody funkcji dla funkcji sys_vm86 (numer 166) z /usr/include/asm/vm86.h:
nazwa | wartość |
---|---|
VM86_PLUS_INSTALL_CHECK | 0 |
VM86_ENTER | 1 |
VM86_ENTER_NO_BYPASS | 2 |
VM86_REQUEST_IRQ | 3 |
VM86_FREE_IRQ | 4 |
VM86_GET_IRQ_BITS | 5 |
VM86_GET_AND_RESET_IRQ | 6 |
Struktura "vm86plus_struct" (funkcja 113) z /usr/include/asm/vm86.h:
struct vm86plus_struct { struct vm86_regs regs; unsigned long flags; unsigned long screen_bitmap; unsigned long cpu_type; struct revectored_struct int_revectored; struct revectored_struct int21_revectored; struct vm86plus_info_struct vm86plus; }; struct vm86plus_info_struct { unsigned long force_return_for_pic:1; unsigned long vm86dbg_active:1; /* dla debuggera */ unsigned long vm86dbg_TFpendig:1; /* dla debuggera */ unsigned long unused:28; unsigned long is_vm86pus:1; /* do użytku wewnętrznego trybu vm86*/ unsigned char vm86dbg_intxxtab[32]; /* dla debuggera */ };
Numery podfunkcji dla funkcji sys_query_module (numer 167) z /usr/include/linux/module.h:
nazwa | wartość | co zwraca |
---|---|---|
brak | 0 |
zawsze sukces |
QM_MODULES | 1 |
bufor: nazwy oddzielone znakiem zerowym [EDI] = liczba modułów |
QM_DEPS | 2 |
w buforze: nazwy modułów używane przez podany moduł, [EDI] = liczba takich modułów |
QM_REFS | 3 |
w buforze: nazwy modułów używające podanego modułu, [EDI] = liczba takich modułów |
QM_SYMBOLS | 4 |
bufor: eksportowane symbole i wartości. Format: struktury module_symbol (patrz niżej)
i nazwy oddzielone znakiem zerowym. [EDI] = liczba symboli |
QM_INFO | 5 |
Format bufora: struktury module_info (patrz niżej) [EDI] = rozmiar struktury module_info |
struct module_symbol { unsigned long value; unsigned long name; /* adres łańcucha znaków od początku bufora */ }; struct module_info { unsigned long address; /* adres modułu */ unsigned long size; /* zajmowana pamięć */ unsigned long flags; /* stan: MOD_RUNNING, MOD_AUTOCLEAN, ... */ };
Struktura "pollfd" dla funkcji sys_poll (numer 168) z man poll:
struct pollfd { int fd; /* deskryptor otwartego pliku */ short events; /* maska zdarzeń (patrz niżej) do monitorowania */ short revents; /* powrotna maska zdarzeń znalezionych (patrz niżej) */ };
Zdarzenia z /usr/include/sys/poll.h:
nazwa | wartość | co oznacza |
---|---|---|
POLLIN | 0x0001 |
mogą być czytane (bez blokowania) dane o priorytecie innym niż wysoki |
POLLPRI | 0x0002 |
mogą być czytane dane o priorytecie wysokim |
POLLOUT | 0x0004 |
mogą być zapisywane dane normalne |
POLLWRNORM | POLLOUT |
jak POLLOUT. |
POLLERR | 0x0008 |
błąd |
POLLHUP | 0x0010 |
rozłączenie |
POLLNVAL | 0x0020 |
deskryptor jest nieprawidłowy |
POLLRDNORM | 0x0040 |
mogą być czytane dane normalne |
POLLNORM | POLLRDNORM |
jak POLLRDNORM. |
POLLRDBAND | 0x0080 |
mogą być czytane dane priorytetowe |
POLLWRBAND | 0x0100 |
mogą być zapisywane dane priorytetowe |
Komendy w funkcji sys_nfsservctl (numer 169) z man nfsservctl i /usr/include/linux/nfsd/syscall.h:
nazwa | wartość | co oznacza |
---|---|---|
NFSCTL_SVC | 0 |
to jest proces serwera |
NFSCTL_ADDCLIENT | 1 |
dodanie klienta NFS |
NFSCTL_DELCLIENT | 2 |
usunięcie klienta NFS |
NFSCTL_EXPORT | 3 |
eksportowanie systemu plików |
NFSCTL_UNEXPORT | 4 |
zaprzestanie eksportowania systemu plików |
NFSCTL_UGIDUPDATE | 5 |
uaktualnienie mapy uid/gid klienta |
NFSCTL_GETFH | 6 |
otrzymanie fh przez ino (używane przez mountd) |
NFSCTL_GETFD | 7 |
otrzymanie fh przez ścieżkę (używane przez mountd) |
NFSCTL_GETFS | 8 |
otrzymanie fh przez ścieżkę z maksymalną długością FH |
NFSCTL_FODROP | 50 |
odrzuć żądania w czasie awarii |
NFSCTL_STOPFODROP | 51 |
przestań odrzucać żądania |
NFSCTL_FOLOCKS | 52 |
porzuć blokady w czasie awarii |
NFSCTL_FOGRACE | 53 |
set grace period for failover |
NFSCTL_FOSERV | 54 |
remove service mon for failover |
Struktura "nfsctl_arg" i unia "nfsctl_res" dla funkcji sys_nfsservctl (numer 169) z man nfsservctl:
struct nfsctl_arg { int ca_version; /*zabezpieczenie*/ union { struct nfsctl_svc u_svc; struct nfsctl_client u_client; struct nfsctl_export u_export; struct nfsctl_uidmap u_umap; struct nfsctl_fhparm u_getfh; struct nfsctl_fdparm u_getfd; struct nfsctl_fsparm u_getfs; struct nfsctl_fodrop u_fodrop; } u; } union nfsctl_res { __u8 cr_getfh[NFS_FHSIZE]; struct knfsd_fh cr_getfs; }; /* SVC */ struct nfsctl_svc { unsigned short svc_port; int svc_nthreads; }; /* ADDCLIENT/DELCLIENT */ struct nfsctl_client { char cl_ident[NFSCLNT_IDMAX+1]; int cl_naddr; struct in_addr cl_addrlist[NFSCLNT_ADDRMAX]; int cl_fhkeytype; int cl_fhkeylen; unsigned char cl_fhkey[NFSCLNT_KEYMAX]; }; /* EXPORT/UNEXPORT */ struct nfsctl_export { char ex_client[NFSCLNT_IDMAX+1]; char ex_path[NFS_MAXPATHLEN+1]; __kernel_dev_t ex_dev; __kernel_ino_t ex_ino; int ex_flags; __kernel_uid_t ex_anon_uid; __kernel_gid_t ex_anon_gid; }; /* UGIDUPDATE */ struct nfsctl_uidmap { char * ug_ident; __kernel_uid_t ug_uidbase; int ug_uidlen; __kernel_uid_t * ug_udimap; __kernel_gid_t ug_gidbase; int ug_gidlen; __kernel_gid_t * ug_gdimap; }; /* GETFH */ struct nfsctl_fhparm { struct sockaddr gf_addr; __kernel_dev_t gf_dev; __kernel_ino_t gf_ino; int gf_version; }; /* GETFD */ struct nfsctl_fdparm { struct sockaddr gd_addr; char gd_path[NFS_MAXPATHLEN+1]; int gd_version; }; /* GETFS - Pobierz uchwyt do pliku wraz z rozmiarem */ struct nfsctl_fsparm { struct sockaddr gd_addr; char gd_path[NFS_MAXPATHLEN+1]; int gd_maxlen; }; /* FODROP/STOPFODROP */ struct nfsctl_fodrop { char fo_dev[NFS_MAXPATHLEN+1]; __u32 fo_timeout; };
Opcje w funkcji sys_prctl (numer 172) z man prctl i /usr/include/linux/prctl.h:
nazwa | wartość | co oznacza |
---|---|---|
PR_SET_PDEATHSIG | 1 |
ECX=numer sygnału, który otrzyma proces potomny po zakończeniu rodzica |
PR_GET_PDEATHSIG | 2 |
wczytaj bieżący numer sygnału, który otrzyma proces potomny po zakończeniu rodzica do [ECX] |
PR_GET_DUMPABLE | 3 |
pobranie informacji, czy program ma zrzucać rdzeń (core dump), zwraca w EAX |
PR_SET_DUMPABLE | 4 |
ustawienie, czy program ma zrzucać rdzeń (core dump) ECX=0 (nie) ECX=1 (tak) |
PR_GET_UNALIGN | 5 |
pobierz bity kontroli dostępu do nieułożonych danych? (unaligned access control bits), wynik w EAX? |
PR_SET_UNALIGN | 6 |
ustaw bity kontroli dostępu do nieułożonych danych (unaligned access control bits) ECX=1 (nie rób nic), ECX=2 (generuj sygnał SIGBUS) |
PR_GET_KEEPCAPS | 7 |
zachowanie możliwości procesu (keep capabilities), zwraca w EAX |
PR_SET_KEEPCAPS | 8 |
zachowanie możliwości procesu (keep capabilities), ECX=1 (tak) ECX=0 (nie) |
PR_GET_FPEMU | 9 |
pobierz bity kontroli emulacji FPU, zwraca w EAX? |
PR_SET_FPEMU | 10 |
ustaw bity kontroli emulacji FPU, ECX=1 (emulacja włączona) ECX=2 (generuj sygnał SIGFPE) |
PR_GET_FPEXC | 11 |
pobierz tryb wyjątków FPU, zwraca w EAX? |
PR_SET_FPEXC | 12 |
ustaw tryb wyjątków FPU, ECX=0 (wyłączone) ECX=1 (async non-recoverable exc. mode), ECX=2 (async recoverable exception mode), ECX=3 (precise exception mode) |
PR_GET_TIMING | 13 |
pobierz tryb mierzenia czasu procesu, zwraca w EAX? |
PR_SET_TIMING | 14 |
pobierz tryb mierzenia czasu procesu, ECX=0 (normalny) ECX=1 (dokładny) |
Struktury dla funkcji sys_capget (numer 184) i sys_capset (numer 185) z /usr/include/linux/capability.h:
typedef struct __user_cap_header_struct { __u32 version; int pid; } *cap_user_header_t; typedef struct __user_cap_data_struct { __u32 effective; __u32 permitted; __u32 inheritable; } *cap_user_data_t;
Struktura "stack_t" dla funkcji sys_sigaltstack (numer 186) z /usr/include/asm/signal.h:
SS_ONSTACK 0x0001 SS_DISABLE 0x0004 typedef struct sigaltstack { // stack_t void *ss_sp; // int (dword) int ss_flags; // int (dword), SS_ONSTACK lub SS_DISABLE size_t ss_size; // int (dword) } stack_t;
Struktura "stat64" dla funkcji sys_*stat64 (numer 195, 196, 197) z /usr/include/asm/stat.h:
struct stat64 { unsigned long long st_dev; unsigned char __pad0[4]; unsigned long __st_ino; unsigned int st_mode; unsigned int st_nlink; unsigned long st_uid; unsigned long st_gid; unsigned long long st_rdev; unsigned char __pad3[4]; long long st_size; unsigned long st_blksize; /* Liczba zaalokowanych 512-bajtowych bloków. */ unsigned long long st_blocks; unsigned long st_atime; unsigned long st_atime_nsec; unsigned long st_mtime; unsigned int st_mtime_nsec; unsigned long st_ctime; unsigned long st_ctime_nsec; unsigned long long st_ino; };
Informacja dla jądra o korzystaniu z pamięci dla funkcji sys_madvise (numer 219) z /usr/include/bits/mman.h:
nazwa | wartość | co oznacza |
---|---|---|
MADV_NORMAL | 0 |
Żadnego specjalnego traktowania |
MADV_RANDOM | 1 |
Można oczekiwać losowych dostępów do tej pamięci |
MADV_SEQUENTIAL | 2 |
Można oczekiwać sekwencyjnego dostępu do tej pamięci |
MADV_WILLNEED | 3 |
Nasz proces będzie potrzebował tych stron pamięci |
MADV_DONTNEED | 4 |
Nasz proces nie potrzebuje tych stron pamięci |
Makra "makedev" w składni FASM dla funkcji sys_mknod (numer 14) z /usr/include/sys/sysmacros.h:
; maj = numer główny urządzenia ; min = numer poboczny urządzenia ; dla jądra 2.4 macro makedev24 maj, min { xor esi, esi mov edx, maj shl edx, 8 or edx, min } ; dla jądra 2.6 macro makedev26 maj, min { mov edx, min and edx, 0xff mov esi, maj and esi, 0xfff shl esi, 8 or edx, esi xor eax, eax mov esi, min and esi, not 0xff shld eax, esi, 12 shl esi, 12 or edx, esi mov esi, maj and esi, not 0xfff or esi, eax }
Numery sygnałów (funkcje 37, 48 i 238) z /usr/include/bits/signum.h:
nazwa | wartość | co oznacza |
---|---|---|
SIGHUP | 1 |
"Rozłącz się" (hangup) |
SIGINT | 2 |
Przerwanie (na przykład naciśnięto Ctrl+C) |
SIGQUIT | 3 |
Wyjście |
SIGILL | 4 |
Procesor wykonał nieprawidłową instrukcję |
SIGTRAP | 5 |
Pułapka (przy śledzeniu wykonywania) |
SIGABRT | 6 |
Przerwanie działania |
SIGIOT | 6 (też!) |
Pułapka IOT |
SIGBUS | 7 |
Błąd szyny (złe ustawienie danych - na przykład adres niepodzielny przez 4) |
SIGFPE | 8 |
Wyjątek koprocesora (wynik typu NaN, ale też dzielenie przez zero lub przepełnienie w dzieleniu) |
SIGKILL | 9 |
Zabicie procesu |
SIGUSR1 | 10 |
Sygnał definiowany przez użytkownika |
SIGSEGV | 11 |
Naruszenie ochrony pamięci (segmentation fault) |
SIGUSR2 | 12 |
Drugi sygnał definiowany przez użytkownika |
SIGPIPE | 13 |
Nieprawidłowy potok |
SIGALRM | 14 |
Budzik |
SIGTERM | 15 |
Żądanie zakończenia programu |
SIGSTKFLT | 16 |
Błąd stosu (koprocesora?) |
SIGCHLD, SIGCLD | 17 |
Zmienił się stan procesu potomnego |
SIGCONT | 18 |
Kontynuacja |
SIGSTOP | 19 |
Żądanie zatrzymania programu |
SIGTSTP | 20 |
Zatrzymanie (z) klawiatury (?) |
SIGTTIN | 21 |
Odczyt z terminala w tle |
SIGTTOU | 22 |
Zapis do terminala w tle |
SIGURG | 23 |
Pilne zdarzenie na gnieździe |
SIGXCPU | 24 |
Przekroczony limit procesora |
SIGXFSZ | 25 |
Przekroczony limit rozmiaru pliku |
SIGVTALRM | 26 |
Wirtualny budzik |
SIGPROF | 27 |
Budzik profilujący |
SIGWINCH | 28 |
Zmiana rozmiaru okna |
SIGIO, SIGPOLL | 29 |
Można wykonywać I/O |
SIGPWR | 30 |
Restart po awarii zasilania (?) / Błąd zasilania |
SIGSYS | 31 |
Nieprawidłowa funkcja systemowa |
SIGUNUSED | 31 (też!) |
(nieużywane) |
Operacje futex (funkcja 240) z /usr/include/linux/futex.h:
nazwa | wartość | co oznacza | zwraca w EAX |
---|---|---|---|
FUTEX_WAIT | 0 |
Sprawdza, czy wartość futeksu wynosi tyle, ile podano i czeka |
0, gdy proces obudzono przez FUTEX_WAKE |
FUTEX_WAKE | 1 |
Budzi co najwyżej ECX procesów czekających na danym adresie |
liczba obudzonych procesów |
FUTEX_FD | 2 |
Przyporządkuje futeksowi deskryptor pliku |
nowy deskryptor pliku |
Struktura user_desc (funkcja 243) z /usr/src/?/include/asm/ldt.h:
struct user_desc { unsigned int entry_number; /* numer zmienianego lub pobieranego wpisu w TLS */ unsigned long base_addr; /* adres bazowy */ unsigned int limit; /* limit */ unsigned int seg_32bit:1; /* segment */ unsigned int contents:2; unsigned int read_exec_only:1; /* tylko RX */ unsigned int limit_in_pages:1; unsigned int seg_not_present:1;/* czy nieobecny */ unsigned int useable:1; /* można używać */ };
Struktura io_event (funkcja 247) z /usr/src/?/include/linux/aio_abi.h:
struct io_event { __u64 data; /* pole danych */ __u64 obj; /* skąd przyszło zdarzenie */ __s64 res; /* kod wynikowy zdarzenia */ __s64 res2; /* wynik drugorzędny */ };
Struktura iocb (funkcja 247) z /usr/src/?/include/linux/aio_abi.h:
struct iocb { /* do wewnętrznego użytku jądra/libc. */ __u64 aio_data; /*dane do zwrócenia jako dane zdarzenia*/ __u32 aio_key, aio_reserved1; /* jądro ustawia aio_key na żądany numer */ /* pola wspólne */ __u16 aio_lio_opcode; /* zobacz: IOCB_CMD_ */ __s16 aio_reqprio; __u32 aio_fildes; __u64 aio_buf; __u64 aio_nbytes; __s64 aio_offset; /* parametry dodatkowe */ __u64 aio_reserved2; /*w przyszłości będzie to wskaźnik na strukturę sigevent */ __u64 aio_reserved3; };
Struktura epoll_event (funkcja 255 i 256) z man 2 epoll_ctl:
typedef union epoll_data { void *ptr; int fd; __uint32_t u32; __uint64_t u64; } epoll_data_t; struct epoll_event { __uint32_t events; /* zdarzenia Epoll */ epoll_data_t data; /* Zmienna danych użytkownika */ };
Operacje epoll (funkcja 255) z /usr/include/sys/epoll.h:
nazwa | wartość | co oznacza |
---|---|---|
EPOLL_CTL_ADD | 1 |
Dodaj deskryptor EDX do deskryptora "epoll" w EBX |
EPOLL_CTL_DEL | 2 |
Usuń deskryptor EDX do deskryptora "epoll" w EBX |
EPOLL_CTL_MOD | 3 |
Zmień zdarzenie (struktura epoll_event) związane z deskryptorem EDX |
Struktura sigevent (funkcja 259) z /usr/include/asm/siginfo.h:
#define SIGEV_MAX_SIZE 64
#define SIGEV_PAD_SIZE ((SIGEV_MAX_SIZE/sizeof(int)) - 3)
typedef struct sigevent {
sigval_t sigev_value;
int sigev_signo;
int sigev_notify;
union {
int _pad[SIGEV_PAD_SIZE];
struct {
void (*_function)(sigval_t);
void *_attribute; /* pthread_attr_t */
} _sigev_thread;
} _sigev_un;
} sigevent_t;
/* Dla funkcji mq_notify podana jest taka definicja
w man mq_notify: */
union sigval { /* Przekazane dane */
int sival_int; /* Wartość całkowita */
void *sival_ptr; /* Wskaźnik (tak dosłownie mówi manual) */
};
struct sigevent {
int sigev_notify; /* Sposób powiadomienia 0=sygnał,
1=nic, 2=utwórz wątek*/
int sigev_signal; /* Numer sygnału powiadomienia */
union sigval sigev_value; /* Przekazane dane */
void (*sigev_notify_function) (union sigval);
/* Funkcja powiadamiania wątku */
void *sigev_notify_attributes;
/* Atrybuty funkcji wątku */
};
Struktura itimerspec (funkcja 260) z /usr/include/time.h:
struct itimerspec { struct timespec it_interval; struct timespec it_value; };
Identyfikatory zegara (funkcje 264-267) z /usr/include/bits/time.h:
nazwa | wartość | co oznacza |
---|---|---|
CLOCK_REALTIME | 0 |
Systemowy zegar czasu rzeczywistego |
CLOCK_MONOTONIC | 1 |
Systemowy zegar monotoniczny |
CLOCK_PROCESS_CPUTIME_ID | 2 |
Wysokiej rozdzielczości zegar CPU (dla procesu) |
CLOCK_THREAD_CPUTIME_ID | 3 |
Wysokiej rozdzielczości zegar CPU (dla wątku) |
Struktura statfs64 (funkcje 268 i 269) z /usr/include/bits/statfs.h:
struct statfs64 { __SWORD_TYPE f_type; /* 32 bity */ __SWORD_TYPE f_bsize; __fsblkcnt64_t f_blocks; /* 64 bity */ __fsblkcnt64_t f_bfree; __fsblkcnt64_t f_bavail; __fsfilcnt64_t f_files; __fsfilcnt64_t f_ffree; __fsid_t f_fsid; /* struct { int __val[2]; } */ __SWORD_TYPE f_namelen; __SWORD_TYPE f_frsize; __SWORD_TYPE f_spare[5]; };
Polityka dla pamięci (funkcja 274) z /usr/include/numaif.h i man 2 mbind:
nazwa | wartość | co oznacza |
---|---|---|
MPOL_DEFAULT | 0 |
Użyj domyślnej polityki procesu |
MPOL_PREFERRED | 1 |
Ustal preferowany węzeł do alokacji |
MPOL_BIND | 2 |
Ogranicz alokację pamięci tylko do podanych węzłów |
MPOL_INTERLEAVE | 3 |
Optymalizacja przepustowości na rzecz czasu trwania |
Flagi dla pamięci (funkcja 274) z /usr/src/kernels/.../include/linux/mempolicy.h:
nazwa | wartość | co oznacza |
---|---|---|
MPOL_MF_STRICT | (1<<0) |
Sprawdź, czy strony pamięci odpowiadają polityce.
Jeśli nie odpowiadają polityce domyślnej lub nie mogą zostać przesunięte MPOL_MF_MOVE*, zwracany jest błąd EIO. |
MPOL_MF_MOVE | (1<<1) |
Przesuń strony pamięci tego procesu, by odpowiadały polityce |
MPOL_MF_MOVE_ALL | (1<<2) |
Przesuń wszystkie strony pamięci, by odpowiadały polityce |
Struktura mq_attr (funkcja 277) z man 3 mq_getattr:
struct mq_attr { long mq_flags; /* Flagi: 0 lub O_NONBLOCK */ long mq_maxmsg; /* Max. liczba wiadomości w kolejce */ long mq_msgsize; /* Max. rozmiar wiadomości w bajtach */ long mq_curmsgs; /* Liczba wiadomości aktualnie w kolejce */ };
Struktura siginfo (funkcja 277) z /usr/include/asm/siginfo.h:
typedef struct siginfo { int si_signo; int si_errno; int si_code; union { int _pad[SI_PAD_SIZE]; /* kill() */ struct { pid_t _pid; /* pid wysyłającego */ uid_t _uid; /* uid wysyłającego */ } _kill; /* czasomierze POSIX.1b */ struct { unsigned int _timer1; unsigned int _timer2; } _timer; /* sygnały POSIX.1b */ struct { pid_t _pid; /* pid wysyłającego */ uid_t _uid; /* uid wysyłającego */ sigval_t _sigval; } _rt; /* SIGCHLD */ struct { pid_t _pid; /* który potomek */ uid_t _uid; /* uid wysyłającego */ int _status; /* kod wyjścia */ clock_t _utime; clock_t _stime; } _sigchld; /* SIGILL, SIGFPE, SIGSEGV, SIGBUS */ struct { void *_addr; /* instrukcja, która wywołała błąd */ } _sigfault; /* SIGPOLL */ struct { int _band; /* POLL_IN, POLL_OUT, POLL_MSG */ int _fd; } _sigpoll; } _sifields; } siginfo_t;
Flagi dla inotify (funkcja 292) z /usr/src/kernels/.../include/linux/inotify.h:
nazwa | wartość | co oznacza |
---|---|---|
IN_ACCESS | 0x00000001 |
Dostęp do obiektu |
IN_MODIFY | 0x00000002 |
Obiekt został zmodyfikowany |
IN_ATTRIB | 0x00000004 |
Zmiana atrybutów |
IN_CLOSE_WRITE | 0x00000008 |
Zamknięcie pliku otwartego do zapisu |
IN_CLOSE_NOWRITE | 0x00000010 |
Zamknięcie pliku nie otwartego do zapisu |
IN_OPEN | 0x00000020 |
Obiekt został otwarty |
IN_MOVED_FROM | 0x00000040 |
Z obserwowanego katalogu przeniesiono plik |
IN_MOVED_TO | 0x00000080 |
Do obserwowanego katalogu przeniesiono plik |
IN_CREATE | 0x00000100 |
W obserwowanym katalogu utworzono plik |
IN_DELETE | 0x00000200 |
W obserwowanym katalogu skasowano plik |
IN_DELETE_SELF | 0x00000400 |
Obserwowany obiekt został usunięty |
IN_MOVE_SELF | 0x00000800 |
Obiekt został przeniesiony |
IN_UNMOUNT | 0x00002000 |
System plików został odmontowany |
IN_Q_OVERFLOW | 0x00004000 |
Przepełnienie kolejki zdarzeń |
IN_IGNORED | 0x00008000 |
Plik został zignorowany |
IN_ONLYDIR | 0x01000000 |
Obserwuj ścieżkę tylko gdy jest katalogiem |
IN_DONT_FOLLOW | 0x02000000 |
Nie podążaj za dowiązaniami symbolicznymi |
IN_MASK_ADD | 0x20000000 |
Jeśli ten obiekt już jest obserwowany, to dopisz dane zdarzenia do obserwacji |
IN_ISDIR | 0x40000000 |
Zaszło zdarzenie na katalogu |
IN_ONESHOT | 0x80000000 |
Obserwuj daną ścieżkę tylko do pierwszego zdarzenia |
nazwa | wartość | znaczenie |
---|---|---|
IOPRIO_WHO_PROCESS | 0 |
ECX to numer pojedynczego procesu |
IOPRIO_WHO_PGRP | 1 |
ECX to identyfikator grupy procesów |
IOPRIO_WHO_USER | 2 |
ECX to identyfikator użytkownika |
nazwa | wartość | znaczenie |
---|---|---|
SYNC_FILE_RANGE_WAIT_BEFORE | 1 |
Czekaj na synchronizację zmienionych stron, które są zaznaczone do zapisania, przed jakimkolwiek zapisem |
SYNC_FILE_RANGE_WRITE | 2 |
Zacznij synchronizację zmienionych stron, które nie są zaznaczone do zapisania |
SYNC_FILE_RANGE_WAIT_AFTER | 4 |
Czekaj na synchronizację zmienionych stron, po jakimkolwiek zapisie |
nazwa | wartość | znaczenie |
---|---|---|
SIG_BLOCK | 0 |
Zestaw blokowanych sygnałów jest sumą bieżącego zestawu i zestawu w [ECX] |
SIG_UNBLOCK | 1 |
Sygnały z [ECX] zostają odblokowane |
SIG_SETMASK | 2 |
Zestaw blokowanych sygnałów jest ustawiany na [ECX] |
nazwa | wartość | znaczenie |
---|---|---|
POSIX_FADV_NORMAL | 0 |
Domyślny dostęp |
POSIX_FADV_RANDOM | 1 |
Dostęp w losowej kolejności |
POSIX_FADV_SEQUENTIAL | 2 |
Dostęp sekwencyjny |
POSIX_FADV_WILLNEED | 3 |
Te dane będą potrzebne w najbliższej przyszłości |
POSIX_FADV_DONTNEED | 4 |
Te dane nie będą potrzebne w najbliższej przyszłości |
POSIX_FADV_NOREUSE | 5 |
Dane będą potrzebne tylko raz |
nazwa | wartość | znaczenie |
---|---|---|
SPLICE_F_MOVE | 1 |
Spróbuj przenieść strony pamięci zamiast kopiowania. Nic nie robi w sys_tee. Nieużywane w sys_vmsplice. |
SPLICE_F_NONBLOCK | 2 |
Nie blokuj w czasie operacji wejścia-wyjścia |
SPLICE_F_MORE | 4 |
W kolejnych wywołaniach będą dalsze dane. Nic nie robi w sys_tee i sys_vmsplice. |
SPLICE_F_GIFT | 8 |
Nieużywane w sys_splice i sys_tee. W sys_vmsplice oznacza darowanie tych stron pamięci dla jądra. |
nazwa | wartość ósemkowo | znaczenie |
---|---|---|
IPC_CREAT | 00001000 |
Stwórz nowy segment |
IPC_EXCL | 00002000 |
Wyłączny dostęp do segmentu |
SHM_HUGETLB | 04000 |
Alokuj używając "wielkich stron" pamięci. |
SHM_NORESERVE | 010000 |
Nie rezerwuj przestrzeni wymiany dla tego segmentu |
tryb dostępu | 000-777 |
Takie samo znaczenie, jak we flagach dostępu |
nazwa | wartość ósemkowo | znaczenie |
---|---|---|
SHM_RDONLY | 010000 |
Podłącz segment tylko do odczytu. |
SHM_RND | 020000 |
Zaokrąglaj adres w dół do wielokrotności SHMLBA. |
SHM_REMAP | 040000 |
Zmień wszystkie mapowania w segmencie |
nazwa | wartość | znaczenie i wartość zwracana |
---|---|---|
IPC_RMID | 0 |
Zaznacz segment do usunięcia. Zwraca 0. |
IPC_SET | 1 |
Zapisz niektóre elementy podanej struktury do jądra. Zwraca 0. |
IPC_STAT | 2 |
Skopiuj dane z jądra o podanym segmencie do podanej struktury. Zwraca 0. |
IPC_INFO | 3 |
Zwróć informacje o limitach i parametrach współdzielonej pamięci.
Zwraca ostatni indeks w tablicy jądra do współdzielonej pamięci. |
SHM_LOCK | 11 |
Zapobiega wymianie (swapowaniu) segmentu. Zwraca 0. |
SHM_UNLOCK | 12 |
Umożliwia wymianę (swapowanie) segmentu. Zwraca 0. |
SHM_STAT | 13 |
Podobne do IPC_STAT, ale identyfikator oznacza numer w tablicy jądra.
Zwraca identyfikator segmentu o danym numerze. |
SHM_INFO | 14 |
Zwróć informacje o zasobach używanych przez współdzieloną pamięć.
Zwraca ostatni indeks w tablicy jądra do współdzielonej pamięci. |
Struktura shmid_ds (funkcja 31 w x86-64) z /usr/include/bits/shm.h:
struct shmid_ds { struct ipc_perm shm_perm; /* Właściciel i uprawnienia */ size_t shm_segsz; /* Rozmiar segmentu w bajtach */ time_t shm_atime; /* Czas ostatniego dołączenia */ time_t shm_dtime; /* Czas ostatniego odłączenia */ time_t shm_ctime; /* Czas ostatniej zmiany */ pid_t shm_cpid; /* PID twórcy */ pid_t shm_lpid; /* PID ostatniej operacji shmat lub shmdt */ shmatt_t shm_nattch; /* Bieżąca liczba podłączeń */ ... };
nazwa | wartość | znaczenie |
---|---|---|
AF_UNIX, AF_LOCAL | 1 |
Lokalna komunikacja |
AF_INET | 2 |
Protokoły IPv4 |
AF_AX25 | 3 |
Protokół AX.25 amatorskiego radia |
AF_IPX | 4 |
Protokoły Novell IPX |
AF_APPLETALK | 5 |
Appletalk |
AF_NETROM | 6 |
Amatorskie radio NetROM |
AF_BRIDGE | 7 |
Mostek wieloprotokołowy |
AF_ATMPVC | 8 |
Dostęp do surowych ATM PVC |
AF_X25 | 9 |
Protokół ITU-T X.25 / ISO-8208 |
AF_INET6 | 10 |
Protokoły IPv6 |
AF_ROSE | 11 |
Amatorskie radio X.25 PLP |
AF_DECnet | 12 |
Zarezerwowane dla projektu DECnet |
AF_NETBEUI | 13 |
Zarezerwowane dla projektu 802.2LLC |
AF_SECURITY | 14 |
Pseudo-domena dla wywołania zwrotnego zabezpieczeń |
AF_KEY | 15 |
Interfejs zarządzania kluczami |
AF_NETLINK | 16 |
Urządzenie interfejsu do jądra |
AF_PACKET | 17 |
Niskopoziomowy interfejs pakietowy |
AF_ASH | 18 |
Ash |
AF_ECONET | 19 |
Acorn Econet |
AF_ATMSVC | 20 |
ATM SVC |
AF_SNA | 22 |
Projekt Linux SNA |
AF_IRDA | 23 |
Gniazda IrDA |
AF_PPPOX | 24 |
Gniazda PPPoX |
AF_WANPIPE | 25 |
Interfejs do gniazd Wanpipe |
AF_BLUETOOTH | 31 |
Gniazda Bluetooth |
nazwa | wartość | znaczenie |
---|---|---|
SOCK_STREAM | 1 |
Sekwencjonowany, wiarygodny, dwukierunkowy, opary na połączeniu strumień bajtów |
SOCK_DGRAM | 2 |
Obsługuje datagramy (bez połączenia, niewiarygodny) |
SOCK_RAW | 3 |
Dostęp bezpośredni do protokołów sieciowych |
SOCK_RDM | 4 |
Wiarygodna warstwa datagramów bez gwarancji kolejności. |
SOCK_SEQPACKET | 5 |
Sekwencjonowany, wiarygodny, dwukierunkowy, opary na połączeniu strumień bajtów.
Odbiorca musi przeczytać cały pakiet za każdym czytaniem. |
SOCK_PACKET | 10 |
Przestarzałe, nie używać |
SOCK_NONBLOCK | 04000 ósemkowo |
Ustaw tryb nieblokujący. |
SOCK_CLOEXEC | 02000000 ósemkowo |
Ustaw flagę zamknij-podczas-exec. |
nazwa | wartość | znaczenie |
---|---|---|
MSG_CONFIRM | 0x800 |
(sendto) Potwierdzenie otrzymania odpowiedzi |
MSG_DONTROUTE | 0x04 |
(sendto) Nie używaj bramki do wysyłania, wyślij bezpośrednio |
MSG_DONTWAIT | 0x40 |
(sendto, recvfrom) Włącz tryb nieblokujący |
MSG_EOR | 0x80 |
(sendto) Koniec rekordu danych |
MSG_MORE | 0x8000 |
(sendto) Uruchamiający ma więcej danych do wysłania |
MSG_NOSIGNAL | 0x4000 |
(sendto) Nie wysyłaj sygnałów |
MSG_OOB | 0x01 |
(sendto, recvfrom) Wyślij dane poza kolejnością |
MSG_CMSG_CLOEXEC | 0x40000000 |
(recvmsg) Ustaw flagę zamknij-podczas-exc na deskryptorze otrzymanym podczas operacji SCM_RIGHTS |
MSG_ERRQUEUE | 0x2000 |
(recvfrom) Błędy powinny być odbierane przez kolejkę błędów gniazda |
MSG_PEEK | 0x02 |
(recvfrom) Pobierz dane z kolejki bez usuwania ich z kolejki |
MSG_TRUNC | 0x20 |
(recvfrom) Zwróć prawdziwą długość danych, nawet gdy bufor był mniejszy |
MSG_WAITALL | 0x100 |
(recvfrom) Czekaj na pełne zakończenie operacji |
Struktura msghdr (funkcja 46 w x86-64) z man 2 sendmsg:
struct msghdr { void *msg_name; /* opcjonalny adres */ socklen_t msg_namelen; /* rozmiar adresu */ struct iovec *msg_iov; /* tablica wysyłania i zbierania */ size_t msg_iovlen; /* liczba elementów w msg_iov */ void *msg_control; /* dane pomocnicze */ socklen_t msg_controllen; /* długość bufora danych pomocniczych */ int msg_flags; /* flagi na odebranej wiadomości: MSG_EOR, MSG_TRUNC, MSG_CTRUNC, MSG_OOB, MSG_ERRQUEUE*/ };
Struktura sembuf (funkcja 65 w x86-64) z /usr/include/sys/sem.h:
struct sembuf { unsigned short int sem_num; /* liczba semaforów */ short int sem_op; /* operacja na semaforze: liczba dodatnia jest dodawana zero oznacza czekanie na zero liczba ujemna jest odejmowana*/ short int sem_flg; /* flaga operacji: IPC_NOWAIT=04000 ósemkowo lub SEM_UNDO=0x1000 */ };
nazwa | wartość | znaczenie i wartość zwracana |
---|---|---|
IPC_RMID | 0 |
Usuń zestaw semaforów. Zwraca 0. |
IPC_SET | 1 |
Kopiuj dane z tablicy buf o adresie podanym w R10 do struktur jądra. Zwraca 0. |
IPC_STAT | 2 |
Kopiuj dane ze struktur jądra do tablicy buf o adresie podanym w R10. Zwraca 0. |
IPC_INFO | 3 |
Zwróć w buf w R10 informacje o systemowych limitach i parametrach semaforów.
Zwraca numer ostatniego używanego elementu w tablicy jądra. |
GETPID | 11 |
Zwraca PID procesu, który wykonał ostatnią operację na tym semaforze |
GETVAL | 12 |
Zwraca wartość podanego semafora w zestawie |
GETALL | 13 |
Do tablicy array o adresie podanym w R10 wpisuje wartości wszystkich semaforów w systemie. Zwraca 0. |
GETNCNT | 14 |
Zwraca liczbę procesów czekających na zwiększenie się podanego semafora w zestawie |
GETZCNT | 15 |
Zwraca liczbę procesów czekających na wyzerowanie się podanego semafora w zestawie |
SETVAL | 16 |
Ustaw wartości podane semafora w zestawie na tę podaną w R10. Zwraca 0. |
SETALL | 17 |
Ustaw wartości wszystkich semaforów na te podane w tablicy array o adresie podanym w R10. Zwraca 0. |
SEM_STAT | 18 |
Podobne do IPC_STAT, lecz identyfikator zestawu semaforów jest numerem semafora w tablicy jądra.
Zwraca identyfikator zestawu semaforów o podanym numerze. |
SEM_INFO | 19 |
Podobne do IPC_INFO, zwraca inne wartości w niektórych polach (man semctl)
Zwraca numer ostatniego używanego elementu w tablicy jądra. |
Unia semun (funkcja 66 w x86-64) z man 2 semctl:
union semun { int val; /* Wartość dla SETVAL */ struct semid_ds *buf; /* Bufor na IPC_STAT, IPC_SET */ unsigned short *array; /* Tablica dla GETALL, SETALL */ struct seminfo *__buf; /* Bufor dla IPC_INFO */ };
Struktura msgp (funkcja 69 w x86-64) z man 2 msgsnd:
struct msgbuf { long mtype; /* typ wiadomości, musi być > 0 */ char mtext[1]; /* dane wiadomości */ };
nazwa | wartość ósemkowo | znaczenie |
---|---|---|
IPC_NOWAIT | 04000 |
Nie czekaj na wiadomości |
MSG_EXCEPT | 020000 |
Odbierz pierwszą wiadomość NIE będącą podanego typu |
MSG_NOERROR | 010000 |
Obcinaj wiadomości do podanego rozmiaru |
Struktura msqid_ds (funkcja 71 w x86-64) z man 2 msgctl:
struct msqid_ds { struct ipc_perm msg_perm; /* Właściciel i uprawnienia */ time_t msg_stime; /* Czas ostatniego msgsnd */ time_t msg_rtime; /* Czas ostatniego msgrcv */ time_t msg_ctime; /* Czas ostatniej zmiany */ unsigned long __msg_cbytes; /* Aktualna liczba bajtów w kolejce */ msgqnum_t msg_qnum; /* Aktualna liczba wiadomości w kolejce */ msglen_t msg_qbytes; /* Maksymalna liczba bajtów dozwolona w kolejce */ pid_t msg_lspid; /* PID ostatniego msgsnd */ pid_t msg_lrpid; /* PID ostatniego msgrcv */ }; struct ipc_perm { key_t __key; /* Klucz podany msgget */ uid_t uid; /* Efektywny UID of właściciela */ gid_t gid; /* Efektywny GID of właściciela */ uid_t cuid; /* Efektywny UID of twórcy */ gid_t cgid; /* Efektywny GID of twórcy */ unsigned short mode; /* Uprawnienia */ unsigned short __seq; /* Numer sekwencyjny */ };
nazwa | wartość | znaczenie i wartość zwracana |
---|---|---|
IPC_RMID | 0 |
Usuń kolejkę. Zwraca 0. |
IPC_SET | 1 |
Kopiuj dane z tablicy buf o adresie podanym w R10 do struktur jądra. Zwraca 0. |
IPC_STAT | 2 |
Kopiuj dane ze struktur jądra do tablicy buf o adresie podanym w R10. Zwraca 0. |
IPC_INFO | 3 |
Zwróć w buf w R10 informacje o systemowych limitach i parametrach kolejek.
Zwraca numer ostatniego używanego elementu w tablicy jądra. |
MSG_STAT | 11 |
Podobne do IPC_STAT, lecz identyfikator zestawu semaforów jest numerem semafora w tablicy jądra.
Zwraca identyfikator zestawu semaforów o podanym numerze. |
MSG_INFO | 12 |
Podobne do IPC_INFO, zwraca inne wartości w niektórych polach (man semctl)
Zwraca numer ostatniego używanego elementu w tablicy jądra. |
nazwa | wartość | znaczenie i wartość zwracana |
---|---|---|
ARCH_SET_FS | 0x1002 |
Ustaw adres bazowy deskryptora FS na podany adres |
ARCH_GET_FS | 0x1003 |
Pobierz adres bazowy deskryptora FS do zmiennej pod podanym adresem |
ARCH_SET_GS | 0x1001 |
Ustaw adres bazowy deskryptora GS na podany adres |
ARCH_GET_GS | 0x1004 |
Pobierz adres bazowy deskryptora GS do zmiennej pod podanym adresem |
Struktura getcpu_cache (funkcja 318) z linux/include/linux/getcpu.h:
struct getcpu_cache { unsigned long blob[128 / sizeof(long)]; };
Struktura robust_list_head (funkcja 312) z /usr/include/linux/futex.h:
struct robust_list { struct robust_list *next; }; struct robust_list_head { struct robust_list list; long futex_offset; struct robust_list *list_op_pending; };
nazwa | wartość | znaczenie |
---|---|---|
KEYCTL_GET_KEYRING_ID | 0 |
Pobierz identyfikator zbioru kluczy |
KEYCTL_JOIN_SESSION_KEYRING | 1 |
Podłącz lub zacznij sesyjny zbiór kluczy |
KEYCTL_UPDATE | 2 |
Zaktualizuj klucz |
KEYCTL_REVOKE | 3 |
Unieważnij klucz |
KEYCTL_CHOWN | 4 |
Zmień właściciela klucza |
KEYCTL_SETPERM | 5 |
Ustaw uprawnienia do klucza |
KEYCTL_DESCRIBE | 6 |
Opisz klucz |
KEYCTL_CLEAR | 7 |
Wyczyść zawartość zbioru kluczy |
KEYCTL_LINK | 8 |
Połącz klucz ze zbiorem kluczy |
KEYCTL_UNLINK | 9 |
Odłącz klucz od zbioru kluczy |
KEYCTL_SEARCH | 10 |
Znajdź klucz w zbiorze kluczy |
KEYCTL_READ | 11 |
Odczytaj zawartość klucza lub zbioru kluczy |
KEYCTL_INSTANTIATE | 12 |
Stwórz częściowo skonstruowany klucz |
KEYCTL_NEGATE | 13 |
Zaneguj częściowo skonstruowany klucz |
KEYCTL_SET_REQKEY_KEYRING | 14 |
Ustaw domyslny zbiór kluczy dla zapytań o klucz |
KEYCTL_SET_TIMEOUT | 15 |
Ustaw czas trwania klucza |
KEYCTL_ASSUME_AUTHORITY | 16 |
Załóż uprawnienie do stworzenia klucza |
KEYCTL_GET_SECURITY | 17 |
Pobierz etykietę bezpieczeństwa klucza |
nazwa | wartość | znaczenie |
---|---|---|
KEY_SPEC_THREAD_KEYRING | -1 |
Zbiór kluczy specyficzny dla wątku |
KEY_SPEC_PROCESS_KEYRING | -2 |
Zbiór kluczy specyficzny dla procesu |
KEY_SPEC_SESSION_KEYRING | -3 |
Zbiór kluczy specyficzny dla sesji |
KEY_SPEC_USER_KEYRING | -4 |
Zbiór kluczy specyficzny dla użytkownika |
KEY_SPEC_USER_SESSION_KEYRING | -5 |
Zbiór kluczy specyficzny dla użytkownika i sesji |
KEY_SPEC_GROUP_KEYRING | -6 |
Zbiór kluczy specyficzny dla grupy |
KEY_SPEC_REQKEY_AUTH_KEY | -7 |
ID klucza dla przewidywanego klucza uwierzytelnienia dla request_key |
KEY_SPEC_REQUESTOR_KEYRING | -8 |
ID klucza dla zbioru docelowego dla request_key |
Struktura kexec_segment (funkcja 283) z man 2 kexec_load:
struct kexec_segment { void *buf; /* bufor w przestrzeni użytkownika */ size_t bufsz; /* długość bufora w przestrzeni użytkownika */ void *mem; /* fizyczny adres jądra */ size_t memsz; /* długość fizycznego adresu */ };
nazwa | wartość | znaczenie |
---|---|---|
KEXEC_ON_CRASH | 0x00000001 |
Uruchom nowe jądro po awarii systemu |
KEXEC_PRESERVE_CONTEXT | 0x00000002 |
Zachowaj stan oprogramowania i sprzętu przed uruchomieniem nowego jądra |
KEXEC_ARCH_DEFAULT | ( 0 << 16) |
Architektura nowego jądra to architektura domyślna |
KEXEC_ARCH_386 | ( 3 << 16) |
Architektura nowego jądra to i386 |
KEXEC_ARCH_X86_64 | (62 << 16) |
Architektura nowego jądra to x86-64 (AMD64) |
KEXEC_ARCH_PPC | (20 << 16) |
Architektura nowego jądra to PowerPC |
KEXEC_ARCH_PPC64 | (21 << 16) |
Architektura nowego jądra to PowerPC64 |
KEXEC_ARCH_IA_64 | (50 << 16) |
Architektura nowego jądra to IA-64 |
KEXEC_ARCH_ARM | (40 << 16) |
Architektura nowego jądra to ARM |
KEXEC_ARCH_S390 | (22 << 16) |
Architektura nowego jądra to S390 |
KEXEC_ARCH_SH | (42 << 16) |
Architektura nowego jądra to SH |
KEXEC_ARCH_MIPS | (10 << 16) |
Architektura nowego jądra to MIPS |
KEXEC_ARCH_MIPS_LE. | ( 8 << 16) |
Architektura nowego jądra to MIPS LE |
nazwa | wartość | znaczenie |
---|---|---|
CLONE_NEWIPC | 0x08000000 |
deskryptor musi odnosić się do przestrzeni nazw IPC |
CLONE_NEWNET | 0x40000000 |
deskryptor musi odnosić się do sieciowej przestrzeni nazw |
CLONE_NEWUTS | 0x04000000 |
deskryptor musi odnosić się do przestrzeni nazw UTS |
Struktura mmsghdr (funkcje 337 i 345) z man 2 recvmmsg:
struct mmsghdr { struct msghdr msg_hdr; /* Nagłówek wiadomości */ unsigned int msg_len; /* Liczba otrzymanych bajtów nagłówka */ };Struktura msghdr została opisana wcześniej.
nazwa | wartość | znaczenie |
---|---|---|
MODULE_INIT_IGNORE_MODVERSIONS | 1 |
Ignoruj hashe wersji symboli |
MODULE_INIT_IGNORE_VERMAGIC | 2 |
Ignoruj identyfikator zgodnego jądra w module ("vermagic") |
Struktura sched_attr (funkcje 351 i 352) z man 2 sched_setattr:
struct sched_attr { u32 size; /* Rozmiar tej struktury */ u32 sched_policy; /* Polityka (SCHED_OTHER = 0, SCHED_BATCH = 3, SCHED_IDLE = 5, SCHED_FIFO = 1, SCHED_RR = 2, SCHED_DEADLINE = 6) */ u64 sched_flags; /* Flagi = 0 lub SCHED_FLAG_RESET_ON_FORK = 0x40000000 */ s32 sched_nice; /* Wartość priorytetu (SCHED_OTHER, SCHED_BATCH) */ u32 sched_priority; /* Statyczny priorytet (SCHED_FIFO, SCHED_RR) */ /* Pozostałe pola są dla SCHED_DEADLINE */ u64 sched_runtime; u64 sched_deadline; u64 sched_period; };
nazwa | wartość | znaczenie |
---|---|---|
RENAME_EXCHANGE | 1 << 1 |
Atomowo wymień 2 istniejące obiekty między sobą |
RENAME_NOREPLACE | 1 << 0 |
Nie nadpisuj ścieżki docelowej (błąd, gdy już istnieje) |
RENAME_WHITEOUT | 1 << 2 |
Utwórz obiekt nadpisujący (whiteout) |
Struktura sock_fprog (funkcja 354) z man 2 seccomp:
struct sock_fprog { unsigned short len; /* Liczba instrukcji BPF */ struct sock_filter *filter; /* Adres tablicy instrukcji BPF */ }; struct sock_filter { __u16 code; /* Kod filtru */ __u8 jt; /* Skok, gdy prawda */ __u8 jf; /* Skok, gdy fałsz */ __u32 k; /* Pole dowolnego użytku */ }; struct seccomp_data { int nr; /* Numer funkcji systemowej */ __u32 arch; /* wartość AUDIT_ARCH_* z <linux/audit.h> */ __u64 instruction_pointer; /* wskaźnik instrukcji CPU - IP/EIP/RIP */ __u64 args[6]; /* Do 6 parametrów funkcji systemowej */ };
nazwa | wartość | znaczenie |
---|---|---|
GRND_RANDOM | 0x0002 |
Używaj /dev/random zamiast /dev/urandom |
GRND_NONBLOCK | 0x0001 |
Nie czekaj w razie braku danych |
nazwa | wartość | znaczenie |
---|---|---|
MFD_CLOEXEC | 0x0001 |
Ustaw FD_CLOEXEC na nowym deskryptorze |
MFD_ALLOW_SEALING | 0x0002 |
Umożliw operacje pieczętowania pliku |
nazwa | wartość | znaczenie |
---|---|---|
BPF_MAP_CREATE | 0 |
Utwórz mapę i zwróć jej deskryptor |
BPF_MAP_LOOKUP_ELEM | 1 |
Wyszukaj element w mapie i zwróć jego wartość |
BPF_MAP_UPDATE_ELEM | 2 |
Utwórz lub zmień element w mapie |
BPF_MAP_DELETE_ELEM | 3 |
Wyszukaj element w mapie i usuń go |
BPF_MAP_GET_NEXT_KEY | 4 |
Wyszukaj element w mapie i pobierz kolejny klucz |
BPF_PROG_LOAD | 5 |
Sprawdź i załaduj program |
Struktura bpf_attr (funkcja 357) z man 2 bpf:
union bpf_attr { struct { /* Używane w BPF_MAP_CREATE */ __u32 map_type; __u32 key_size; /* rozmiar klucza w bajtach */ __u32 value_size; /* rozmiar wartości w bajtach */ __u32 max_entries; /* maksymalna liczba wpisów w mapie */ }; struct { /* Używane w BPF_MAP_*_ELEM i BPF_MAP_GET_NEXT_KEY */ __u32 map_fd; __aligned_u64 key; union { __aligned_u64 value; __aligned_u64 next_key; }; __u64 flags; }; struct { /* Używane w BPF_PROG_LOAD */ __u32 prog_type; __u32 insn_cnt; __aligned_u64 insns; /* 'const struct bpf_insn *' */ __aligned_u64 license; /* 'const char *' */ __u32 log_level; /* Poziom logowania w weryfikacji */ __u32 log_size; /* rozmiar bufora użytkownika */ __aligned_u64 log_buf; /* bufor użytkownika 'char *' */ __u32 kern_version; /* sprawdzane, gdy prog_type=kprobe (od Linux 4.1) */ }; } __attribute__((aligned(8)));
nazwa | wartość | znaczenie |
---|---|---|
AT_EMPTY_PATH | 0x1000 |
Jeśli ścieżka jest pusta, uruchom plik wskazany jako katalog |
AT_SYMLINK_NOFOLLOW | 0x100 |
Nie podążaj za dowiązaniami symbolicznymi |
nazwa | wartość | znaczenie |
---|---|---|
MEMBARRIER_CMD_QUERY | 0 |
Pobierz listę obsługiwanych komend |
MEMBARRIER_CMD_SHARED | 1 |
Zsynchronizuj wątki - upewnij się, że wszystkie przeszły
przez punkt, w którym wszystkie odczyty i zapisy pamięci są zgodne z kolejnością ich wykonania |
nazwa | wartość | znaczenie |
---|---|---|
MLOCK_ONFAULT | 0x01 |
Zablokuj strony pamięci aktualnie rezydentne i zaznacz cały
obszar do zablokowania stron po ich załadowaniu po błędzie stronicowania |
nazwa | wartość | znaczenie |
---|---|---|
RWF_HIPRI | 0x00000001 |
Operacja o wysokim priorytecie |
nazwa | wartość | znaczenie |
---|---|---|
FAN_CLASS_PRE_CONTENT | 0x00000008 |
Zdarzenia przed dostępem do obiektu |
FAN_CLASS_CONTENT | 0x00000004 |
Zdarzenia po dostępie do obiektu |
FAN_CLASS_NOTIF | 0x00000000 |
Zdarzenia w dowolnym momencie, zwiazane z dostępem do obiektu |
FAN_CLOEXEC | 0x00000001 |
Ustaw FD_CLOEXEC na zwróconym deskryptorze |
FAN_NONBLOCK | 0x00000002 |
Wyłącz blokowanie na zwróconym deskryptorze |
FAN_UNLIMITED_QUEUE | 0x00000010 |
Wyłącz limit komunikatów w kolejce |
FAN_UNLIMITED_MARKS | 0x00000020 |
Wyłącz limit znaczników w kolejce |
nazwa | wartość | znaczenie |
---|---|---|
FAN_MARK_ADD | 0x00000001 |
Dodaj zdarzenia do maski |
FAN_MARK_REMOVE | 0x00000002 |
Usuń zdarzenia z maski |
FAN_MARK_FLUSH | 0x00000080 |
Usuń z maski zdarzenia zwiazane lub niezwiazane z montowaniem (zależy od innych parametrów) |
FAN_MARK_DONT_FOLLOW | 0x00000004 |
Nie podążaj za dowiązaniami symbolicznymi |
FAN_MARK_ONLYDIR | 0x00000008 |
Dodaj zdarzenia tylko dla katalogu |
FAN_MARK_MOUNT | 0x00000010 |
Dodaj punkt montowania i wszystkie obiekty w środku do obserwacji |
FAN_MARK_IGNORED_MASK | 0x00000020 |
Dodaj lub usuń zdarzenia z listy ignorowanych |
FAN_MARK_IGNORED_SURV_MODIFY | 0x00000040 |
Lista ignorowanych ma być zachowana, gdy następuje modyfikacja innych |
nazwa | wartość | znaczenie |
---|---|---|
FAN_ACCESS | 0x00000001 |
Stwórz zdarzenie, gdy następuje dostęp do obiektu |
FAN_MODIFY | 0x00000002 |
Stwórz zdarzenie, gdy plik zostaje zmieniony (zapisany) |
FAN_CLOSE_WRITE | 0x00000008 |
Stwórz zdarzenie, gdy zapisywalny plik zostaje zamknięty |
FAN_CLOSE_NOWRITE | 0x00000010 |
Stwórz zdarzenie, gdy plik otwarty tylko do odczytu lub katalog zostaje zamknięty |
FAN_OPEN | 0x00000020 |
Stwórz zdarzenie, gdy plik lub katalog zostaje otwarty |
FAN_OPEN_PERM | 0x00010000 |
Stwórz zdarzenie, gdy pojawia się żądanie otwarcia do pliku lub katalogu |
FAN_ACCESS_PERM | 0x00020000 |
Stwórz zdarzenie, gdy pojawia się żądanie czytania pliku lub katalogu |
FAN_ONDIR | 0x40000000 |
Stwórz odpowiednie ze zdarzeń dla katalogu |
FAN_EVENT_ON_CHILD | 0x08000000 |
Stwórz zdarzenie stworzenia obiektów bezpośrednio w danym katalogu |
FAN_CLOSE | FAN_CLOSE_WRITE + FAN_CLOSE_NOWRITE |
Stwórz zdarzenie, gdy obiekt otwarty w dowolnym trybie zostaje zamknięty |
Struktura file_handle (funkcja 341) z man 2 name_to_handle_at:
struct file_handle { unsigned int handle_bytes; /* rozmiar f_handle */ int handle_type; /* typ uchwytu */ unsigned char f_handle[0]; /* identyfikator pliku */ };
nazwa | wartość | znaczenie |
---|---|---|
KCMP_FILE | 0 |
Porównaj podane deskryptory plików |
KCMP_FILES | 2 |
Porównaj wszystkie deskryptory plików w procesach |
KCMP_FS | 3 |
Porównaj informacje o systemie plików |
KCMP_IO | 5 |
Porównaj kontekst I/O |
KCMP_SIGHAND | 4 |
Porównaj dyspozycje obsługi sygnałów |
KCMP_SYSVSEM | 6 |
Porównaj listy operacji cofania w semaforach |
KCMP_VM | 1 |
Porównaj przestrzeń adresową |
nazwa | wartość | znaczenie |
---|---|---|
KEXEC_FILE_UNLOAD | 0x00000001 |
Odłącz aktulanie działające jądro |
KEXEC_FILE_ON_CRASH | 0x00000002 |
Załaduj nowe jądro jako awaryjne, gdy w pierwszym wystąpi błąd |
KEXEC_FILE_NO_INITRAMFS | 0x00000004 |
Ładowanie initrd jest opcjonalne |