我正在编写一个内核模块,在一个函数内部,我需要检查是否传递了
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”“.ko”时,它会给出错误“未知符号”
。并在日志缓冲区中打印“未知符号 phys_base”。
我的制作文件:
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)
我试图在内核中找到一些其他“接口”来检查页面是否为 ZERO_PAGE,但没有运气。
有人可以告诉我如何摆脱这个错误。或者任何其他方式来检查这种情况?
注意:我遇到了这个 kernelnewbie线程,它解决了同样的问题。包括<asm/pgtable.h>
但没有帮助。