KernelNewbies:

Dennis Aberilla

Email: MailTo(denzzzhome@yahoo.com)

About Me

Most people say, "a person is 10000 times more interested in themselves than you" so here are some things about me.

I am a firmware engineer doing embedded Linux stuff on ARM architecture. I have particular interest in kernel hacking and I've been on and off playing with the kernel code and drivers since 2002. For now, my short-term goal is to become an expert, or at least have an intermediate level of understanding in the Linux Memory Management area.

In the past, I've touched bootup code (from head.S to /bin/init) and developed various device drivers so I'll try to help in any way I can. I so liked the idea of the Open-Source Community and see how everyone helps each other that's why I'm here hoping to be able to lend a hand and also grab one for help.

My Notes

ARM Page Tables

Diagram:

   pgd -> | ...      |
          | ...      |
          | C09FC000 |             | ...      |
          | C09FC008 |    C09FC010 | 00000000 |
          | C09FC010 |    C09FC014 | 00000000 |                                  | ...        |
          | C09FC018 | -> C09FC018 | C0FE1011 | -> (C0FE1011 & PAGE_MASK) + 2048 | PT entry 0 |
          | C09FC020 |    C09FC01C | C0FE1411 |                                  | PT entry 1 |
          | C09FC028 |             | ...      |                                  | PT entry 2 |
          | ...      |                                                           | ...        |


get_user/access_process_vm

get_user(unsigned long val, unsigned long *addr);
access_process_vm(struct task_struct *tsk, unsigned long addr, void *buf, int len, int write);

Basically both functions fetch values from user space to kernel space. The difference, in my experience recently, is that get_user increments by sizeof(int) while access_process_vm increments by bytes. In other words, the following are equivalent with respect to decrementing pc:

    access_process_vm(tsk, pc - 2*sizeof(unsigned int), &word, sizeof(word), 0);
    get_user (word, pc - 2);



CategoryHomepage

KernelNewbies: DennisAberilla (last edited 2006-05-31 08:23:50 by 192)