linux驱动分析misc设备驱动
Posted gccbuaa
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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设备驱动的主要内容,如果未能解决你的问题,请参考以下文章