文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>如何发布binary的kernel module

如何发布binary的kernel module

时间:2009-04-16  来源:strongzgy

比如Nvidia显卡的Linux内核驱动,还有以前接触过的SCSI的Raid控制器RocketRAID 174x controller驱动,都是以二进制的方式发布给客户。但是内核有严格的version magic检查,如果version magic不匹配的话,驱动是没有办法插入内核的。

客户的内核版本可是不好预知的,那这些厂商是如果解决这个内核版本的问题的?

看到过的解决方法有如下几种:
1. 在代码中加入内核版本检查,比如2.6.0~2.6.10调用内核的A函数,2.6.11以上的调用B函数。这个方法是在编译时做的,二进制的驱动用不了这个方法。
2. 将内核中做的事情,尽量尽量移动到用户态做,这样驱动只是简单的提供能够访问硬件的途径而已,而大部分的逻辑还是在用户层完成的,即使公开驱动的源代码也无所谓了。Android中的好些驱动就是这样干的。
3. 一部分以还没有连接的object方式发布,一部分以源代码发布。这样核心逻辑不公开,而和内核版本函数紧密相关的部分以源代码的形式提供。用户然后再自己编译生成驱动模块。RocketRaid 174x采用正是这种方式,Nvidia的不知道,我估计也是这个方式。
相关阅读 更多 +
排行榜 更多 +
平衡球球

平衡球球

休闲益智 下载
平衡球球游戏

平衡球球游戏

休闲益智 下载
土耳其方块消除游戏

土耳其方块消除游戏

休闲益智 下载