作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想弄清楚 VMMAP 进程是如何运作的。
用 dtrace 运行这个可执行文件后,似乎是方法 proc_regionfilename 提取了虚拟内存中每个部分的地址空间。
所以,我深挖了一点,在xnu文件下找到了它的实现
libsyscall/wrappers/libproc/libproc.c
在函数体中我看到主要调用是 proc_pidinfo :
retval = proc_pidinfo(pid, PROC_PIDREGIONPATHINFO, (uint64_t)address, ®info, sizeof(struct proc_regionwithpathinfo));
proc_pidinfo 依次调用 __proc_info 符号:
int __proc_info(int callnum, int pid, int flavor, uint64_t arg, void * buffer, int buffersize);
但是,在代码中找不到这个符号,我想知道它是如何在预编译、编译、链接或实时过程中创建的。
知道在哪里可以找到它,或者它是如何创建的(我还没有尝试编译内核)。
谢谢
最佳答案
proc_info
是一个系统调用,所以它的实现是在内核中。 10.11.2 版本的源代码可以在这里找到:
http://opensource.apple.com/source/xnu/xnu-3248.20.55/bsd/kern/proc_info.c
关于c - 在 XNU 项目中找到 __proc_info 符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35549332/
我想弄清楚 VMMAP 进程是如何运作的。 用 dtrace 运行这个可执行文件后,似乎是方法 proc_regionfilename 提取了虚拟内存中每个部分的地址空间。 所以,我深挖了一点,在xn
我是一名优秀的程序员,十分优秀!