kobject kset klist


struct kobject {
const char *name;  //名字
struct list_head entry; // 用来挂在 kset-》list上的
struct kobject *parent; // 父结点 可以是 kobj, kset-》obj ,空
struct kset *kset; //所属kset
struct kobj_type *ktype; // 所属类型
struct sysfs_dirent *sd; //sysfs 的目录
struct kref kref; //  引用计数
unsigned int state_initialized:1;  //初始化后置1
unsigned int state_in_sysfs:1;  // 创建目录后置1
unsigned int state_add_uevent_sent:1;  // kobj_add后置1
unsigned int state_remove_uevent_sent:1; //kobj——remove后置1
unsigned int uevent_suppress:1;  //用来控制丢弃uevnet位
};


struct kobj_type {
void (*release)(struct kobject *kobj);  //释放函数
const struct sysfs_ops *sysfs_ops;  //sysfs控制函数
struct attribute **default_attrs;  //默认属性
const struct kobj_ns_type_operations *(*child_ns_type)(struct kobject *kobj); 
const void *(*namespace)(struct kobject *kobj);
};


struct kset {
struct list_head list; //用来挂kobj-》entry
spinlock_t list_lock;  //操作list的锁
struct kobject kobj;  //kset的根kobj节点,完全利用其内容
const struct kset_uevent_ops *uevent_ops;
};




struct klist {
spinlock_t k_lock;  //操作链表的锁
struct list_head k_list; //用来挂klist_node-》n_node
void (*get)(struct klist_node *);  //顶层的初始化
void (*put)(struct klist_node *);  //顶层的释放函数
} __attribute__ ((aligned (sizeof(void *))));



struct klist_node {
void *n_klist; //指向klist
struct list_head n_node;  //挂在klist-》k_list
struct kref n_ref;   //引用计数
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值