代码重用分为静态和动态。静态重用这种方式是代码极的重用,也就是将需要重用的代码和使用这些代码的使用者放在一起进行编译,最总生成一个可执行文件或程序库。另外一种代码共享的方式:模块依赖,也成为导出符号。如果只能用一句话解释如何利用导出符号实现代码共享,这句话就是"在一个驱动模块里使用另一个驱动模块里的被导出符号(常量,变量,函数等)"。
强行卸载Linux驱动的情况:
初始化函数崩溃:
由于Linux驱动模块的初始化函数(通过module_init宏指定的函数)进行某些操作而崩溃,从而导致初始化函数无法返回,这种情况的表现是当前Linux驱动模块没有被任何其他的Linux驱动模块使用,但却显示已经被引用了一次。
卸载函数被阻塞:
在使用rmmod命令卸载Linux驱动时,系统会调用卸载函数(通过module_exit宏指定的函数),只有卸载函数成功返回时,Linux驱动才会被卸载,如果卸载函数被阻塞(可能是死循环,并发等情况引起的阻塞),rmmod命令也会被阻塞,也就是说永远不会执行到卸载Linux驱动模块的代码。蜂鸣器也称为PWM(脉冲宽度调制),基于原理是通过脉冲来控制蜂鸣器的打开或停止。