您的位置:首页 > 运维架构 > Linux

【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);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: