您的位置:首页 > 其它

virtual memory layout and how to get it by the correspoinding functuon

2013-10-28 09:56 666 查看
/****************************************************************************/

Virtual kernel memory layout:

vector : 0xffff0000 - 0xffff1000 ( 4 kB)

fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)

vmalloc : 0xf0000000 - 0xff000000 ( 240 MB)

lowmem : 0xc0000000 - 0xef800000 ( 760 MB)

pkmap : 0xbfe00000 - 0xc0000000 ( 2 MB)

modules : 0xbf000000 - 0xbfe00000 ( 14 MB)

.text : 0xc0008000 - 0xc0699000 (6724 kB)

.init : 0xc0699000 - 0xc06c3780 ( 170 kB)

.data : 0xc06c4000 - 0xc070cc80 ( 292 kB)

.bss : 0xc070cca4 - 0xc0934698 (2207 kB)

/****************************************************************************/

printk(KERN_NOTICE "Virtual kernel memory layout:\n"

" vector : 0x%08lx - 0x%08lx (%4ld kB)\n"

" fixmap : 0x%08lx - 0x%08lx (%4ld kB)\n"

" vmalloc : 0x%08lx - 0x%08lx (%4ld MB)\n"

" lowmem : 0x%08lx - 0x%08lx (%4ld MB)\n"

" pkmap : 0x%08lx - 0x%08lx (%4ld MB)\n"

" modules : 0x%08lx - 0x%08lx (%4ld MB)\n"

" .text : 0x%p" " - 0x%p" " (%4d kB)\n"

" .init : 0x%p" " - 0x%p" " (%4d kB)\n"

" .data : 0x%p" " - 0x%p" " (%4d kB)\n"

" .bss : 0x%p" " - 0x%p" " (%4d kB)\n",

MLK(UL(CONFIG_VECTORS_BASE), UL(CONFIG_VECTORS_BASE) +

(PAGE_SIZE)),

MLK(FIXADDR_START, FIXADDR_TOP),

MLM(VMALLOC_START, VMALLOC_END),

MLM(PAGE_OFFSET, (unsigned long)high_memory),

MLM(PKMAP_BASE, (PKMAP_BASE) + (LAST_PKMAP) *

(PAGE_SIZE)),

MLM(MODULES_VADDR, MODULES_END),

MLK_ROUNDUP(_text, _etext),

MLK_ROUNDUP(__init_begin, __init_end),

MLK_ROUNDUP(_sdata, _edata),

MLK_ROUNDUP(__bss_start, __bss_stop));

#define CONFIG_VECTORS_BASE 0xffff0000

#define FIXADDR_START 0xfff00000UL

#define FIXADDR_TOP 0xfffe0000UL

#define FIXADDR_SIZE (FIXADDR_TOP - FIXADDR_START)

#define VMALLOC_OFFSET (8*1024*1024)

#define VMALLOC_START (((unsigned long)high_memory + VMALLOC_OFFSET) & ~(VMALLOC_OFFSET-1))

#define VMALLOC_END 0xff000000UL

MLM(PAGE_OFFSET, (unsigned long)high_memory)

#define PKMAP_BASE (PAGE_OFFSET - PMD_SIZE) /*2M*/

#define LAST_PKMAP PTRS_PER_PTE/*512*/

#define LAST_PKMAP_MASK (LAST_PKMAP - 1)

#define PKMAP_NR(virt) (((virt) - PKMAP_BASE) >> PAGE_SHIFT)

#define PKMAP_ADDR(nr) (PKMAP_BASE + ((nr) << PAGE_SHIFT))

#define MODULES_VADDR (PAGE_OFFSET - 16*1024*1024)

#define MODULES_END (PAGE_OFFSET - PMD_SIZE)

how to get the corresponding address

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐