这本书和《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驱动开发的经典教程,内容非常全面,非常适合没有接触过Linux驱动开发的新手。本人通过阅读本书,对其内容进行了梳理总结,分为两大部分:1.驱动代码分析 2.知识点总结...
《linux设备驱动程序》(第三版)的学习笔记,对于学习设备驱动的朋友十分有用
Linux设备驱动程序,《linux驱动程序第三版》学习笔记。linux牛人写的,我打包成chm文件,以方便大家观看。
Linux内核与设备驱动程序学习资料笔记+源码.zipLinux内核与设备驱动程序学习资料笔记+源码.zipLinux内核与设备驱动程序学习资料笔记+源码.zipLinux内核与设备驱动程序学习资料笔记+源码.zipLinux内核与设备驱动程序...
自己在网上整理的 linux设备驱动程序第三版的学习笔记! linux设备驱动程序第三版的学习笔记! linux设备驱动程序第三版的学习笔记!
·Linux设备驱动程序学习(1)-字符设备驱动程序 ·Linux设备驱动程序学习(0)-设备驱动介绍& Hello, world!模块 ·Linux设备驱动程序学习(2)-调试技术 ·Linux设备驱动程序学习(3)-并发和竞态 ·Linux设备...
《linux设备驱动》23章学习笔记
很详细的linux设备驱动程序笔记,对看这本经典书十分有帮助,值得一看。
Linux 设备驱动程序学习(0) -设备驱动介绍& Hello, world!模块 模块结构介绍 字符设备驱动程序 调试技术 并发和竞态 高级字符驱动程序操作 阻塞型 I/O 和休眠
详细介绍了linux字符设备驱动程序,对各个名词做了自己的理解,在学习中的笔记,有错误还请海涵
Linux内核与设备驱动程序学习笔记及源码.zip Linux内核与设备驱动程序学习笔记及源码.zip Linux内核与设备驱动程序学习笔记及源码.zip Linux内核与设备驱动程序学习笔记及源码.zip Linux内核与设备驱动程序学习笔记...
Linux设备驱动程序学习-170页-pdf
linux设备驱动程序,自己学习总结的笔记,比较简略,哈哈
学习《linux设备驱动程序》这本书必须做实验,这是最好的捷径,代码中有些地方需要修改,总体是正确的,希望大家好好利用,可以配合我之前上传的笔记一起学习,效果会好点
《嵌入式Linux C语言应用程序设计》读书笔记《嵌入式Linux C语言应用程序设计》读书笔记《嵌入式Linux C语言应用程序设计》读书笔记《嵌入式Linux C语言应用程序设计》读书笔记《嵌入式Linux C语言应用程序设计》...
Linux内核与设备驱动程序学习笔记
这是我跟着网络牛人和经典书籍《linux设备驱动程序》学习linux底层驱动时摘抄和自写的学习笔记,希望对大家有用,源代码我之后上传。
这个是网上高手学习linux设备驱动程序的学习笔记,结合linux设备驱动程序第三版,值得学习。
该笔记是参考linux设备驱动第三版上的实验,重新在linux内核2.6上调试,并在arm开发板上运行。
跨平台性:Linux操作系统可以在多种硬件架构和平台上运行,包括x86、ARM、MIPS等。这使得Linux成为了一种非常灵活的操作系统,适用于各种设备和应用场景。 可定制性:由于Linux的源代码是公开的,用户可以根据自己的...