【linux驱动分析】misc设备驱动
2014-04-22 13:49
274 查看
misc设备驱动,又称混杂设备驱动。misc设备驱动共享一个设备驱动号MISC_MAJOR,它在include\linux\major.h中定义:
#define MISC_MAJOR 10
miscdevice的结构体如下,它在include\linux\miscdevice.h中定义:
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;
};
misc设备驱动的注册和注销时用这两个函数,他们也定义在include\linux\miscdevice.h中:
extern int misc_register(struct miscdevice * misc);
extern int misc_deregister(struct miscdevice *misc);
例子:
再分配此设备号时,可以设为MISC_DYNAMIC_MINOR,这样会自动分配此设备号,如:
static struct miscdevice misc = {
.minor = MISC_DYNAMIC_MINOR,
.name = DEVICE_NAME,
.fops = &dev_fops,
};
下面的是file_operations结构体:
static struct file_operations dev_fops = {
.owner = THIS_MODULE,
.unlocked_ioctl = sbc2440_leds_ioctl,
};
注册和注销函数:
static int __init dev_init(void)
{
int ret;
…………
ret = misc_register(&misc);
printk (DEVICE_NAME"\tinitialized\n");
return ret;
}
static void __exit dev_exit(void)
{
misc_deregister(&misc);
}
#define MISC_MAJOR 10
miscdevice的结构体如下,它在include\linux\miscdevice.h中定义:
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;
};
misc设备驱动的注册和注销时用这两个函数,他们也定义在include\linux\miscdevice.h中:
extern int misc_register(struct miscdevice * misc);
extern int misc_deregister(struct miscdevice *misc);
例子:
再分配此设备号时,可以设为MISC_DYNAMIC_MINOR,这样会自动分配此设备号,如:
static struct miscdevice misc = {
.minor = MISC_DYNAMIC_MINOR,
.name = DEVICE_NAME,
.fops = &dev_fops,
};
下面的是file_operations结构体:
static struct file_operations dev_fops = {
.owner = THIS_MODULE,
.unlocked_ioctl = sbc2440_leds_ioctl,
};
注册和注销函数:
static int __init dev_init(void)
{
int ret;
…………
ret = misc_register(&misc);
printk (DEVICE_NAME"\tinitialized\n");
return ret;
}
static void __exit dev_exit(void)
{
misc_deregister(&misc);
}
相关文章推荐
- 【linux驱动分析】misc设备驱动
- [转]Linux网络协议栈分析——从设备驱动到链路层
- Linux设备驱动之I2C架构分析
- Linux 设备驱动之 UIO 用户态驱动优缺点分析
- Linux内核部件分析--设备驱动模型之device-driver
- Linux spi驱动分析(四)----SPI设备驱动(W25Q32BV)
- Linux设备模型之tty驱动架构分析
- Writing Linux LCD drivers—深入分析framebuffer设备驱动的结构
- Linux驱动学习5(详细分析字符设备驱动信号量实现互斥)
- Linux内核部件分析--设备驱动模型之device
- Linux网络协议栈分析——从设备驱动到链路层
- Linux设备模型之tty驱动架构分析
- Linux设备模型之tty驱动架构分析(转载)
- Linux设备驱动之I2C架构分析
- linux串口驱动分析——打开设备
- Linux I2C设备驱动编写(三)-实例分析AM3359
- linux内核部件分析(七)——设备驱动模型之driver
- linux 驱动程序 设备模块 设备号 设备文件创建 设备注册 字符驱动设备分析
- linux设备驱动之USB数据传输分析 二
- [转载]Linux设备驱动之I2C架构分析 - linux设备驱动 - Linux内核学习