如何在linux进程中找到属于堆的页面?

时间:2014-03-09 20:51:24

标签: linux memory-management process linux-kernel linux-device-driver

我想编写一个简单的内核函数,它迭代属于特定进程的所有vm_area_struct,并将它们中的每一个标记为属于堆。假设我可以在vm_area_struct中添加一个布尔字段,该字段将为堆页面设置并重置为其他页面。

我调查了mm_structvm_area_structtask_struct ......但没有找到任何可以提供帮助的内容。

更新:我猜起来start_brk和brk有关于这个问题吗?

1 个答案:

答案 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; } ...