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 を考えてみましょう。

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 に答える