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设备驱动的主要内容,如果未能解决你的问题,请参考以下文章

linux设备驱动之misc驱动框架源码分析

Linux MISC 驱动实验

Linux misc设备misc驱动框架

Linux驱动开发MISC

内核的misc驱动框架详解:内核源码分析蜂鸣器驱动分析

linux MISC设备驱动