一个类由一个 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);
总结以上是内存溢出为你收集整理的Linux 内核管理类全部内容,希望文章能够帮你解决Linux 内核管理类所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)