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 结构这里不需要; 设备号(它 当然应当是唯一的)足够了. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |