jimmyhua的笔记 https://passport2.21ic.com/?74262 [收藏] [复制] [RSS]

日志

linux内核一般对象管理

已有 473 次阅读2011-2-16 07:45 |个人分类:ARM技术|系统分类:ARM

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数据结构的更多详细信息。


 


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)