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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值