• Linux 内核class_simple 接口


    class_simple 接口意图是易于使用, 以至于没人会抱怨没有暴露至少一个包含设备的被 分配的号的属性. 使用这个接口只不过是一对函数调用, 没有通常的和 Linux 设备模型 关联的样板.

    第一步是创建类自身. 使用一个对 class_simple_create 的调用来完成:

    struct class_simple *class_simple_create(struct module *owner, char *name);

    这个函数使用给定的名子创建一个类. 这个操作可能失败, 当然, 因此在继续之前返回值 应当一直被检查( 使用 IS_ERR, 在第 1 章的"指针和错误值"一节中描述过).

    一个简单的类可被销毁, 使用:

    void class_simple_destroy(struct class_simple *cs); 创建一个简单类的真实目的是添加设备给它; 这个任务使用:

    struct class_device *class_simple_device_add(struct class_simple *cs, dev_t devnum, struct device *device, const char *fmt, ...);

    这里, cs 是之前创建的简单类, devnum 是分配的设备号, device 是代表这个设备的 struct device, 其他的参数是一个 printk-风格 的格式串和参数来创建设备名子. 这个 调用添加一项到类, 包含一个属性, dev, 含有设备号. 如果设备参数是非 NULL, 一个符 号连接( 称为 device )指向在 /sys/devices 下的设备的入口.

    可能添加其他的属性到设备入口. 它只是使用 class_device_create_file, 我们在下一 节和完整类子系统所剩下的内容讨论.

    当设备进出时类产生热插拔事件. 如果你的驱动需要添加变量到环境中给用户空间事件处 理者, 可以建立一个热插拔回调, 使用:

    int class_simple_set_hotplug(struct class_simple *cs, int (*hotplug)(struct class_device *dev,

    char **envp, int num_envp,

    char *buffer, int buffer_size)); 当你的设备离开时, 类入口应当被去除, 使用: void class_simple_device_remove(dev_t dev);

    注意, 由 class_simple_device_add 返回的 class_device 结构这里不需要; 设备号(它 当然应当是唯一的)足够了.

  • 相关阅读:
    树链剖分-bzoj1036
    POJ3489企鹅
    51nod 1130
    51nod-8-16
    51nod-8-15
    51nod 8-14
    51nod1582-n叉树
    51nod1574排列转换
    51nod1785数据流中的算法
    iOS开发--Swift 最近项目开发中遇到的一些小问题与解决方法
  • 原文地址:https://www.cnblogs.com/fanweisheng/p/11148000.html
Copyright © 2020-2023  润新知