Jak znaleźć numery wywołań systemowych?

1

Czy numery wywołań systemowych dla każdej maszyny są inne? Czy to zależy od procesora, to znaczy, czy będzie różnica dla i586 i i386?

Jeśli różnią się one dla każdej maszyny, jak możesz znaleźć numery swojej maszyny?

Jednym wspólnym miejscem jest / usr / include / asm *, ale ten folder nie istnieje.

Joey
źródło
Jeśli brakuje /usr/include/asm, może brakować jakiegoś pakietu deweloperskiego lub innego. Dla mnie (Fedora 22) jest w jednym kernel-devellub kernel-headers, a plik jest /usr/include/asm/unistd_64.h. Prawdopodobnie ten sam plik znajduje się gdzieś w drzewie źródeł jądra, jeśli spojrzysz.
Tom Hunt

Odpowiedzi:

-2

W większości systemów operacyjnych liczby są podane /usr/include/sys/syscall.h

Zwykle możesz zadzwonić syscall(number, rest of parameters).

Należy pamiętać, że niektórych „syscall” może nie być w syscalles. H, ponieważ kilka interfejsów syscall jest zaimplementowanych przez pojedyncze syscall, który korzysta z pod-numeru do wybierania podczas połączenia z grupy połączeń.

Numery syscall są ważne tylko dla konkretnej wersji określonego systemu operacyjnego.

W systemie Solaris nie ma stabilnego interfejsu syscall, ale stabilny interfejs powyżej libc. Jest to w pełni zgodne z POSIX, ponieważ POSIX celowo nie rozróżnia między syscallami a funkcjami bibliotecznymi.

schily
źródło
Problem polega na tym, że w ogóle nie ma folderu dołączanego. Czy liczby dla każdej maszyny i586 są takie same? Czy jest jakiś zasób dla i586 wymieniający wszystkie liczby?
Joey
1
@Joey Liczba wywołań systemowych zależy od wersji jądra i opcji kompilacji. Jeśli nagłówków nie ma, zainstaluj je.
Gilles
@Gilles Jak je zainstalować?
Joey,
Opcje kompilacji to relikt z lat 80., nowoczesny system operacyjny konfiguruje się automatycznie w czasie wykonywania i automatycznie ładuje wszystkie wymagane moduły, które są dostępne w ścieżce wyszukiwania jądra.
schily,
1
@Joey Z menedżerem pakietów twojej dystrybucji. Na przykład w Ubuntu jądra są dostarczane przez pakiety, linux-image-XXXa nagłówki potrzebne do kompilacji dodatkowych modułów znajdują się linux-headers-XXX.
Gilles,