2010-04-04 5 views

risposta

12

La lista "ufficiale" è a Darwin page di Apple. In particolare, vedere il file syscalls.master nella distribuzione XNU. (Se qualcosa ti aspetti che manchi, prova una nuova versione XNU.)

La parte BSD delle chiamate di sistema proviene da BSD, ma ci sono chiamate mach che seguono convenzioni abbastanza diverse.

Avrete sicuramente voglia di leggere il libro del kernel OS X di Amit Singh, vedere the book's website. Viene riscritto per 10.4 e principalmente per PPC, ma sono comunque le maggiori informazioni dettagliate che è possibile ottenere sul kernel.

8

Le chiamate di sistema di XNU seguono effettivamente il modello BSD/POSIX, ma sono un sottoinsieme: ci sono alcune chiamate aggiuntive proprietarie di Apple - ad esempio, stack_snapshot (# 365), iopolicy (322), proc_info (336) e altri. Apple mantiene quelli non documentati, ma è possibile trovare la loro fonte in XNU. È possibile chiamare le chiamate di sistema non documentate in modo esplicito (utilizzando la macro di chiamata sys e specificando la chiamata # come primo argomento), ma alcune (ad es. Proc_info) sono incluse nelle librerie di Darwin (es. Libproc, che fa parte di libSystem)

syscalls .master genera il file /usr/include/sys/syscall.h, che fornisce anche i nomi delle chiamate di sistema (ma non i prototipi). Il libro di Singh descrive alcune chiamate di sistema, ma è ampiamente obsoleto, dal momento che Tiger aveva meno delle 439 (in iOS6: 443) chiamate che XNU ha oggi. Un libro più recente può essere trovato in http://www.amazon.com/Mac-OS-iOS-Internals-Apples/dp/1118057651, e la sua appendice documenta in realtà tutte le chiamate di sistema (e Mach Trap), in dettaglio.