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

时间:2010-04-04 15:25:14

标签: macos operating-system system-calls

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

由于

2 个答案:

答案 0 :(得分:13)

“官方”列表位于Apple的Darwin page。具体来说,请参阅XNU分发中的文件syscalls.master。 (如果您缺少某些内容,请尝试使用较新的XNU版本。)

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

你肯定想读Amit Singh的OS X内核书,见the book's website。它被重写为10.4,主要用于PPC,但仍然是你可以在内核上获得的最详细的信息。

答案 1 :(得分: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)。