OSX中XNU内核系统调用的列表和文档

Dan*_*ton 17 macos operating-system system-calls

我正在试图弄清楚如何获取OSX中XNU内核中可用的系统调用的列表和文档.我已经搜索了很多,但一直没有找到任何有用的东西.据我所知,调用约定与BSD匹配,这是正确的吗?

谢谢

Yuj*_*uji 13

"官方"名单位于Apple的Darwin页面.具体来说,请参阅syscalls.masterXNU分发中的文件.(如果缺少预期的东西,请尝试更新的XNU版本.)

系统调用的BSD部分来自BSD,但是马赫调用遵循完全不同的约定.

你一定要阅读Amit Singh的OS X内核书,请参阅本书的网站.它被重写为10.4并且主要用于PPC,但仍然是您可以在内核上获得的最详细信息.


小智 8

XNU的系统调用确实遵循BSD/POSIX模型,但是它是一个子集:Apple专有的其他调用很多 - 例如,stack_snapshot(#365),iopolicy(322),proc_info(336)和其他.Apple保留那些没有文档的内容,但您可以在XNU中找到它们的来源.您可以显式调用未记录的系统调用(通过使用sys调用宏并将调用#指定为第一个参数),但有些(例如proc_info)由Darwin库包装(例如libproc,它是libSystem的一部分)

syscalls.master生成/usr/include/sys/syscall.h文件,该文件还将为您提供系统调用名称(但不是原型).Singh的书描述了一些系统调用,但是已经过时了,因为Tiger的数量少于XNU今天的439(在iOS6:443中).可以在http://www.amazon.com/Mac-OS-iOS-Internals-Apples/dp/1118057651中找到更新的书籍,其附录实际上详细记录了所有系统调用(和Mach Traps).