簡體   English   中英

在內存中查找Process(linux-kernel)頁面

[英]Find page in memory for Process (linux-kernel)

基本上我有一個程序可以找到進程的所有VMA,但我想查看頁面表中該頁面的頁面。 我很難過。 我知道進程的task_struct有一個字段

pgd_t                  *pgd;                /* page global directory */

這只是所有頁面的索引數組嗎?

我在“/mm/memory.c”中找到了這個函數

/*
* Do a quick page-table lookup for a single page.
*/
struct page *follow_page(struct vm_area_struct *vma, unsigned long address,
                    unsigned int flags)

我可以傳遞一個VMA,但我不確定地址和標志應該是什么。 或許這不是我想要的? 有什么建議?

聽起來你想做一個基本的頁面漫步。

給定一個pgd ,可以通過尋找有效的條目迭代pud的,然后通過迭代pud S和等“。

一種方法是使用以下方法:

// iterate through your address space
for (i = 0; i < PAGE_SIZE / sizeof(*pud); i++) {
    pud = pud_offset(pgd, PUD_SIZE * i);
    // Check if the pud is valid
    if (pud_none(*pud) || pud_bad(*pud))
        continue;
    // And so on
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM