《Linux设备驱动程序》前两章 设备驱动程序 即构造和运行模块:读书笔记
来源:互联网 发布:b站的优质up主 知乎 编辑:程序博客网 时间:2024/06/14 10:19
这本书和《Linux内核分析》一起对于Linux的讲解比较透彻。《Linux内核分析》侧重有讲源代码,《Linux设备驱动程序》侧重于锻炼一个Linux黑客,理解与实现Linux驱动程序的开发。
理解Linux的内核模块的作用,之所以将其分为模块,是可以将其更高效地执行,模块可以在需要的时候载入内核(内存中),可以在不需要的时候从内核中删除rmmod,从而达到内存空间的充分利用。在涉及内核模块载入时,insmod可以直接载入模块;但是当该模块涉及到其他模块的一些内核符号(在内核符号表中)时,应该使用modprobe工具,它会考虑要装入的模块是否引用了一些当前内核不存在的符号,如果有这类引用,则会在当前模块搜索路径中查找定义了这些符号的其他模块。 r
机制与策略。机制是“要实现什么功能”,策略是“怎么实现这个功能”。驱动程序关注的是机制,而不是策略。
驱动程序分为内核态和用户态,但一般是内核驱动程序,当然也有用户态驱动程序。用户态驱动程序有一个非常优越的优点:就是非常适合于开发使用,这样不会在驱动程序崩溃时搞死系统。
内核符号的导出到内核符号表中:EXPORT_SYMBOL(symbol)
module_init(init_function); //insmod 执行的函数
module_exit(exit_function); //rmmod 执行的函数
module_param(variable,type,perm); //perm 是访问许可值在<linux/stat.h>
module_param_array(name,type,num,perm);//传递的数组参数。num是数组内部数据的个数
内核维持struct task_struct *current;结构指针,指向当前的进程。
_ _init 函数类型修饰符 说明 这个函数只是在初始化过程中使用,如果初始化函数执行完毕则释放该函数用到的所有空间。但是如果初始化函数的一些变量在初始化完成后还需要使用,那么不能用_ _init修饰。
在注册失败后,需要释放之前已经注册成功的内容(应该逆序将已经注册好的 unregistere)。
int _ _int my_init_function(void)
{
int err;
err= register_this(ptr1,”skull”);
if(err) goto fail_this;
err=register_that(ptr2,”skull”);
if(err) goto fail_that;
err= register_those(ptr3,”skull”);
if(err) goto fail_those;
return 0;
fail_those:unregister_that(ptr2,”skull”);
fail_that: unregister_this(ptr1,”skull”);
fail_this:return err;
}
- 《Linux设备驱动程序》前两章 设备驱动程序 即构造和运行模块:读书笔记
- linux 设备驱动程序 (2) —— 构造和运行模块
- Linux设备驱动程序学习(2)-构造和运行模块
- LINUX设备驱动程序笔记(二)构造和运行模块
- 《Linux设备驱动程序》——构造和运行模块
- linux设备驱动程序第二版 编写和运行模块
- Linux设备驱动程序之读书笔记
- Linux设备驱动程序之读书笔记
- 《Linux设备驱动程序3》读书笔记
- 《Linux设备驱动程序》读书笔记:字符设备驱动程序(一)
- linux总线、设备和驱动程序
- Linux设备驱动程序代码 第2章 建立和运行模块
- 《LINUX设备驱动程序》第2章(建立和运行模块)学习笔记
- 读书笔记 Linux设备驱动程序(一) 0.01
- 读书笔记 Linux设备驱动程序(一) 0.02
- 转 Linux设备驱动程序之读书笔记
- 深入Linux设备驱动程序内核机制读书笔记
- linux下自动加载设备驱动程序模块
- msxml的介绍 转
- 关于响度、响度级、声强、声强级、声压、声压级、分贝、方、电平、增益、音高、音分
- 微软下月将发布Windows 8操作系统
- 今天201012142343
- C语言static 关键字浅析!
- 《Linux设备驱动程序》前两章 设备驱动程序 即构造和运行模块:读书笔记
- 图文并茂之.NET程序打包安装与卸载详细教程(!原创)
- Win7:双启动引导修复
- Source not found
- Macromedia JRun 4 简明手册
- [NPWP笔记]perl函数使用文件句柄
- tinyxml的使用 转
- Windows 2003下配置Apache虚拟主机
- String中的“+”和StringBuilder