使用EXPORT_SYMBOL

33 篇文章 0 订阅

       在Linux内核里,我们编写驱动程序时,如果遇到的驱动太大,需要在各个模块之间共享一些变量或函数等,此时就需要用到内核里的EXPORT_SYMBOL宏了,其在include/linux/export.h文件中定义,而最常用的有如下两个:

#define EXPORT_SYMBOL(sym)                                      \
        __EXPORT_SYMBOL(sym, "")

#define EXPORT_SYMBOL_GPL(sym)                                  \
        __EXPORT_SYMBOL(sym, "_gpl")

       其中,多加了_GPL尾的量需要在使用MODULE_LICENSE()宏定义为GPL协议的模块里才能引用,不然加载驱动时会有类似Unknown symbol export_orig_gpl (err 0)的提示(该提示取自下面的例子),当然,模块之间也需要有加载先后顺序,其中EXPORT的模块需先加载,extern的后加载,不然也会有类似如上的提示。

       这里的例子会用到两个源码文件,作为export的文件名为export_orig.c,作为extern的文件名为expo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

stxinu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值