Re: Viewing page tables and some other questions regarding the MMU

Christoffer Dall <[email protected]>
Newsgroups gmane.linux.ports.arm.general
Message-ID <[email protected]>
On Thu, Apr 1, 2010 at 9:03 AM, Leo Barnes <[email protected]> wrote:
>> The MMU does not have to be disabled. To manage the page tables, the
>> tables themselves must be mapped at some virtual address. In ARM
>> Linux, this is already done, and you can access the page table entry
>> for addr by doing something like this:
>>
>>        pgd_t *pgd;
>>        pud_t *pud;
>>        pmd_t *pmd;
>>        pte_t *pte;
>>
>>        pgd = pgd_offset(mm, addr);
>>        pud = pud_alloc(mm, pgd, addr);
>>        if (!pud) {
>>                printk(KERN_ERR "Could not alloc pud!\n");
>>                return NULL;
>>        }
>>        pmd = pmd_alloc(mm, pud, addr);
>>        if (!pmd) {
>>                printk(KERN_ERR "Could not alloc pmd!\n");
>>                return NULL;
>>        }
>>
>>        pte = pte_alloc_map(mm, pmd, addr);
>>        if (!pte) {
>>                printk(KERN_ERR "Could not alloc pte!\n");
>>                return NULL;
>>        }
>>
>
> Thanks, this looks useful. Which headers does this code rely on? I
> assume linux/mm.h, but anything else?

Try grepping for definitions or use cscope or ctags and you'll quickly
find out which files you need when you try to compile.

> Is the mm argument for the
> functions used a global variable or something I have to create (and if
> so, how to create it? the mm_struct is pretty damn large and filled
> with fields that I know very little about)?

For the current process you can do current->mm. There's a pointer from
each task_struct to that thread's mm_struct.

I recommend you look at a book like Understanding the Linux Kernel or
similar for these general kernel coding questions and I don't think
they're relevant for an ARM-linux mailing list.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.