码迷,mamicode.com
首页 > 其他好文 > 详细

第八章随笔

时间:2016-07-03 21:30:27      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:

读书笔记:

第八章:

    如果a.c使用了b.c文件中的函数,需要在a.c文件中使用extern预先定义b.c中的函数,extern的作用就是告诉编译器该函数的函数名,参数个数,参数类型和返回值类型,等到a.o和b.o链接成可执行文件或程序时,编译器再到b.o中寻找函数的具体实现,也就是说,extern只在编译阶段起作用;

    由于symbol_consumer驱动使用了symbol_producer驱动中导出的符号,因此,在安装symbol_consumer之前,需要先安装symbol_producer,卸载时顺序正好相反;

    modprobe命令会根据depmod命令生成的linux模块依赖关系来装载linux模块;

    卸载linux驱动:

    当卸载函数被阻塞时,rmmod命令也会被阻塞,也就是永远不会执行到卸载linux驱动模块的代码:

    (1)引用计数器的值和引用者不一致,实际上引用者是不存在的,因此,只需要将当前的linux驱动模块的引用计数器清零即可;

     (2)将原来的卸载函数替换成一个空的卸载函数即可;

上面的两种情况都需要获取表示要卸载的linux驱动模块的module结构体指针,struct module表示了linux驱动的相关信息,从/proc/kallsyms文件中查找系统分配给要卸载的linux驱动的module结构体的首地址,然后将首地址强行转换成module结构体指针。

 

第八章随笔

标签:

原文地址:http://www.cnblogs.com/qiekaifanqie/p/5638681.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!