KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
Updated my post... I got below program. It operates on /dev/kmem and /dev/mem . I think I can learn something from the code. But when I run it on my Beagle Board, below result is given: case 1: ( if(1) ) root@omap:/home/ubuntu/tom# ./kmem_mem /boot/System.map-3.0.4-x3 found jiffies at (0xc0870080) c0870080 /dev/kmem read buf = 319317 jiffies=319317 (read from virtual memory) /dev/mem: the offset is 870080 the page size = 4096 mmap: Invalid argument case 2: ( if(0) ) root@omap:/home/ubuntu/tom# ./kmem_mem /boot/System.map-3.0.4-x3 found jiffies at (0xc0870080) c0870080 /dev/kmem read buf = 333631 jiffies=333631 (read from virtual memory) /dev/mem: the offset is 870080 /dev/mem read failed: Bad address jiffies=0 (read from physical memory) And I used below command so that mmap can use NULL as its first parameter. root@omap:/home/ubuntu/tom# echo 0 > /proc/sys/vm/mmap_min_addr root@omap:/home/ubuntu/tom# cat /proc/sys/vm/mmap_min_addr 0 As you can see, read_kmem() works fine but read_mem() doesn't work, and it seems that the 'offset' transferred to it is wrong. But kernel address - PAGE_OFFSET(0xC0000000) = physical address , is it wrong? My questions are: (1) Why "mmap: Invalid argument" in case 1? (2) Why the mmap only maps PAGE_SIZE length space? (3) What's wrong with read_mem ? Can anyone help? Thanks! /* * getjiff.c * * this toolkit shows how to get jiffies value from user space: * 1. find jiffies's address from kernel image. * 2. access virtual address space to get jiffies value. * 3. access physical address sapce to get jiffies value. * * demostrate following techniques: * o get ELF object symbol address by calling nlist() * o access virtual memory space from /dev/kmem * o access virtual memory
Tags (comma-separated)
Save Edits
Cancel