Список и документация для системных вызовов для ядра XNU в OSX - PullRequest
17 голосов
/ 04 апреля 2010

Я пытаюсь выяснить, как получить список и документацию для системных вызовов, доступных в ядре XNU в OSX. Я немного погуглил, но не смог найти ничего полезного. Как я понимаю, соглашения о вызовах совпадают с BSD, это правильно?

Спасибо

Ответы [ 2 ]

13 голосов
/ 05 апреля 2010

«Официальный» список находится на странице Дарвина в Apple.В частности, смотрите файл syscalls.master в дистрибутиве XNU.(Если чего-то, чего вы ожидаете, не хватает, попробуйте более новую версию XNU.)

Часть системных вызовов BSD происходит от BSD, но есть вызовы mach, которые следуют совершенно другим соглашениям.

Вы определенно захотите прочитать книгу ядра Амит Сингха по OS X, см. веб-сайт книги .Он переписан для 10.4 и, в основном, для PPC, но все еще является самой подробной информацией, которую вы можете получить о ядре.

8 голосов
/ 24 августа 2012

Системные вызовы XNU, действительно, следуют модели BSD / POSIX, но являются подмножеством: существует довольно много дополнительных вызовов, принадлежащих Apple - например, stack_snapshot (# 365), iopolicy (322), proc_info (336 ) и другие. Apple хранит эти документы без документов, но вы можете найти их источник в XNU. Вы можете явно вызывать недокументированные системные вызовы (используя макрос вызова sys и указав в качестве первого аргумента call #), но некоторые (например, proc_info) обертываются библиотеками Darwin (например, libproc, который является частью libSystem)

syscalls.master создает файл /usr/include/sys/syscall.h, который также даст вам имена системных вызовов (но не прототипы). В книге Сингха описаны некоторые системные вызовы, но она сильно устарела, поскольку у Tiger было меньше, чем 439 (в iOS6: 443) вызовов, которые XNU имеет сегодня. Более свежую книгу можно найти в http://www.amazon.com/Mac-OS-iOS-Internals-Apples/dp/1118057651,, а ее приложение фактически подробно описывает все системные вызовы (и ловушки Маха).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...