linux内核一般对象管理
扫描二维码
随时随地手机看文章
一.kobject管理
struct kobject {
const char *name;
struct list_head entry;
struct kobject *parent;
struct kset *kset;
struct kobj_type *ktype;
struct sysfs_dirent *sd;
struct kref kref;
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;
unsigned int uevent_suppress:1;
};
Kobject不是通过指针与其他数据结构连接起来的,而必须直接嵌入。这样做通过管理kobject就可以达到包含kobject对象的管理。
例如:
Struct sample
{
Struct kobject kobj;
}
1.Name是对象的文本名称。可利用sysfs导出到用户空间。Sysfs是一个虚拟文件系统,可以将系统的各种属性导出到用户空间。Sd用于支持内核对象与sysfs之间的关联。
2.kref类型为struct kref,用于简化引用计数的管理。
3.entry是一个标准的链表元素,用于将若干kobject放在一个链表中
4.kset:将对象与其他对象放置在一个集合,
5.parent:是一个指向父对象的指针,可用于在kobject之间建立层次结构。
6.ktype提供了包含kobject数据结构的更多详细信息。