1 / 6
文档名称:

Linux驱动修炼之道-混杂设备.doc

格式:doc   页数:6页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

Linux驱动修炼之道-混杂设备.doc

上传人:511709291 2015/12/4 文件大小:0 KB

下载得到文件列表

Linux驱动修炼之道-混杂设备.doc

相关文档

文档介绍

文档介绍:Linux驱动修炼之道-混杂设备
在Linux驱动中把无法归类的五花八门的设备定义为混杂设备(用miscdevice结构体表述)。miscdevice共享一个主设备号MISC_MAJOR(即10),但次设备号不同。所有的miscdevice设备形成了一个链表,对设备访问时内核根据次设备号查找对应的miscdevice设备,然后调用其file_operations结构中注册的文件操作接口进行操作。在内核中用struct miscdevice表示miscdevice设备,然后调用其file_operations结构中注册的文件操作接口进行操作。miscdevice的API实现在drivers/char/。
下边是描述这个设备的结构体:
struct miscdevice  {      
    int minor;                               //次设备号   
    const char *name;                        //设备的名称      
    const struct file_operations *fops;     //文件操作    
    struct list_head list;                  //misc_list的链表头  
    struct device *parent;                  //父设备(Linux设备模型中的东东了,哈哈)      
    struct device *this_device;             //当前设备,是device_create的返回值,下边会看到  
};  
然后来看看misc子系统的初始化函数:
static int __init misc_init(void)   
{   
    int err;   
  
#ifdef CONFIG_PROC_FS   
    /*创建一个proc入口项*/  
    proc_create("misc", 0, NULL, &misc_proc_fops);                   
#endif   
    /*在/sys/class/目录下创建一个名为misc的类*/  
    misc_class = class_create(THIS_MODULE, "misc");   
    err = PTR_ERR(misc_class);   
    if (IS_ERR(misc_class))   
        goto fail_remove;   
   
    err = -EIO;  
    /*注册设备,其中设备的主设备号为MISC_MAJOR,为10。设备名为misc,misc_fops是操作函数的集合*/   
    if (register_chrdev(MISC_MAJOR,"misc"