如何确定我正在构建的内核的 PAGE_OFFSET 值?我正在为 ARM 平台构建内核。
谢谢,vj
我终于找到了 PAGE_OFFSET 的值作为 .config 下定义的值,针对 CONFIG_PAGE_OFFSET=0xC0000000。
以 X86_32 拱门为例。
拱/x86/include/asm/page_types.h :
#define PAGE_OFFSET ((unsigned long)__PAGE_OFFSET)
拱/x86/include/asm/page_32_types.h:
#define __PAGE_OFFSET _AC(CONFIG_PAGE_OFFSET, UL)
拱/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自动添加的。
您可以在编译期间使用 C 预处理器打印该值:
+#define STRING2(x) #x
+#define STRING(x) STRING2(x)
+#pragma message "PAGE_OFFSET = " STRING(PAGE_OFFSET)
这将在运行 make 的控制台中打印该值。
看内核源代码
grep -rn "#define PAGE_OFFSET" arch/arm/*
它发现它是在中定义的,arch/arm/include/asm/memory.h
但这取决于您的内核配置。根据您的配置遵循符号,您将获得价值。
或者您可以使用Linux 内核网络浏览器