• 第八章


    Linux驱动的代码重用有很多种方法,可以采用标准的方式。将要重用的代码放在其他的文件中。如果要使用某些功能,include相应的文件即可(这种方式称为静态重用)。也可以使用另一种动态的方式,也就是一个Linux驱动可以使用另一个Linux驱动的资源。

     CC++语言中编译多个源代码文件时,如果a.c使用了b.c文件中的函数,需要在a.c文件中使用extern预先定义b.c中的函数。Extrn的作用就是告诉编译器该函数的名称。参数个数,参数类型和返回值类型。

       模块依赖:也称为导出符号。如果只能使用一句话解释如何使用导出符号实现代码共享,这句话就是“在一个驱动模块里使用另一模块里的被导出的符号(常量,变量,函数等)”

      强行卸载LInux驱动的原因是:

    (1):初始化函数崩溃:由于Linux驱动模块的初始化函数(通过module-init宏指定的函数)进行了某些操作而崩溃,从而导致初始化函数无法正常返回。这种情况的表现是当前Linux驱动模块没有被任何其他的Linux驱动模块使用,但是却明显已经被引用了一次。

    (2)卸载函数被阻塞:在使用rmmod函数卸载驱动Linux驱动时,系统会调用卸载函数,只要卸载函数成功返回时,Linux驱动才会被卸载。如果卸载函数被阻塞,rmmod命令也会被阻塞,也就是说永远不会执行到卸载Linux驱动模块的代码。这种情况的表现是执行rmmod就会停在那不懂了,永远也不会返回到系统的操作提示符。

  • 相关阅读:
    pku夏令营面试
    机器学习实验一SVM分类实验
    面试相关-转载-well,yzl——持续更新
    2715:谁拿了最多奖学金-poj
    1005:I Think I Need a Houseboat-poj
    2810:完美立方-poj
    2943:小白鼠排队-poj
    rem+媒体查询---移动端 设计稿以375
    微信小程序 + mock.js 实现后台模拟及调试
    一个div 实现纸张阴影效果
  • 原文地址:https://www.cnblogs.com/ddddd/p/5650282.html
Copyright © 2020-2023  润新知