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

  • 相关阅读:
    SpringBoot打jar包以及打成war包 (springboot2.0)
    学习软件开发的心得
    SQA计划
    继续冲吧
    别跑了,看看脚下有木有money
    springIOC的那些事
    ssm
    scrum 第二次冲刺
    云医院
    团队项目开发总结
  • 原文地址:https://www.cnblogs.com/fanweisheng/p/11148002.html
Copyright © 2011-2022 走看看