PTE 中有一些位可供程序员使用。 比如linux内核中定义了如下宏
// arch/x86/include/asm/pgtable_types.h
#define _PAGE_BIT_SOFTW1 9 /* available for programmer */
#define _PAGE_BIT_SOFTW2 10 /* " */
#define _PAGE_BIT_SOFTW3 11 /* " */
#define _PAGE_BIT_SOFTW4 58 /* available for programmer */
不过,第9、11、58位似乎被内核中的某些代码使用了。 我禁用了一些配置和宏,如下所示,以便代码不使用这些位。
// arch/x86/include/asm/pgtable_types.h
#define __HAVE_ARCH_PTE_SPECIAL
#undef __HAVE_ARCH_PTE_SPECIAL // This is added by me.
// arch/Kconfig
#config HAVE_ARCH_SOFT_DIRTY
# bool
禁用它们后,我编译内核并收到内核错误消息。
ld:./arch/x86/kernel/vmlinux.lds:506: syntax error
Makefile:983: recipe for target 'vmlinux' failed
make: *** [vmlinux] Error 1
我想使用这些位。 如何禁用使用这些位的代码?
最佳答案
内核不使用_PAGE_BIT_SOFTW2
。
_PAGE_BIT_SOFTW3
用作脏位。您可以使用 CONFIG_MEM_SOFT_DIRTY 禁用代码.
据我所知,没有简单的方法可以阻止内核使用 _PAGE_BIT_SOFTW1
或 _PAGE_BIT_SOFTW4
。
请注意,同样在 4 级分页中,所有页表条目的第 52-57 位也可供程序员使用。 Linux 似乎没有使用它们。
关于linux - 如何使用_PAGE_BIT_SOFTW1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50102068/