我正在编写一个内核模块,其中,在一个函数中我需要检查是否通过了
struct page*
映射到ZERO_PAGE
或不。{
我想出了以下代码来检查条件。
foo (struct page *pp, ..) {
if(pp == ZERO_PAGE(0)) {
//say, prefault the page.
}
}
当我尝试编译时,我收到以下警告信息:
WARNING: "phys_base" [<path_to_'.ko'] undefined!
当我尝试insmod&#39; &#39; .ko&#39; ,它给出错误&#34;未知符号&#34;。并打印
&#34;未知符号phys_base&#34;在日志缓冲区中。
我的Makefile:
obj-m :=zero_page.o
KDIR=/lib/modules/`uname -r`/build
all:
make -C $(KDIR) M=`pwd` modules
我正在编写模块的内核版本:
2.6.18-398.el5(rhel 5.11)
我试图找到一些其他的界面&#39;在内核中检查页面是否为ZERO_PAGE,但没有运气
有人可以告诉我如何摆脱这个错误。或任何其他方式来检查这种情况?
注意:我遇到了这个针对同一问题的kernelnewbie thread。包括<asm/pgtable.h>
但没有帮助。
答案 0 :(得分:0)
我能够为此解决一个问题。
浏览一些内核代码后,我发现ZERO_PAGE的address_space ptr为NULL。
因此,修复看起来像这样:
best = BaseClass()
abs = AbstractClass()
abs.start # AttributeError: 'AbstractClass' object has no attribute 'start'
谢谢。