zoukankan      html  css  js  c++  java
  • 第八章

    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就会停在那不懂了,永远也不会返回到系统的操作提示符。

  • 相关阅读:
    设计模式
    IPC- Posix与system v
    squashfs文件系统
    各种根文件系统
    SPI通讯协议
    tty各种设备的情况
    Linux系统调用过程
    uImage和zImage的区别
    jquery可见性选择器(匹配匹配所有显示的元素)
    jquery可见性选择器(匹配所有隐藏的元素)
  • 原文地址:https://www.cnblogs.com/ddddd/p/5650282.html
Copyright © 2011-2022 走看看