0

从我的 linux 内核(vmlinux.lds)链接器文件中,我知道 _PAGE_OFFSET 的值为 0xc0000000 但由于某些原因,我想更改此值,但无法找出该值来自哪个宏。

所以我想 _PAGE_OFFSET 的值来自哪个文件。

4

2 回答 2

4

“下划线”前缀的那些是特定于架构的,并且只存在于几个架构中。它们位于 arch 目录中,例如:

arch/x86/include/asm/page_32_types.h

一般来说,您不应该使用它们 - 并且应该使用更通用的:

PAGE_OFFSET

它在所有架构类型中定义,在:

include/asm-generic/page.h
于 2013-03-20T14:42:58.513 回答
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自动添加的。

于 2019-03-17T03:45:40.750 回答