On virt_to_phys doubts.
mind entropy
mindentropy at gmail.com
Sat Sep 13 04:02:06 EDT 2014
Hi,
I want to know the physical address [just for debugging and info.Not
for DMA etc] of a particular virtual address allocated via kmalloc.
I am running the below code on S3C2440 with 64MB of RAM. The
/proc/meminfo returns
MemTotal: 59164 kB
MemFree: 35884 kB
MemAvailable: 47148 kB
I run the following module for printing the addresses. [This module
is only for test. So excuse if I have cut corners].
------------------------------------------------
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/printk.h>
#include <linux/module.h>
#include <linux/gfp.h>
#include <linux/types.h>
#include <linux/mm.h>
#include <linux/mm_types.h>
#include <linux/slab.h>
static int vm_mem_test_init(void)
{
void *km;
printk(KERN_ALERT "vm mem test init\n");
km = kmalloc(1,GFP_KERNEL);
if(km == NULL) {
printk(KERN_ALERT "Could not kmalloc\n");
return -1;
} else {
printk(KERN_ALERT "Allocated\n");
printk(KERN_ALERT "Virtual addr : %x\n",(unsigned int)km);
printk(KERN_ALERT "Kernel physical addr : 0x%x\n",virt_to_phys(km));
kfree(km);
}
return 0;
}
The output for the following is:
Virtual addr : c2c080e0
Kernel physical addr : 0x32c080e0
-----------------------------------------------------------
The kernel physical address is wrong as I only have 64MB. Should I be
doing a kernel page table walk to get the associated physical address?
Thanks
Gautam.
More information about the Kernelnewbies
mailing list