zoukankan      html  css  js  c++  java
  • Linux 内核管理类

    一个类由一个 struct class 的实例来定义:

    struct class { char *name;

    struct class_attribute *class_attrs;

    struct class_device_attribute *class_dev_attrs;

    int (*hotplug)(struct class_device *dev, char **envp, int num_envp, char *buffer, int buffer_size);

    void (*release)(struct class_device *dev); void (*class_release)(struct class *class);

    /* Some fields omitted */

    };

    每个类需要一个唯一的名子, 它是这个类如何在 /sys/class 中出现. 当这个类被注册, 由 class_attrs 所指向的数组中列出的所有属性被创建. 还有一套缺省属性给每个添加 到类中的设备; class_dev_attrs 指向它们. 有通常的热插拔函数来添加变量到环境中, 当事件产生时. 还有 2 个释放方法: release 在无论何时从类中去除一个设备时被调用, 而 class_release 在类自己被释放时调用.

    注册函数是:

    int class_register(struct class *cls); void class_unregister(struct class *cls);

    使用属性的接口不应当在这点吓人:

    struct class_attribute { struct attribute attr;

    ssize_t (*show)(struct class *cls, char *buf);

    ssize_t (*store)(struct class *cls, const char *buf, size_t count);

    };

    CLASS_ATTR(name, mode, show, store);

    int class_create_file(struct class *cls, const struct class_attribute *attr); void class_remove_file(struct class *cls, const struct class_attribute *attr);

  • 相关阅读:
    Inside Dynamics Axapta源代码赏析(五)
    Inside Dynamics Axapta源代码赏析(二)
    PHP查询显示关键字为红色
    textarea自适应高度
    背景图只显示一次,不循环,另外还有一个是PHP下的换行显示
    PHP格式化时间,形如(Wed 30,Jul 2008)
    实现页面加载中。。
    c++关于设置精度
    HDOJ 2662
    live Messenger
  • 原文地址:https://www.cnblogs.com/fanweisheng/p/11148002.html
Copyright © 2011-2022 走看看