【问题标题】:Linux driver phys_mem_access_prot undefinedLinux 驱动程序 phys_mem_access_prot 未定义
【发布时间】:2010-06-17 20:34:26
【问题描述】:

我有一个可加载模块,在 Ubuntu 9.10(Linux 2.6.31-22-server)下构建时会发出有关 phys_mem_access_prot 的警告。

[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-server 文件中

[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() 导出函数导致的问题吗?

【问题讨论】:

    标签: linux-kernel linux-device-driver


    【解决方案1】:

    您已经回答了自己的问题!模块使用的任何内核函数都需要通过各种 EXPORT_SYMBOL() 宏之一导出。

    如果非 GPL 模块需要使用 EXPORT_SYMBOL_GPL 导出的函数,您也会看到问题。

    【讨论】:

    • 感谢您的确认! LDD 解释 EXPORT_SYMBOL 的方式,我不确定它是只应用模块 -> 内核还是两种方式都应用。
    猜你喜欢
    • 2017-12-10
    • 2014-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-06
    • 1970-01-01
    • 2018-11-25
    相关资源
    最近更新 更多