将驱动编译到内核注意一个小问题

这几天同事测试LIRC驱动发现,如果把LIRC驱动编译成模块,然后使用insmod命令将驱动load到内核,驱动使用起来没有任何问题,但是如果把驱动直接编译到内核,启动内核以后发现驱动无法使用。

 

刚开始我怀疑可能是devfs的问题,但是查看代码跟这个没有任何关系。 然后查看了编译成模块时load模块的log, 与编译到内核,内核启动时的log,发现了问题。

 

原来lirc_dev.c文件有这么一段代码:

 

 

把MODULE宏去掉以后,log一致了,但是使用的时候还要注意一点。

 

因为除了lirc_dev这个驱动之外,LIRC还需要开发者提供建议在lirc_dev基础上另外一个驱动,例如lirc_it87驱动,这个驱动的打开和关闭操作如下:

 

 需要将其改写成下面的代码,因为MOD_IN_USE, MOD_INC_USE_COUNT和MOD_DEC_USE_COUNT这些宏只有驱动被编译成模块时才支持。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值