zoukankan      html  css  js  c++  java
  • Android深度探索(卷1)HAL与驱动开发学习笔记(8)

    Android深度探索(1)HAL与驱动开发学习笔记(8

    第八章 蜂鸣器驱动

     

    L i n u x驱动的代码重用有很多种方法。可以采用标准C程序的方式。将要重用的代码放在其他的文件(在头文件中声明)中。如果要使用某些功能,i n clu d e相应的头文件即可(这种方式称为静态重用)。也可以使用另外一种动态重用的方式,也就是一个L i n u x驱动可以使用另外一个L i n u x驱动中的资源(函数、变量、宏等)。

    由于于异常情况而导致的Li n u x驱动模块无法卸载的情况

    1:初始化函数崩溃

    由于于L i n u x驱动模块的初始化函数(通过m o d u l e _ i n i t宏指定的函数〉进行了某些操作而崩溃,从而导致初始化函数无法正常返回,这种情况的表现是当前Lin u x驱动模块没用被任何其他的Li n u x驱动模块使用,但却显示已经被引用了一次。使用r m m o d  bad_driverI命令卸载b a d_d r i v erl时会输出如下的信息,但却找不到使用bad_d r i v e r l的其他Li n u x模块。

    ERROR:  Module is bad_driverl is in use

    2:卸载函数被阻塞

        在使用rmmod命令卸载L i n u x驱动时,系统会调用卸载函数(通过modul e _ e x i t宏指定的函数),只有卸载函数成功返回肘,L i n u x驱动才会被卸载。如果卸载函数被阻塞(可能是死循环、并发等情况引起的阻塞),rmmod命令也会被阻塞.也就是说永远不会执行到卸载L i n u x驱动模块的代码。这种情况的表现是一执行rmmod命令就会停在那不动了,永远也不会返回到系统的操作提示符。

     

     

     

     

     

  • 相关阅读:
    Redis list数据结构
    Redis hash结构
    大公司都有哪些开源项目~~~阿里,百度,腾讯,360,新浪,网易,小米等
    使用Nexus搭建Maven私服
    Maven nexus 安装nexus私服出现的两个问题
    SONATYPE NEXUS 搭建MAVEN 私服
    http://www.cnblogs.com/jqyp/archive/2010/08/20/1805041.html
    将 Smart 构件发布到 Maven 中央仓库
    http://www.ruanyifeng.com/blog/2013/07/gpg.html
    http://www.jianshu.com/p/1e402922ee32/
  • 原文地址:https://www.cnblogs.com/zhangnene/p/5640696.html
Copyright © 2011-2022 走看看