I am trying some experiments involving the modification of the
permissions on pages but I can't seem to get a valid pte in the first
place. I wrote a little driver that has the following code in its init
routine.
void init(){
void * memory;
pgd_t * pgd;
pud_t * pud;
pmd_t * pmd;
pte_t * pte;
memory = kmalloc(10, GFP_KERNEL);
pgd = pgd_offset_k((unsigned long)memory);
pud = pud_offset(pgd, (unsigned long) memory);
pmd = pmd_offset(pud, (unsigned long) memory);
pte = pte_offset_kernel(pmd, (unsigned long) memory);
printk("pgd is %p\n", pgd);
printk("pud is %p\n", pud);
printk("pmd is %p\n", pmd);
printk("pte is %p\n", pte);
printk("memory is %p. page is %p\n", memory, pte_val(*pte));
}
And I see output like
pgd is 081fa584
pud is 081fa584
pmd is 081fa584
pte is 08048e8c
memory is 087a3750. page is 00000000
I tried this with an x86 build in VirtualBox with basically the same
results, pte_val(*pte) was 0. Why is this?
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
User-mode-linux-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-user