在 XNU 项目中找到 __proc_info 符号

Locate __proc_info symbol in XNU project

我想弄清楚 VMMAP 进程是如何运行的。

在运行这个带有d​​trace的可执行文件之后,似乎是proc_regionfilename提取虚拟内存中每个部分的地址space的方法。

所以,我深挖了一点,在xnu文件下找到了它的实现
libsyscall/wrappers/libproc/libproc.c

在函数体中我看到主要调用是 proc_pidinfo :

retval = proc_pidinfo(pid, PROC_PIDREGIONPATHINFO, (uint64_t)address, &reginfo, sizeof(struct proc_regionwithpathinfo));

和 proc_pidinfo 依次调用 __proc_info 符号:

int __proc_info(int callnum, int pid, int flavor, uint64_t arg, void * buffer, int buffersize);

但是,在代码中找不到这个符号,我想知道它是如何在预编译、编译、link或实时创建的。

知道在哪里可以找到它,或者它是如何创建的(我还没有尝试编译内核)。

感谢

proc_info 是一个系统调用,所以它的实现在内核中。 10.11.2版本的源代码可以在这里找到:

http://opensource.apple.com/source/xnu/xnu-3248.20.55/bsd/kern/proc_info.c