Linux2.6内核驱动与2.4区别.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux2.6内核驱动与2.4的区别(2009-04-01 23:46:51) Linux2.6内核驱动移植参考 作者:晏渭川 随着Linux2.6的发布,由于2.6内核做了新的改动,各个设备的驱动程序在不同程度上要 进行改写。为了方便各位Linux爱好者我把自己整理的这分文档share出来。该文当列举 了2.6内核同以前版本的绝大多数变化,可惜的是由于时间和精力有限没有详细列出各个 函数的用法。 特别声明:该文档中的内容来自http:/,该网也上也有各个函数的较为详细的 说明可供各位参考。如果需要该文档的word版的朋友, 请mail到weiriver@索 取。 1、 使用新的入口 必须包含?? module_init(your_init_func); module_exit(your_exit_func); 老版本:int init_module(void); void cleanup_module(voi); 2.4中两种都可以用,对如后面的入口函数不必要显示包含任何头文件。 2、 GPL MODULE_LICENSE(Dual BSD/GPL); 老版本:MODULE_LICENSE(GPL); 3、 模块参数 必须显式包含 module_param(name, type, perm); module_param_named(name, value, type, perm); 参数定义 module_param_string(name, string, len, perm); module_param_array(name, type, num, perm); 老版本:MODULE_PARM(variable,type); MODULE_PARM_DESC(variable,type); 4、 模块别名 MODULE_ALIAS(alias-name); 这是新增的,在老版本中需在/etc/modules.conf配置,现在在代码中就可以实现。 5、 模块计数 int try_module_get(module); module_put(); 老版本:MOD_INC_USE_COUNT 和 MOD_DEC_USE_COUNT /~sean/parser.cgi?modules In 2.4 modules, the MOD_INC_USE_COUNT macro is used to prevent unloading of the module while there is an open file. The 2.6 kernel, however, knows not to unload a module that owns a character device thats currently open. However, this requires that the module be explicit in specifying ownership of character devices, using the THIS_MODULE macro. You also have to take out all calls to MOD_INC_USE_COUNT and MOD_DEC_USE_COUNT. ? ?? ??? ? ? static struct file_operations fops = { ? ?? ?? ?.owner = THIS_MODULE, ? ?? ?? ?.read = device_read, ? ?? ?? ?.write = device_write, ? ?? ?? ?.open = device_open, ? ?? ?? ?.release = device_release }? ??? ? ?? ??? The 2.6 kernel considers modules that use the deprecated facility to be unsafe, and does not permit their unloading, even with rmmod -f. 2.6,2.5的kbuild不需要到处加上MOD_INC_USE_COUNT来消除模块卸载竞争(module unload race) 6、 符号导出 只有显示的导出符号才能被其他模块使用,默认不导出所有的符号,不必使用EXPORT_NO _SYMBOLS 老板本:默认导出所有的符号,除非使用EXPORT_NO_SYMBOLS 7、 内核版本检查 需要在多个文件中包含时,不必定义__NO_VERSION__ 老版本:在多个文件中包含时,除在主文件外的其他文件中必须定义_ _NO_VE

文档评论(0)

hong333666 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档