zoukankan      html  css  js  c++  java
  • 混杂设备驱动模型

    一、混杂设备

      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);
  • 相关阅读:
    AOP第一个例子
    初学Spring
    MyBatis延迟加载,缓存的使用
    MyBatis关联查询
    MyBatis的基本操作(02)-----Seeeion.commit引起事务的提交,多条件查询,智能标签的应用,ResultMap结果映射
    Js练习题之查找字符串中出现最多的字符和个数
    Js练习题之字符串转驼峰
    Js笔试题之正则表达式
    Js笔试题之千分位格式化
    Js笔试题之parseInt()和.map()
  • 原文地址:https://www.cnblogs.com/51qianrushi/p/4294589.html
Copyright © 2011-2022 走看看