小编Gau*_*rav的帖子

Linux proc模块中的虚拟地址到物理地址转换

我正在尝试在Linux上创建自己的proc节点"os_pagemap"(使用odroid)

该节点的目标是打印所有物理内存页面的信息.(sudo cat/proc/os_pagemap)

像这样 :

[PHY] Virt 483252 Phy 266908 VMA 0 PID 5773 PNAME com.sec.android.app.keyboard
[PHY] Virt 483253 Phy 266909 VMA 0 PID 5773 PNAME com.sec.android.app.keyboard
[PHY] Virt 483254 Phy 266910 VMA 0 PID 5773 PNAME com.sec.android.app.keyboard
[PHY] Virt 398391 Phy 266920 VMA /dev/ashmem/dalvik-bitmap-1 PID 5773 PNAME com.sec.android.app.keyboard
Run Code Online (Sandbox Code Playgroud)

其中VMA是指VMA名称

为了实现目标,我的设计是这样的:

1. read_lock(&tasklock)
2. for_each_process(p) => get pids
3. read_unlock(&tasklock)
4. Loop for each pid
   1)task = get_pid_task(pid)
   2)if task==NULL => skip
   3)mm=task->mm
   4)down_read(&mm->mmap_sem)
   5)Loop for each vma in mm …
Run Code Online (Sandbox Code Playgroud)

c memory-management kernel-module linux-kernel

5
推荐指数
0
解决办法
656
查看次数