Linux驱动的代码重用并发
Linux 驱动的代码重用有不少种方法。能够采用标准C 程序的方式。将要重用的代码放在其余的文件(在头文件中声明〉中。若是要使用某些功能, include 相应的头文件便可(这种方式称为静态重用)。也可使用另一种动态重用的方式,也就是一个Linux 驱动可使用另外←个Linux驱动中的资源(函数、变量、宏等〉。函数
强行卸载Linux驱动spa
若是编写的Ljnux 驱动程序在逻辑上是正确的,那么能够正常装载和卸载,但在某些状况下,可能某些程序会出现异常状况。这时Linux 驱动可能会没法正常卸载。指针
状况一:初始化函数崩溃blog
因为Linux 驱动模块的初始化函数(经过module_init 宏指定的函数〉进行了某些操做而崩溃,从而致使初始化函数没法正常返田二这种状况的表现是当前Linux 驱动模块没用被任何其余的Linux 驱动模块使用,但却显示已经被引用了一次。资源
状况二:卸载函数被阻塞 博客
在使用rmmod 命令卸载Linux 驱动时,系统会调用卸载函数(跑过module_exit 宏指定的函数),只有卸载函数成功返回肘, Linux 驱动才会被翻载。若是卸载函数被阻塞(多是死循环、并发等状况引发的阻塞), rmmod 命令也会被阻塞. 也就是说永远不会执行到卸载Linux 驱动模块的代码。这种状况的表现是一执行rmmod 命令就会停在那不动了,永远也不会返回到系统的操做提示符。it
无论是哪一种状况,都须要解决一个不可回避的问题,就是要获取表示要卸载的Linux 驱动模块的module 结构体指针。由于struct module 表示了Linux 驱动的相关信息. 变量
蜂鸣器(PWM)驱动module
蜂鸣器也称PWM,基本原理是经过脉冲来控制蜂鸣器的打开和中止。本节经过I/O命令来打开和中止PWM的。
心得:PWM驱动与LED驱动的实现流程相似,可能还要简单一些。本章演示了如何将一个Linux驱动分红多个实现文件,使用了比较简单的PWM驱动。这章主要讲解了Linux驱动经常使用的代码重用方式。此外还介绍了一种强行卸载Linux驱动的方法。经过这种方法,就能够免去不断重启机器的痛苦了。
本人博客地址:http://home.cnblogs.com/u/jie617530/