设备类struct class是一个设备的高级视图,它抽象出低级的实现细节。例如,驱动可以见到一个SCSI磁盘或者一个ATA磁盘,在类的级别,他们都是磁盘,类允许用户空间基于它们作什么来使用设备,而不是它们如何被连接或者它们如何工作。 struct class{ const char *name; //类名称 struct module *owner; //对应模块 struct subsystem subsys; //对应的subsystem; struct list_head children; //class_device链表 struct list_head interfaces; //class_interface链表 struct semaphore sem; //用于同步的信号锁 struct class_attribute *class_attrs; //类属性 int (*uevent)(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); //释放类 }
调用函数: int class_register(struct class *cls); 用于注册 用于注销
struct kobject kobj; //内嵌的kobject,用于计数 struct class *class; //所属的类; dev_t devt; //dev_t设备号 struct class_device_attribute *devt_attr; struct class_device_attribute uevent_attr; struct device *dev; //如果存在,创建到/sys/devices相应入口的符号链接 void *class_data; //私有数据 struct class_device *parent; //父设备 void (*release)(struct class_device *dev); //释放对应类实际设备的方法 int(*uevent)(struct class_device *dev,char **envp, char class_id[BUS_IO_SIZE]; //类标志 调用函数: int class_device_register(struct class_device *class_dev); 用于注册 用于注销
相关结构体 struct class_interface 调用函数: 用于注册 |
|
来自: nt_bookworm > 《驱动》