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

  • 相关阅读:
    [程序员必备工具]分享一款不错的个人代码个人知识管理软件wiz
    移动开发,如何选择手机软件开发​平台?
    Best Wishes,my Married Friend!
    三年来最开心的一天!
    “世事无绝对”也是相对的……
    又到世界CUP……
    利物浦,总是在我情绪低落时给我鼓舞!
    一种感觉
    How to break to loop? It frustrates me!
    取舍有度,学会放弃……
  • 原文地址:https://www.cnblogs.com/ddddd/p/5650282.html
Copyright © 2011-2022 走看看