linux设备模型通过sysfs文件系统向用户展示了linux设备的拓扑图,其最基本的元素是kobject结构。每个kobject都对应一个sysfs文件系统中的一个文件夹,你可以将kobject理解为c++中的基类,每个要在sysfs文件系统中生成文件夹的设备都必须内嵌一个kobject结构。下面谈谈kobject的用法。
一.相关结构体
struct kobject
{
const char *name; //kobject名称,也就是文件夹的名字
struct kobject *parent; //父指针,所属的文件夹
struct kset *kset; //kobject对象的集合体
struct kobj_type *ktype; //文件的相应属性和操作
struct kref kref; //kobject引用计数
.......................
};
struct kobj_type
{
void (*release)(struct kobject *);//当kobject的引用计数为0时调用
struct sysfs_ops * sysfs_ops; //读该文件中属性(文件)时,将该属性(attribute结构)传给sysfs_ops中的show 函数,写类似。
struct attribute **default_attrs; //指针数组,每个指针指向一个属性,且最后一个元素为NULL
};
二.相关函数
/*功能:初始化并注册一个kobject,函数成功返回时,假如第三参数为NULL,在/sys/目录下会生成相应的文件夹,并且在该目录下会根据kobj_type生成相应的kobject属性
参数:需要注册的kobject,该kobject包含的kobj_type,所属上层kobject,该kobject名称
*/
int kobject_add_and_init(struct kobject*,struct kobj_type *,struct kobject*,chat *)
void kobject_del(struct kobject *)//注销kobject
阅读(2328) | 评论(2) | 转发(0) |