加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

Linux 内核管理类

发布时间:2020-12-13 22:44:26 所属栏目:Linux 来源:网络整理
导读:一个类由一个 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 buf

一个类由一个 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);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读