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.
system-calls
Joey
źródło
źródło
/usr/include/asm
, może brakować jakiegoś pakietu deweloperskiego lub innego. Dla mnie (Fedora 22) jest w jednymkernel-devel
lubkernel-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.Odpowiedzi:
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.
źródło
linux-image-XXX
a nagłówki potrzebne do kompilacji dodatkowych modułów znajdują sięlinux-headers-XXX
.