首页 > 代码库 > 【linux驱动分析】misc设备驱动
【linux驱动分析】misc设备驱动
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);
}
【linux驱动分析】misc设备驱动
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。