커널 드라이버 제작시에 undefined symbol 오류 입니다.

trymp의 이미지

환경은 linux fc6 이고 2.6.24 kernel 입니다.

제가 아래 매크로를 이용해서 각 zone 별 메모리 상태를 보려고 하는데요.

for_each_zone(zone) {
  ...
}

이 매크로를 사용할 때 아래와 같은 애러가 나옵니다.

WARNING: "next_zone" [aaa.ko] undefined!
WARNING: "first_online_pgdat" [aaa.ko] undefined!

일반적인 코딩에서는 다른 오브젝트에 심볼이 있으면 link 시에 추가만 해주면 되는데,

커널 드라이버 빌드시에는 붙이기 어렵더군요. mm/mmzone.o 를 어떻게 붙여주어야 하나요?
아니면 undefined 가 나지 않게 하는 방법이 따로 있을 까요?
고수님들 조언 주시면 감사하겠습니다.

제 Makefile 입니다.

PWD = $(shell pwd)
KSRC =  생략
DRIVER_NAME = aaa
TARGET = $(DRIVER_NAME).ko
 
SRCS = aaa1.c
 
obj-m += $(DRIVER_NAME).o
$(DRIVER_NAME)-objs := $(SRCS:.c=.o)
 
EXTRA_CFLAGS =
 
all: default
 
default:
    $(MAKE) -C ${KSRC} SUBDIRS=${PWD} modules
 
depend:
 
clean:
    rm -rf $(TARGET) $(TARGET:.ko=.o) $(TARGET:.ko=.mod.c) $(TARGET:.ko=.mod.o) $(SRCS:.c=.o) .*cmd .tmp_versions Module.symvers
furmuwon의 이미지

EXPORT_SYMBOL
로 한번 검색해 보시면 답이 나올겁니다.