linux内核大讲堂系列
文章平均质量分 72
无为和尚
无欲无为
展开
-
Linux内核大讲堂 (一) 设备驱动的基石驱动模型(5)
<br />Linux内核大讲堂 (一) 设备驱动的基石驱动模型(5)<br />上节我们已经领教了传说中的bus_register,这节我们继续领教同样是神级的driver_register。<br />driver_register如果看懂了,device自行分析应该没太大的问题。<br />照样先给出一个小的例子代码。<br /> <br />typedef struct __wwhs_device_driver{<br /> char *name;<br /> str原创 2011-05-17 22:03:00 · 9510 阅读 · 1 评论 -
Linux内核大讲堂 (一) 设备驱动的基石驱动模型(4)
今天又升级了最新版内核2.6.38.5,编了一下,我之前写的几个模块都可以用,看来这一块没有太大差异。顺便把内核升级写了一个相关的文档。大家如果没升级过内核的可以参考一下:http://blog.csdn.net/z2007b/archive/2011/05/09/6407458.aspx 。好了。上节我们用最直观的方式知道了kobject_create_and_add("wwhs_drvmode",NULL)这个函数做了些什么事。那kset呢?经过我们在最前面两小节的分析可以知道kset_register原创 2011-05-10 00:08:00 · 18959 阅读 · 28 评论 -
Linux内核大讲堂 (一) 设备驱动的基石驱动模型(3)
实在是让大家久等了,因为最近离职,所以繁锁的事情很多,今天终于把离职手续给办完了,不过还有一堆事情没有做,如果更新的慢的话,请大家多多包涵。言归正传。俗话说的好:光说不练假把式。很明显本帅哥不是假把式。为了让大家一起对驱动模型有直观的认识,小弟花了一点点时间写了几个小例子(目前只有一个)。就是为了让大家领会最神秘的驱动模型,有了这些小例子,结合我前面两篇源码分析的文章,哥可以告诉你,你已经具备内核分析的基本能力了。首先说一下我的环境:我linux是装在虚拟机上的,装的linux发行版是centos5.4。后原创 2011-05-06 18:01:00 · 7929 阅读 · 3 评论 -
Linux内核大讲堂 (一) 设备驱动的基石驱动模型(2)
上节我们分析到int kset_register(struct kset *k)函数中的kobject_add_internal(&k->kobj),我们接着分析,先唤起来一下大家的记忆,给出kset_register的函数定义:int kset_register(struct kset *k){ int err; if (!k) return -EINVAL; kset_init(k); err = kobject_add_internal(&k->kobj); if (err) return err原创 2011-05-04 23:31:00 · 5238 阅读 · 2 评论 -
Linux内核大讲堂 (一) 设备驱动的基石驱动模型(1)
可能把驱动模型放在第一章讲会会有点难度,但是只要能跨过这道坎,后面就会轻松很多,驱动模型是整个linux设备驱动的基石。大部分人把驱动模型叫做设备模型,但是我查了linux的帮助文档,就是在下载源码路径下的Documentation目录中找到driver-model这个目录,里面包含的文件就是我在本章中所要讲述的东西,也就是我所说的驱动模型。因此本文都会用驱动模型这个术语(如果各位觉得这种叫法是错误的,请在评论中指出,并给出理由,本人非常诚恳的接受各位善意的批评与指正)。驱动模型的核心结构就是我们通常所说的原创 2011-05-03 22:41:00 · 11651 阅读 · 11 评论 -
LINUX内核大讲堂系列(序论)
<br />LINUX内核大讲堂系列(序论)<br /> 其实我也是过来人,深知没有接触过内核开发的同志在无人指导的情况下独自学习LINUX设备驱动的感受。都是买书,看<br />BLOG,自已调个小程序,很难有同志能够坚持下去,市面上的书籍也不是说写的不好,只是大家的基础都不一样,另外我感觉有一<br />点就是那些书籍在看了之后始终感觉有一层捅不破的纸,看书的时候感觉啥都会,书一关,好像又啥都不懂了。其实我进书店看过<br />市面上的书,很少有讲内核的框架的,不论是国内的还是国外的,要么框架讲的很抽象原创 2011-05-02 21:21:00 · 5910 阅读 · 22 评论 -
Linux内核大讲堂 (二) 传说中的字符设备(4)
Linux内核大讲堂 (二) 传说中的字符设备(4)经过前面的学习,我们发现有一个东西像恶梦一样挥之不去,无论是讲驱动模型中的sysfs还是讲字符驱动的file,这些文件系统内的概念和模块已经让我们达到了无法忍受的地步,但这从侧面也说明了文件系统在内核中的至高地位。Linux宣称一切皆文件,是不是一切皆文件并不是我们目前讨论的内容,就算偶尔有一些东西没有抽象成文件,但这不重要,也不影响文件这个原创 2011-06-13 00:52:00 · 20337 阅读 · 25 评论 -
Linux内核大讲堂 (二) 传说中的字符设备(3)
Linux内核大讲堂 (二) 传说中的字符设备(3) 接下来讲的是字符设备的重点,就是从用户空间调用open最到终调用我们写的字符驱动中的open的整个过程。下面的讨论将会非常有意思,请大家一定要看完所有的描述,否则理解有问题就别怪哥没提醒你了! 在这之前我们大概说说大名鼎鼎的系统调用,从字面上理解就是系统(内核)提供的调用(服务),取小括号里面的话就拼成了:内核提原创 2011-06-06 23:22:00 · 13871 阅读 · 15 评论 -
Linux内核大讲堂 (二) 传说中的字符设备(2)
<br />Linux内核大讲堂 (二) 传说中的字符设备(2)<br /> 这一节我们先给出一个字符设备的小例子,源码结构如下:<br />|-- wwhs_chardev<br />| |-- Makefile<br />| |-- wwhs_chardrv.c //驱动<br />| `-- wwhs_chardrv_test.c //小测试程序<br />`-- wwhs_public.h<br />请大家养成看Makefile的好习惯,这个Makefile很简单原创 2011-05-28 23:14:00 · 7341 阅读 · 1 评论 -
Linux内核大讲堂 (二) 传说中的字符设备(1)
Linux内核大讲堂 (二) 传说中的字符设备(1)就当我还在学校的时候,我就曾在一个装机群里听一位装机圣手说,驱动程序的安装没你想的那么简单,分类型的,分为字符设备驱动和块设备驱动。我当时就纳闷了,我说我装机的时候好像没看到啊,我就把光盘放过去然后就一直点下一步,然后重启就好了啊。后面我在群里被几位高手围攻,败下阵来,时过境迁,哥现在也算是道上混的兄弟了,再也没那么容易被蒙了。就算你DIY再牛,你也不要和我说装驱动要分类。否则我就和你讲内核,讲晕你再说。看谁更能吹,哈哈。我得意的笑。我发现学内核的一个好处原创 2011-05-25 20:16:00 · 7403 阅读 · 3 评论 -
Linux内核大讲堂 (一) 设备驱动的基石驱动模型(7)
<br />Linux内核大讲堂 (一) 设备驱动的基石驱动模型(7)<br />终于快讲完了,这一节其实就是让上节我们所说的四大天王露下小脸。源码分析请自行完成吧。我建议大家可以试着先看一下代码,如果能看懂,那就把我写的那破玩意删掉,自已实现一遍,如果不能看懂,那马上回过去从第一小节重新看过,耐心,一定要有耐心,没耐心,啥都完了。帖上原码:<br />Makefile:<br />obj-m+=wwhs_bus.o<br />KERNELDIR=/opt/kernel/linux-2.6.38/linux原创 2011-05-19 20:20:00 · 7464 阅读 · 5 评论 -
Linux内核大讲堂 (一) 设备驱动的基石驱动模型(6)
<br />Linux内核大讲堂 (一) 设备驱动的基石驱动模型(6)<br />上节我们大概分析了driver_register是怎么工作的。有的细节虽然没有到位,但是记住一句话,贪多嚼不烂,我们首先要建立的是驱动模型在我们脑海中的第一印象。本节将讲述最后两个主角,device和class的创建。讲完这些就会来个大集合。让四大天王(device,class,device_driver,bus)一起登台向各位致敬,表演?想要四大天王表演?没问题,可四大天王不但身份尊贵,最主要的是个个都多才多艺,要完全了解四原创 2011-05-19 20:16:00 · 7828 阅读 · 0 评论 -
Linux内核大讲堂 (三) 督脉之虚拟文件系统(1)
Linux内核大讲堂 (三)督脉之虚拟文件系统(1)在上一节内核大讲堂 (二)传说中的字符设备(4)>>中我们略微跟了一下文件系统相关的代码,虽然跟的不多,但是总算和虚拟文件系统和ext3打了个招呼。接下来就要专门讲文件系统了。文件系统也是分层的,简单来说分两大层。上层是虚拟文件系统,显然下层就是非虚拟文件系统了,就是“实际”的文件系统。什么才算实际?呵呵。高中学过反证法,这时候你就感原创 2012-06-04 22:24:40 · 6462 阅读 · 1 评论