error = sysfs_create_dir_ns(kobj, kobject_namespace(kobj)); //为kobject创建目录 if (error) return error; error = populate_dir(kobj); //填充kobj的属性 if (error) { sysfs_remove_dir(kobj); return error; } /* * @kobj->sd may be deleted by an ancestor going away. Hold an * ex...
const struct kobj_ns_type_operations *(*child_ns_type)(struct kobject *kobj); const void *(*namespace)(struct kobject *kobj); }; release:指向释放对象资源的函数指针。当对象的引用计数变为零时,将调用此函数来释放对象相关的资源。 sysfs_ops:指向struct sysfs_ops的指针,用于定义sysfs文件系统操作...
sysfs_create_dir_ns(kobj, kobject_namespace(kobj)); //fs/sysfs/dir.c kernfs_create_dir_ns //fs/kernfs/dir.c 创建 kernfs_node * kn目录,union配置为kernfs_elem_dir kernfs_new_node kernfs_add_one 设置kobject->sd为kn populate_dir(kobj); //为默认的default_attrs[]创建文件属性 sysfs_crea...
*/structattribute **default_attrs;/*child_ns_type/namespace 是 文件系统命名空间相关)略*/conststructkobj_ns_type_operations *(*child_ns_type)(structkobject *kobj);constvoid*(*namespace)(structkobject *kobj); };//linux/sysfs.hstructsysfs_ops { ssize_t (*show)(structkobject *,structattr...
所谓attribute,就是sysfs文件系统中的文件,将会在Kobject添加到内核时,一并注册到sysfs中5conststructkobj_ns_type_operations *(*child_ns_type)(structkobject *kobj);6constvoid*(*namespace)(structkobject *kobj);//文件系统(sysfs)的命名空间相关7};89structsysfs_ops {10ssize_t (*show)(structkobject...
如果没有父结点不存在,就在/sys下面创建结点*/if(kobj->parent)parent_sd = kobj->parent->sd;elseparent_sd = &sysfs_root;if(sysfs_ns_type(parent_sd))ns = kobj->ktype->namespace(kobj);type = sysfs_read_ns_type(kobj);//在sysfs中创建目录error = create_dir(kobj, parent_sd, type, ns...
child_ns_type/namespace:和文件系统(sysfs)的命名空间有关,这里不再详细说明。 3.2.4 整个kobject机制的理解 kobject的核心功能是:保持一个引用计数,当该计数减为0时,自动释放(由本文所讲的kobject模块负责) kobject所占用的meomry空间。这就决定了kobject必须是动态分配的,因为只有这样才能动态释放。
//include/linux/kobject.h 116 struct kobj_type { 117 void (*release)(struct kobject *kobj); 118 const struct sysfs_ops *sysfs_ops; 119 struct attribute **default_attrs; 120 const struct kobj_ns_type_operations *(*child_ns_type)(struct kobject *kobj); 121 const void *(*namespace)...
struct sysfs_ops { ssize_t (*show)(struct kobject *, struct attribute *,char *); 读属性操作函数 ssize_t (*store)(struct kobject *,struct attribute *,const char *, size_t); 写属性操作函数 const void *(*namespace)(struct kobject *, const struct attribute *); }; ...
child_ns_type/namespace,和文件系统(sysfs)的命名空间有关,这里不再详细说明。 总结,Ktype以及整个Kobject机制的理解。Kobject的核心功能是:保持一个引用计数,当该计数减为0时,自动释放(由本文所讲的kobject模块负责)Kobject所占用的meomry空间。这就决定了Kobject必须是动态分配的(只有这样才能动态释放)。而Ko...