2010-06-16 5 views
3

우분투 9.10 (Linux 2.6.31-22-server)에서 빌드 할 때 phys_mem_access_prot에 대한 경고를 던지는로드 가능한 모듈이 있습니다.Linux 드라이버 phys_mem_access_prot undefined

[664] make -C /lib/modules/`uname -r`/build M=`pwd` 
make: Entering directory `/usr/src/linux-headers-2.6.31-22-server' 
    LD  /home/chuck/dev/svd/built-in.o 
    CC [M] /home/chuck/dev/svd/svd.o 
    LD [M] /home/chuck/dev/svd/svd_drv.o 
    Building modules, stage 2. 
    MODPOST 1 modules 
WARNING: "phys_mem_access_prot" [/home/chuck/dev/svd/svd_drv.ko] undefined! 
    CC  /home/chuck/dev/svd/svd_drv.mod.o 
    LD [M] /home/chuck/dev/svd/svd_drv.ko 
make: Leaving directory `/usr/src/linux-headers-2.6.31-22-server' 

기능은 System.map-2.6.31-22-서버 파일

[667] grep phys_mem_access_prot /boot/System.map-2.6.31-22-server 
ffffffff8103fb40 T phys_mem_access_prot 
ffffffff8103fb50 T phys_mem_access_prot_allowed 

및 드라이버로드에 나타나지 않습니다, 그래서 나는 modpost이 불행 이유에 혼란 스러워요. 커널이 EXPORT_SYMBOL()으로 함수를 내보내지 않기 때문에 문제가 있습니까?

답변

1

당신은 당신 자신의 질문에 대답했습니다! 모듈에 의해 사용되는 커널 함수는 다양한 EXPORT_SYMBOL() 매크로 중 하나에 의해 익스포트되어야합니다.

비 GPL 모듈이 EXPORT_SYMBOL_GPL에서 내 보낸 함수를 사용해야하는 경우에도 문제가 발생합니다.

+0

확인해 주셔서 감사합니다. LDD가 EXPORT_SYMBOL을 설명한 방식으로 모듈 -> 커널 만 적용했는지 또는 두 가지 방법을 모두 적용했는지 확실하지 않았습니다. – ctuffli

관련 문제