Я пишу модуль ядра, где внутри функции мне нужно проверить, передано ли
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» в буфере журнала.
Мой 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)
Я попытался найти некоторые другие «интерфейсы» внутри ядра, чтобы проверить, является ли страница ZERO_PAGE, но не повезло.
Кто-нибудь может сказать мне, как избавиться от этой ошибки. ИЛИ любой другой способ проверить это условие?
ПРИМЕЧАНИЕ: я натолкнулся на это ядро newbie thread , которое решало ту же проблему. <asm/pgtable.h>
включены, но не помогают.