001_linux驱动之_驱动的加载和卸载

(一)驱动的安装:

1. 可以将驱动程序静态编译进内内核中

2. 也可以将它作为模块在使用的时候再加载

注:在配置内核时候,如果某个配置被设置为m,就表示它将会被编译成模块

(二)加载和卸载驱动使用命令(模块的拓展名为.ko)

1. insmod 命令加载  (使用示例:insmod  first_drv.ko)

2. rmmod 命令卸载 (使用示例:rmmod  first_drv.ko)

3. lsmod 查看内核中已经加载了哪些模块 (使用示例:lsmod)

(三)

1. 当使用insmod加载模块时候,模块的初始化函数会被调用,它用来向内核注册驱动程序

2. 当使用rmmod卸载模块时候,模块的清除函数会被调用。

模块初始化:module_init(first_drv_init);

模块清除   :module_init(first_drv_exit);

例如: first_drv_init和first_drv_exit函数以编译在first_drv.ko驱动中

在程序中有:module_init(first_drv_init);

即当使用命令:insmod  first_drv.ko   时候first_drv_init函数会被调用

原文地址:https://www.cnblogs.com/luxiaoguogege/p/9690196.html

时间: 2024-08-08 20:39:36

001_linux驱动之_驱动的加载和卸载的相关文章

Linux网络设备驱动(一) _驱动模型

Linux素来以其强大的网络功能著名,同时, 设备'>网络设备也作为三大设备之一, 成为Linux驱动学习中必不可少的设备类型, 此外, 由于历史原因, Linux并没有强制对设备'>网络设备贯彻其"一切皆文件"的思想, 设备'>网络设备不以/dev下的设备文件为接口,用户程序通过socket作为访问硬件的接口.本文以Linux3.14.0内核为例, 讨论Linux中的网络驱动模型 Linux的设备'>网络设备并不使用文件作为用户程序访问设备'>网络设备的

C#中动态加载和卸载DLL

在C++中加载和卸载DLL是一件很容易的事,LoadLibrary和FreeLibrary让你能够轻易的在程序中加载DLL,然后在任何地方 卸载.在C#中我们也能使用Assembly.LoadFile实现动态加载DLL,但是当你试图卸载时,你会很惊讶的发现Assembly没有提供任何 卸载的方法.这是由于托管代码的自动垃圾回收机制会做这件事情,所以C#不提供释放资源的函数,一切由垃圾回收来做.  这引发了一个问题,用Assembly加载的DLL可能只在程序结束的时候才会被释放,这也意味着在程序运

Qt中如何 编写插件 加载插件 卸载插件

Qt中如何 编写插件 加载插件 卸载插件是本文要介绍的内容.Qt提供了一个类QPluginLoader来加载静态库和动态库,在Qt中,Qt把动态库和静态库都看成是一个插件,使用QPluginLoader来加载和卸载这些库.由于在开发项目的过程中,要开发一套插件系统,就使用了Qt的这套类库. 一 编写插件 编写一个Qt的插件需要以下步骤 1.声明一个插件类, 2.定义一个类,实现这个插件类定义的接口,定义的这个类必须从QObject集成下来. 3.使用Q_INTERFACESQ_INTERFACE

通过应用程序域AppDomain加载和卸载程序集

微软装配车的大门似乎只为货物装载敞开大门,却将卸载工人拒之门外.车门的钥匙只有一把,若要获得还需要你费一些心思.我在学习Remoting的时候,就遇到一个扰人的问题,就是Remoting为远程对象仅提供Register的方法,如果你要注销时,只有另辟蹊径.细心的开发员,会发现Visual Studio.Net中的反射机制,同样面临这个问题.你可以找遍MSDN的所有文档,在Assembly类中,你永远只能看到Load方法,却无法寻觅到Unload的踪迹.难道我们装载了程序集后,就不能再将它卸载下来

untiy数据包的输出、加载和卸载

1:untiy数据包的输出: BuildPipeline.BuildAssetBundle将任意类型的资源打包成AssetsBundle文件. BuildPipeline.BuildAssetBundleExplocitAssetNames同上,但是可以为每个对象制定一个自定义的名字,方便查找. BuildPipeline.BuildStreamedSceneAssetBundle直接将一个或多个场景打包成AssetsBundle文件. 2:untiy将数据包加载到AssetBundle: WW

【摘】如何从程序集中加载及卸载插件

目前要做一个windows Service,内部任务分别使用应用程序域进行隔离.针对应用程序域中加载dll,并调用dll的方法启动任务遇到了一些麻烦,下文中的事例完整的解决了问题. ------------------------------------- 在软件开发的领域中,插件技术一直是一项非常实用的技术.许多优秀的软件产品都提供了通过加载插件来扩展.丰富产品本身功能的能力.而像Firefox.Eclipse之类的软件,更是将插件的功能发挥到了极致.顺便做点广告的是,我们的Mussel框架便

C#.Net 如何动态加载与卸载程序集(.dll或者.exe)

我们知道在C++中加载和卸载DLL是一件很容易的事,LoadLibrary和FreeLibrary让你能够轻易的在程序中加载DLL,然后在任何地方卸载. 在C#中我们也能使用Assembly.LoadFile实现动态加载DLL,但是当你试图卸载时,你会很惊讶的发现Assembly没有提供任何卸载的方法.这是由于托管代码的自动垃圾回收机 制会做这件事情,所以C#不提供释放资源的函数,一切由垃圾回收来做. 但是我们可以通过应用程序域(AppDomain)来实现加载域卸载,如下会演示如何使用的.当Ap

AppDomain 详解二【转】-C#中动态加载和卸载DLL

在C++中加载和卸载DLL是一件很容易的事,LoadLibrary和FreeLibrary让你能够轻易的在程序中加载DLL,然后在任何地方 卸载.在C#中我们也能使用Assembly.LoadFile实现动态加载DLL,但是当你试图卸载时,你会很惊讶的发现Assembly没有提供任何 卸载的方法.这是由于托管代码的自动垃圾回收机制会做这件事情,所以C#不提供释放资源的函数,一切由垃圾回收来做. 这引发了一个问题,用Assembly加载的DLL可能只在程序结束的时候才会被释放,这也意味着在程序运行

7. Oracle数据加载和卸载

在日常工作中:经常会遇到这样的需求: Oracle 数据表跟文本或者文件格式进行交互:即将指定文件内容导入对应的 Oracle 数据表中:或者从 Oracle 数据表导出. 其他数据库中的表跟Oracle数据库进行交互. 若是少量数据:可选择的解决方案有很多.常用的用 Pl/SQL developer工具,或者手动转换为 INSERT 语句,或者通过API.但数据量大:用上面的方法效率太烂了.本文来说说 Oracle 数据的加载和卸载. Oracle中的DBLINK Oracle加载数据-外部表