2010-04-04 8 views

Odpowiedz

12

"Oficjalna" lista jest Darwin page w Apple. W szczególności zobacz plik syscalls.master w dystrybucji XNU. (Jeśli czegoś, czego oczekujesz, brakuje, spróbuj nowszej wersji XNU.)

Część BSD wywołań systemowych pochodzi z BSD, ale są wywołania macha, które wykonują zupełnie inne konwencje.

Zdecydowanie zechcesz przeczytać książkę o jądrze OS X Amita Singha, zobacz: the book's website. Został przepisany dla wersji 10.4 i głównie dla PPC, ale wciąż jest najdokładniejszą szczegółową informacją, jaką można uzyskać na temat jądra.

8

Wywołania systemowe XNU są rzeczywiście zgodne z modelem BSD/POSIX, ale są podzbiorem: Istnieje sporo dodatkowych połączeń zastrzeżonych dla Apple - na przykład stack_snapshot (# 365), iopolicy (322), proc_info (336) i inne. Apple przechowuje te nieudokumentowane, ale możesz znaleźć ich źródło w XNU. Możesz wywoływać nieudokumentowane wywołania systemowe jawnie (za pomocą makra wywołania sys i określając wywołanie # jako pierwszy argument), ale niektóre (np proc_info) są pakowane przez biblioteki Darwina (np. Libproc, który jest częścią libSystem)

syscalls .master generuje plik /usr/include/sys/syscall.h, który również podaje nazwy wywołań systemowych (ale nie prototypy). Książka Singha opisuje niektóre wywołania sys, ale jest bardzo przestarzała, ponieważ Tiger miał mniej niż 439 (w iOS6: 443) połączeń XNU ma dziś. Najnowszą książkę można znaleźć w http://www.amazon.com/Mac-OS-iOS-Internals-Apples/dp/1118057651, a jej dodatek właściwie dokumentuje wszystkie wywołania systemowe (i Mach Pułapki) w szczegółach.