Linux 内核管理类

Linux 内核管理类,第1张

概述一个类由一个 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

一个类由一个 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 内核管理类所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/1017291.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存