`
tomhibolu
  • 浏览: 1387027 次
文章分类
社区版块
存档分类
最新评论

Linux驱动修炼之道-混杂设备

 
阅读更多

努力成为linux kernel hacker的人李万鹏原创作品,为梦而战。转载请标明出处

http://blog.csdn.net/woshixingaaa/archive/2011/05/17/6426095.aspx

在Linux驱动中把无法归类的五花八门的设备定义为混杂设备(用miscdevice结构体表述)。miscdevice共享一个主设备号MISC_MAJOR(即10),但次设备号不同。所有的miscdevice设备形成了一个链表,对设备访问时内核根据次设备号查找对应的miscdevice设备,然后调用其file_operations结构中注册的文件操作接口进行操作。在内核中用struct miscdevice表示miscdevice设备,然后调用其file_operations结构中注册的文件操作接口进行操作。miscdevice的API实现在drivers/char/misc.c中。


下边是描述这个设备的结构体:

然后来看看misc子系统的初始化函数:

下边是register_chrdev函数的实现:

来看看这个设备的操作函数的集合:

可以看到这里只有一个打开函数,用户打开miscdevice设备是通过主设备号对应的打开函数,在这个函数中找到次设备号对应的相应的具体设备的open函数。它的实现如下:


再来看看misc子系统对外提供的两个重要的API,misc_register,misc_deregister:

这个是miscdevice的卸载函数:

总结一下miscdevice驱动的注册和卸载流程:
misc_register:匹配次设备号->找到一个没有占用的次设备号(如果需要动态分配的话)->计算设备号->创建设备文件->miscdevice结构体添加到misc_list链表中。
misc_deregister:从mist_list中删除miscdevice->删除设备文件->位图位清零。

分享到:
评论

相关推荐

    Linux常见驱动源码分析(kernel hacker修炼之道全集)--李万鹏

    kernel hacker修炼之道之驱动-混杂设备.pdf kernel hacker修炼之道之驱动-按键.pdf kernel hacker修炼之道之PCI subsystem(五).pdf kernel hacker修炼之道之PCI subsystem(四).pdf kernel hacker修炼之...

    linux混杂设备驱动讲解

    该文档主要讲述了linux混杂设备的驱动编程。混杂设备可以理解为一种主设备号固定为10的一种字符设备。但是编程的过程要比字符设备简单很多。可以达到和字符设备一样的效果。有兴趣可以了解一下。

    linux混杂设备

    本文档主要是本人在工作中对于混杂设备的一些总结及个人见解,从中分析了应该如何应用混杂设备,并且比较了linux2.6和linux3.0版本在混杂设备上的区别,方便移植linux2.6驱动到linux3.0版本上。

    OK6410 linux混杂设备驱动LED

    OK6410 linux混杂设备驱动LED程序,使用3.0.1内核编译,还有驱动源码、Makefile和测试程序

    国嵌培训课件Linux驱动程序设计

    3. 混杂设备驱动 4. LED驱动程序设计 第四天 1. Linux总线、设备、驱动模型 2. Linux platform驱动 3. 中断处理 4. 按键驱动程序 第五天 1.Linux网络体系架构 2. Linux网卡驱动程序设计 3. Dm9000网卡驱动程序分析 ...

    手把手教你捕获数据包-winpcap-混杂模式设定

    手把手教你捕获数据包-winpcap-混杂模式设定

    07113 干部培训--执行力培训--混杂中见“真经”.doc

    07113 干部培训--执行力培训--混杂中见“真经”.doc

    精通LINUX设备驱动程序开发

    94 5.3 检测数据可用性 95 5.3.1 轮询 95 5.3.2 fasync 98 5.4 和并行端口交互 99 5.5 rtc子系统 108 5.6 伪字符驱动程序 109 5.7 混杂驱动程序 110 5.8 字符设备驱动程序注意事项 115 5.9 查看源代码 115 ...

    Linux驱动编程思维导图

    包含内核模块设计 硬件访问技术 字符设备驱动编程,字符设备控制,混杂设备驱动编程,工作队列驱动编程 linux中断处理程序等

    Linux驱动编程(含源码)

    linux驱动编程包括模块、字符设备、互斥与同步处理、I/O内存处理、中断处理、混杂设备、块设备等。含源码,每个驱动代码都有详细注释说明

    混杂按键驱动

    linux平台混杂按键驱动 混杂设备驱动 按键驱动 linux

    128*64点阵LCD在linux下驱动程序

    在S3C2440底板上,linux操作系统的128*64点阵LCD驱动程序,LCD使用的是ST7565R控制器,驱动中使用混杂设备驱动模型

    《精通Linux 设备驱动程序开发》.(Sreekrishnan).pdf

     本书是linux设备驱动程序开发领域的权威著作。全书基于2.6内核,不仅透彻讲解了基本概念和技术,更深入探讨了其他书没有涵盖或浅尝辄止的许多重要主题和关键难点,如pcmcia、i2c和usb等外部总线以及视频、音频、...

    论文研究-混杂系统的扩展时间自动机模型及验证研究.pdf

    混杂系统复杂度高且涉及领域广,没有通用的方法来解决分析、设计等问题。为解决一类工业控制混杂系统的建模和验证问题,对时间自动机进行了语义扩展,使其含有连续变量以及映射在其上的约束,使用扩展后的时间自动机...

    Linux混杂设备驱动(watchdog)

    Misc(或miscellaneous)驱动是一些拥有着共同特性的简单字符设备驱动。内核抽象出这些特性而形成一些API(在文件drivers/char/misc.c中实现),以简化这些设备驱动程序的初始化。所有的misc设备被分配同一个主设备...

    linux驱动编程速成

    详细讲解linux驱动程序的编写,及相关技术,包括内核模块、混杂设备、IO端口、阻塞与非阻塞、系统中断等

    字符设备LED驱动程序

    所有的驱动程序都应该对应一个具体的设备,这个LED驱动当然设备应该是LED。但是linux将它分成了一类叫做混杂设备。这类设备共享一个主设备号,但次设备号不同所有混杂设备形成一个链表,要访问一个设备时根据次设备...

    大数据-算法-混杂控制系统的Benders分解算法.pdf

    大数据-算法

    论文研究-混杂系统故障诊断的强跟踪滤波器方法.pdf

    为精确加工出磨牙牙合面的几何形状,以保证磨牙修复体的咬合功能,需将磨牙的牙合面划分为一系列区内曲率相近的沟、窝、嵴等特征区域分别进行加工。介绍了在磨牙STL模型中,人机交互式确定特征区域边界的方法。...

Global site tag (gtag.js) - Google Analytics