从我的linux内核的链接器文件(vmlinux.lds)我开始知道_PAGE_OFFSET的值是0xc0000000但是由于某些原因我想改变这个值但是找不到这个值来自哪个宏。
所以我希望_PAGE_OFFSET的这个值来自哪个文件。
答案 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 自动添加的。