Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7687899
  • 博文数量: 961
  • 博客积分: 15795
  • 博客等级: 上将
  • 技术积分: 16612
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-07 14:23
文章分类

全部博文(961)

文章存档

2016年(1)

2015年(61)

2014年(41)

2013年(51)

2012年(235)

2011年(391)

2010年(181)

分类: 嵌入式

2012-07-27 17:22:49

    kset最重要的是建立上层(sub-system)和下层的(kobject)的关联性。kobject 也会利用它了分辨自已是属于那一個类型,然後在/sys 下建立正确的目录位置。而kset 的优先权比较高,kobject会利用自已的*kset 找到自已所属的kset*ktype 指定成該kset下的ktype,除非沒有定义kset,才会用ktype來建立关系。Kobject通过kset组织成层次化的结构,kset是具有相同类型的kobject的集合,在内核中用kset数据结构表示,定义为:

点击(此处)折叠或打开

  1. struct kset
  2. {
  3.     struct subsystem * subsys; //所在的subsystem的指针
  4.     struct kobj type * ktype; //指向该kset对象类型描述符的指针
  5.     struct list head list; //用于连接该kset中所有kobject的链表头
  6.     struct kobject kobj; //嵌入的kobject
  7.     struct kset hotplug ops * hotplug ops; //指向热插拔操作表的指针
  8. };

包含在kset中的所有kobject被组织成一个双向循环链表,list域正是该链表的头。Ktype域指向一个kobj type结构,被该kset中的所有kobject共享,表示这些对象的类型。Kset数据结构还内嵌了一个kobject对象(由kobj域表示),所有属于这个kset kobject对象的parent域均指向这个内嵌的对象。此外,kset还依赖于kobj维护引用计数:kset的引用计数实际上就是内嵌的kobject对象的引用计数。

见图1ksetkobject的关系图

 

点击(此处)折叠或打开

  1. 相关函数与kobject 相似,
  2. kset_init()    //完成指定kset的初始化,
  3. kset_get()和kset_put()    //分别增加和减少kset对象的引用计数。
  4. Kset_add()和kset_del() //函数分别实现将指定keset对象加入设备层次和从其中删除;
  5. kset_register()    //函数完成kset的注册而
  6. kset_unregister() //函数则完成kset的注销。


 


阅读(1759) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~