码迷,mamicode.com
首页 > 其他好文 > 详细

混杂设备驱动模型

时间:2015-02-16 23:21:50      阅读:252      评论:0      收藏:0      [点我收藏+]

标签:

一、混杂设备

  Linux驱动中把无法归类的五花八门的设备定义为混杂设备(用miscdevice结构体表述)。miscdevice共享一个主设备号MISC_MAJOR(即10),但次设备号不同。 所有的miscdevice设备形成了一个链表,对设备访问时内核根据次设备号查找对应的miscdevice设备,然后调用其file_operations结构中注册的文件操作接口进行操作。 在内核中用struct miscdevice表示miscdevice设备,然后调用其file_operations结构中注册的文件操作接口进行操作。
  miscdevice结构体:

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;
};

二、初始化驱动描述结构
  初始化时仅初始化minor、name、fops这几个成员,其他的成员内核会自动进行初始化。minor为次设备号,name为设备名,fops为应用程序与驱动程序函数接口。

1 struct miscdevice key_miscdev = 
2 {
3     .minor = 200,
4     .name = "key",
5     .fops = &key_fops,
6 };

三、注册设备
  注册设备函数:misc_register
  函数原型:int    misc_register(struct miscdevice * misc)
  参数:设备描述结构体指针

/*注册设备*/
misc_register(&key_miscdev);

  该函数通常在模块初始化函数中被调用。

四、注销设备

  注销设备函数:misc_deregister

  函数原型:int    demisc_register(struct miscdevice * misc)

  参数:设备描述结构体指针

1 /*注销设备*/
2 misc_deregister(&key_miscdev);

 

混杂设备驱动模型

标签:

原文地址:http://www.cnblogs.com/51qianrushi/p/4294589.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!