从我的 linux 内核(vmlinux.lds)链接器文件中,我知道 _PAGE_OFFSET 的值为 0xc0000000 但由于某些原因,我想更改此值,但无法找出该值来自哪个宏。
所以我想 _PAGE_OFFSET 的值来自哪个文件。
从我的 linux 内核(vmlinux.lds)链接器文件中,我知道 _PAGE_OFFSET 的值为 0xc0000000 但由于某些原因,我想更改此值,但无法找出该值来自哪个宏。
所以我想 _PAGE_OFFSET 的值来自哪个文件。
“下划线”前缀的那些是特定于架构的,并且只存在于几个架构中。它们位于 arch 目录中,例如:
arch/x86/include/asm/page_32_types.h
一般来说,您不应该使用它们 - 并且应该使用更通用的:
PAGE_OFFSET
它在所有架构类型中定义,在:
include/asm-generic/page.h
以 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自动添加的。