其中_LAGE_OFFSET值在Linux内核源码中定义

时间:2013-03-20 14:35:51

标签: linux linux-kernel bootstrapper

从我的linux内核的链接器文件(vmlinux.lds)我开始知道_PAGE_OFFSET的值是0xc0000000但是由于某些原因我想改变这个值但是找不到这个值来自哪个宏。

所以我希望_PAGE_OFFSET的这个值来自哪个文件。

2 个答案:

答案 0 :(得分:4)

“下划线” - 前缀是特定于体系结构的,并且仅存在于几个体系结构中。它们位于arch目录中,例如:

arch/x86/include/asm/page_32_types.h

一般情况下,您不应该使用它们 - 并且应该使用更通用的:

PAGE_OFFSET

在所有架构类型中定义的内容:

include/asm-generic/page.h

答案 1 :(得分:0)

以x86拱门为例。

arch/x86/include/asm/page_types.h :
#define PAGE_OFFSET     ((unsigned long)__PAGE_OFFSET)

arch/x86/include/asm/page_32_types.h :
#define __PAGE_OFFSET       _AC(CONFIG_PAGE_OFFSET, UL)

arch/x86/Kconfig:

config PAGE_OFFSET
    hex
    default 0xB0000000 if VMSPLIT_3G_OPT
    default 0x80000000 if VMSPLIT_2G
    default 0x78000000 if VMSPLIT_2G_OPT
    default 0x40000000 if VMSPLIT_1G
    default 0xC0000000
    depends on X86_32

arch / x86 / Kconfig中的PAGE_OFFSET是page_32_types.h中的CONFIG_PAGE_OFFSET。因为前缀'CONFIG_'是 make system 自动添加的。