Linux设备驱动编程---miscdevice杂类设备的使用方法

miscdev简称杂类设备
杂类设备就是对字符设备驱动做一个封装,方便简单
使用杂类设备封装字符设备需要包含的头文件:
#include <linux/miscdevice.h>
(1)杂类设备的数据结构:

struct miscdevice  {
	int minor;      //次设备号
	const char *name; //设备名称
	const struct file_operations *fops; //文件操作结构体
	struct list_head list;
	struct device *parent;
	struct device *this_device;
	const char *nodename;
	mode_t mode;
};

(2)杂类设备注册和解除注册相关函数

int misc_register(struct miscdevice * misc);
int misc_deregister(struct miscdevice *misc);

(3)如何使用?
下面的这个xxx_fops就是字符设备操作的文件操作结构体

static struct file_operations xxx_fops = {
	.owner = THIS_MODEULE ,
	.read = ...,
	....
};

首先定义一个杂类设备结构体并初始化:

static struct misedevice xxx_dev = {
	.minor = xxx,	//对应设备的次设备号
	.name  = xxx,   //对应设备的设备名称
	.fops  = &xxx_fops , //文件指针
} ;

在初始化函数

static int __init  xxx_init(void)
{
	//注册杂类设备
	misc_register(&xxx_dev);
}

在注销函数

static void __exit  xxx_exit(void)
{
	//注销杂类设备
	misc_deregister(&xxx_dev);
}

就是这么简单!!!^_^!!!

时间: 2024-10-29 20:59:56

Linux设备驱动编程---miscdevice杂类设备的使用方法的相关文章

java类的问题-java编程,有关类的继承,方法的覆盖等

问题描述 java编程,有关类的继承,方法的覆盖等 类Citizen,拥有identityCardNumber(String).name(String).gender(char).birthPlace(String).birthday(java.util.Date)属性,构造方法Citizen(String identityCardNumber, String name, char gender).Citizen(String identityCardNumber, String name, c

Linux块设备驱动之内存模拟块设备

用内存代替块设备的总结,相对来简单得多,对内存操作想必大家都很熟悉,直接分配一块内存就可以直接读写操作了 /* 参考:  * drivers\block\xd.c  * drivers\block\z2ram.c  */ #define RAMBLOCK_SIZE (1024*1024)//一个扇区是512字节   static struct gendisk *ramblock_disk; static struct request_queue *ramblock_queue; static D

linux 内核驱动编程 简单例子 与_IO, _IOR, _IOW, _IOWR 宏解析

一._IO, _IOR, _IOW, _IOWR 宏的用法与解析 在驱动程序里, ioctl() 函数上传送的变量 cmd 是应用程序用于区别设备驱动程序请求处理内容的值.cmd除了可区别数字外,还包含有助于处理的几种相应信息. cmd的大小为 32位,共分 4 个域:bit31~bit30 2位为 "区别读写" 区,作用是区分是读取命令还是写入命令.bit29~bit15 14位为 "数据大小" 区,表示 ioctl() 中的 arg 变量传送的内存大小.bit2

通过编程使用ThreadMXBean类发现Java死锁方法实例

死锁是指,两个或多个动作一直在等待其他动作完成而使得所有动作都始终处在阻塞的状态.想要在开发阶段检测到死锁是非常困难的,而想要解除死锁往往需要重新启动程序.更糟的是,死锁通常发生在负载最重的生产过程中,而想要在测试中发现它,十分不易.之所以这么说,是因为测试线程之间所有可能的交叉是不现实的.尽管出现了一些静态分析库可以帮助我们发现可能出现的死锁,我们还是有必要在运行时检测到死锁,并且得到有用的信息,以便我们解决这个问题或者重启程序,或者做些其他的事情. 在编程中使用ThreadMXBean类来检

【Linux驱动】字符设备驱动

一.linux系统将设备分为3类:字符设备.块设备.网络设备.使用驱动程序: 1.字符设备:是指只能一个字节一个字节读写的设备,不能随机读取设备内存中的某一数据,读取数据需要按照先后数据.字符设备是面向流的设备,常见的字符设备有鼠标.键盘.串口.控制台和LED设备等. 2.块设备:是指可以从设备的任意位置读取一定长度数据的设备.块设备包括硬盘.磁盘.U盘和SD卡等. 每一个字符设备或块设备都在/dev目录下对应一个设备文件.linux用户程序通过设备文件(或称设备节点)来使用驱动程序操作字符设备

Linux与Windows的设备驱动模型对比:架构、API 和开发环境比较

名词缩写: API 应用程序接口(Application Program Interface ) ABI 应用系统二进制接口(Application Binary Interface) 设备驱动是操作系统的一部分,它能够通过一些特定的编程接口便于硬件设备的使用,这样软件就可以控制并且运行那些设备了.因为每个驱动都对应不同的操作系统,所以你就需要不同的 Linux.Windows 或 Unix 设备驱动,以便能够在不同的计算机上使用你的设备.这就是为什么当你雇佣一个驱动开发者或者选择一个研发服务商

Linux 与 Windows 的设备驱动模型对比:架构、API 和开发环境比较

名词缩写: API 应用程序接口Application Program Interface ABI 应用系统二进制接口Application Binary Interface 设备驱动是操作系统的一部分,它能够通过一些特定的编程接口便于硬件设备的使用,这样软件就可以控制并且运行那些设备了.因为每个驱动都对应不同的操作系统,所以你就需要不同的 Linux.Windows 或 Unix 设备驱动,以便能够在不同的计算机上使用你的设备.这就是为什么当你雇佣一个驱动开发者或者选择一个研发服务商提供者的时

《Android深度探索(卷1):HAL与驱动开发》——1.6节 Linux设备驱动

1.6 Linux设备驱动Android深度探索(卷1):HAL与驱动开发随着计算机技术的不断发展,与计算机(也包括手机等计算设备)相关的硬件设备的种类也不断丰富起来.这就需要大量的Linux设备驱动来与这些硬件设备进行交互.为了使读者在学习如何编写Linux驱动之前对Linux驱动有一个初步的认识,本节介绍了设备驱动在整个操作系统中的作用以及设备驱动的分类. 1.6.1 设备驱动的发展和作用任何一台计算机系统的运行都是由软硬件共同作用的结果,没有硬件的软件是空中楼阁,而没有软件的硬件则是一堆废

【Linux高级驱动】linux设备驱动模型之平台设备驱动机制【转】

[1:引言: linux字符设备驱动的基本编程流程] 转自:http://www.cnblogs.com/lcw/p/3802579.html1.实现模块加载函数  a.申请主设备号    register_chrdev(major,name,file_operations);  b.创建字符设备cdev,注册字符设备    cdev_alloc cdev_init cdev_add   c.创建设备文件    class_create device_create  d.注册中断    ret