`
helloyesyes
  • 浏览: 1306718 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

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混杂设备驱动讲解 Linux系统中,字符设备是一种基本的设备类别,可以按字节流的方式进行读写操作。字符设备驱动负责管理字符设备,实现与设备硬件通信的接口,向用户空间提供操作设备的系统调用接口。混杂设备...

    linux混杂设备

    在Linux操作系统中,混杂设备是一种特殊的字符设备,它在内核中抽象出一组通用的API,简化了这类设备驱动程序的编写和初始化过程。混杂设备驱动通常用于控制简单硬件设备,如GPIO(通用输入输出)口控制和WatchDog...

    OK6410 linux混杂设备驱动LED

    本主题将深入探讨OK6410开发板上的Linux混杂设备驱动LED的实现,以及如何使用3.0.1内核进行编译。我们将讨论驱动程序的基本结构、混杂设备的概念、LED驱动的工作原理,以及如何编写和测试此类驱动。 首先,让我们...

    linux驱动学习(七)之混杂设备(GEC6818按键+LED+蜂鸣器)

    linux驱动学习(七)之混杂设备(GEC6818按键+LED+蜂鸣器) 详细介绍:https://blog.csdn.net/ckg3824278/article/details/139526569

    混杂字符设备之LED设备驱动设计

    混杂字符设备是一种特殊的Linux设备模型,主要用于那些不完全符合标准字符设备模型或者需要特殊处理的设备。在Linux内核中,它们通过主设备号10进行标识,并且通过次设备号来区分不同的混杂设备。设备驱动设计时,...

    Linux驱动编程思维导图

    "Linux驱动编程思维导图"涵盖了多个关键领域,包括内核模块设计、硬件访问技术、字符设备驱动编程、字符设备控制、混杂设备驱动编程以及工作队列驱动编程。以下是对这些知识点的详细解释: 1. **内核模块设计**:...

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

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

    精通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驱动学习下学期1

    在Linux系统中,驱动程序是操作系统与硬件设备之间的桥梁,它们负责抽象硬件功能,使得操作系统可以高效、方便地管理和使用硬件资源。本课程"Linux驱动学习下学期1"涵盖了多个关键主题,旨在深入理解Linux内核中的...

    Linux混杂设备驱动(watchdog)

    Linux混杂设备驱动,也称为Misc驱动,是一种用于简化简单字符设备驱动程序初始化的方法。它主要针对具有共同特性的设备,这些特性被内核抽象成API,这些API在`drivers/char/misc.c`中实现。混杂设备共享同一个主设备...

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

    因此,我们需要采取特别的手段来实现截获流经网络设备的所有数据包,即将网卡设置为混杂模式。这样一来,该主机的网卡就可以捕获到所有流经其网卡的数据包和帧。但是要注意一点,这种截获仅仅是数据包的一份拷贝,而...

    linux-网卡驱动.zip

    在Linux系统中,网卡驱动是操作系统与硬件设备之间的桥梁,负责处理数据传输任务。本压缩包中的资源主要围绕DM9000网卡及其在Linux环境下的驱动开发进行讲解。DM9000是一款广泛使用的以太网控制器,具备LED指示灯、...

    Linux字符设备驱动基本框架

    本文将详细讲解Linux字符设备驱动的基本框架,包括混杂设备、外部中断处理以及输入子系统的使用。 首先,让我们关注混杂设备。混杂设备是一种特殊的字符设备,它的主设备号是固定的,通常为10。与常规字符设备不同...

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

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

    linux双网卡绑定 bonding

    Bonding 驱动可以在混杂模式下工作,以提供高可靠性和大吞吐量网络配置。 配置 Bonding 用于高可靠性 --------------------------- Bonding 驱动可以用于高可靠性网络配置,包括: * 单一 Switch 下的高可靠性...

    Linux驱动编程(含源码)

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

    混杂按键驱动

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

    Linux底层知识(17).docx

    首先,Linux将设备分为四类:字符设备、块设备、网络设备以及混杂设备。字符设备是以字节为单位进行访问的设备,如串口;块设备则是以扇区为单位读写的,如硬盘;网络设备如网卡。混杂设备是一种特殊的设备,它的主...

    海思SDK驱动部分.pdf

    海思SDK驱动部分主要涉及Linux驱动程序的设计与实现,这是操作系统与硬件设备之间的重要桥梁。Linux驱动程序运行在内核态,处理来自用户态应用程序的系统调用,使得应用程序能够方便地操作硬件,而无需直接与底层...

Global site tag (gtag.js) - Google Analytics