zoukankan      html  css  js  c++  java
  • Linux 内核 struct device 设备

    在最低层, Linux 系统中的每个设备由一个 struct device 代表:

    struct device { struct device *parent; struct kobject kobj; char bus_id[BUS_ID_SIZE]; struct bus_type *bus; struct device_driver *driver; void *driver_data; void (*release)(struct device *dev); /* Several fields omitted */ };

    有许多其他的 struct device 成员只对设备核心代码感兴趣. 但是, 这些成员值得了解: struct device *parent

    327

    设备的 "parent" 设备 -- 它所附着到的设备. 在大部分情况, 一个父设备是某种 总线或者主控制器. 如果 parent 是 NULL, 设备是一个顶层设备, 这常常不是你 所要的.

    struct kobject kobj;

    代表这个设备并且连接它到层次中的 kobject. 注意, 作为一个通用的规则, device->kobj->parent 等同于 device->parent->kobj.

    char bus_id[BUS_ID_SIZE];

    唯一确定这个总线上的设备的字符串. PCI 设备, 例如, 使用标准的 PCI ID 格式, 包含域, 总线, 设备, 和功能号.

    struct bus_type *bus; 确定设备位于哪种总线.

    struct device_driver *driver;

    管理这个设备的驱动; 我们查看 struct device_driver 在下一节. void *driver_data;

    一个可能被设备驱动使用的私有数据成员. void (*release)(struct device *dev);

    当对这个设备的最后引用被去除时调用的方法; 它从被嵌入的 kobject 的 release 方法被调用. 注册到核心的所有的设备结构必须有一个 release 方法, 否则内核打印出慌乱的抱怨.

    最少, parent, bus_id, bus, 和 release 成员必须在设备结构被注册前设置.

  • 相关阅读:
    AtCoder Grand Contest 032-B
    AtCoder Grand Contest 032 A
    高橋君とカード / Tak and Cards AtCoder
    Divisibility by 25 CodeForces
    Fire Again CodeForces
    cctype函数 (字符类型判断)
    蓝桥杯--- 历届试题 国王的烦恼 (并查集)
    蓝桥杯---买不到的数目
    算法课(经典贪心)
    完美的数字
  • 原文地址:https://www.cnblogs.com/fanweisheng/p/11147710.html
Copyright © 2011-2022 走看看