• 第八章随笔


    读书笔记:

    第八章:

        如果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结构体指针。

     

  • 相关阅读:
    背景颜色的渐变设置--实现丰富多彩的背景效果
    CSS-sprit 雪碧图
    背景图片的相关设置
    关于阿里云图标的使用 iconfont
    HTML四种定位-粘滞定位
    HTML四种定位-固定定位
    HTML四种定位-绝对定位
    HTML四种常见的定位-相对定位
    水平居中
    CentOS8更换国内镜像源
  • 原文地址:https://www.cnblogs.com/qiekaifanqie/p/5638681.html
Copyright © 2020-2023  润新知