以下所说内容都是Linux4.10.10;
1.kobject
kobject的结构体如下所示:
struct kobject {
const char *name; //kobj的名字
struct list_head entry; //kset的链表
struct kobject *parent; //kobject的父节点 若在初始化过程中为NULL,则父节点为kset中的kobject
struct kset *kset; //kobject的kset
struct kobj_type *ktype; //类型,里面存储着默认的文件
struct kernfs_node *sd; /* sysfs directory entry */
struct kref kref; //里面为原子变量,引用计数
#ifdef CONFIG_DEBUG_KOBJECT_RELEASE
struct delayed_work release;
#endif
unsigned int state_initialized:1;
unsigned int state_in_sysfs:1;
unsigned int state_add_uevent_sent:1;
unsigned int state_remove_uevent_sent:1