Linux 设备模型 类应用,Linux设备模型中的kobject使用

本文介绍了在Linux系统中如何使用kobject结构创建目录,并详细解析了kobject_init_and_add函数的用法。kobject结构与kobj_type结构共同定义了目录及其文件属性。sysfs_ops结构包含了文件的显示(show)和存储(store)操作,分别在读取和写入属性文件时被调用。属性文件由struct attribute数组定义,包含文件名、所有者和保护模式等信息。
摘要由CSDN通过智能技术生成

要在目录/sys/下创建一个目录,就需要向内核注册一个kobject结构。

该结构就是该目录的一个载体。而该结构的属性由struct kobj_type来保存。

注册kojbect的方法为:

/*初始化 kobject结构*/

void kobject_init(struct kobject * kobj);

/*将kobject对象注册到linux系统*/

Int kobject_add(struct kobject * kobj);

或者将上面两步合为一步:

Int kobject_init_and_add(struct kobject * kobj, struct kobj_type * ktype

Struct kobject *parent, const char * fmt, ...);

目录下的文件文件和其操作都在 struct kobj_type中定义:

struct kobj_type {

void (*release)(struct kobject *kobj);

struct sysfs_ops *sysfs_ops;/*文件操作*/

struct attribute **default_attrs;/*文件定义*/

};

文件的操作:

struct sysfs_ops {

ssize_t (*show)(struct kobject *kobj, struct attribute *attr,

char *buffer);

ssize_t (*store)(struct kobject *kobj, struct attribute *attr,

const char *buffer, size_t size);

};

Show: 当用户读属性文件时,该函数被调用,该函数将属性值存入buffer中返回给用户态。

store: 当用户写属性文件时,该函数被调用,用于存储用户传入的属性值。

文件的定义:

目录下的文件由struct attribute **default_attrs; 数组来定义,该结构如下:

struct attribute {

char *name;/*属性文件名*/

struct module *owner;

mode_t mode;/*属性的保护位*/

};0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值