我想编写一个简单的内核函数,它迭代属于特定进程的所有vm_area_struct
,并将它们中的每一个标记为属于堆。假设我可以在vm_area_struct
中添加一个布尔字段,该字段将为堆页面设置并重置为其他页面。
我调查了mm_struct
,vm_area_struct
和task_struct
......但没有找到任何可以提供帮助的内容。
更新:我猜起来start_brk和brk有关于这个问题吗?
答案 0 :(得分:1)
(我插入我的上一条评论作为答案,因为“评论”中的格式不是很好):
Wrt我的上述评论:相关代码(查找给定PID的VMA)似乎在这里: fs / proc / task_mmu.c 。
而且,确实,“[heap]”由上面的src文件(内核版本3.10.24)中的代码片段标记:
* FS / PROC / task_mmu.c:show_map_vma()*
...
if (vma->vm_start <= mm->brk &&
vma->vm_end >= mm->start_brk) {
name = "[heap]";
goto done; }
...