很多情况, 一个 kset 看来象一个 kobj_type 结构的扩展; 一个 kset 是一个嵌入到相 同类型结构的 kobject 的集合. 但是, 虽然 struct kobj_type 关注的是一个对象的类 型, struct kset 被聚合和集合所关注. 这 2 个概念已被分开以至于一致类型的对象可 以出现在不同的集合中.

因此, 一个 kset 的主要功能是容纳; 它可被当作顶层的给 kobjects 的容器类. 实际上, 每个 kset 在内部容纳它自己的 kobject, 并且它可以, 在许多情况下, 如同一个 kobject 相同的方式被对待. 值得注意的是 ksets 一直在 sysfs 中出现; 一旦一个

kset 已被建立并且加入到系统, 会有一个 sysfs 目录给它. kobjects 没有必要在 sysfs 中出现, 但是每个是 kset 成员的 kobject 都出现在那里.

增加一个 kobject 到一个 kset 常常在一个对象创建时完成; 它是一个 2 步的过程.
kobject 的 kset 成员必须 ???; 接着 kobject 应当被传递到:

int
kobject_add(struct kobject *kobj);

如常, 程序员应当小心这个函数可能失败(在这个情况下它返回一个负错误码)并且相应地 反应. 有一个内核提供的方便函数:

extern int kobject_register(struct kobject *kobj); 这个函数仅仅是一个
kobject_init 和 kobject_add 的结合.

当一个
kobject 被传递给 kobject_add, 它的引用计数被递增. kset 中容纳的, 毕竟, 是一个对这个对象的引用. 某种意义上, kobject
可能要必须从 kset 中移出来清除这个 引用; 完成这个使用:

void
kobject_del(struct kobject *kobj);

还有一个
kobject_unregister 函数, 是 kobject_del 和 kobject_put 的结合.

一个
kset 保持它的子女在一个标准的内核链表中. 在大部分情况下, 被包含的 kobjects 也有指向这个 kset 的指针( 或者, 严格地, 它的嵌入
kobject)在它们的 parent 的成员. 因此, 典型地, 一个 kset 和它的 kobjects 看来有些象你在图 一个简 单的 kset 层次中所见.
记住:

所有的被包含的 kobjects 实际上被嵌入在一些其他类型中, 甚至可能其 他的 ksets.

  • 一个 kobject 的 parent 不要求是包含 kset( 尽管任何其他的组织可能是奇怪的 和稀少的).

最新文章

  1. Mysql常用命令详解
  2. easyui DataGrid 工具类之 列属性class
  3. javascript --- 将共享属性迁移到原型中去
  4. DataTable 分页
  5. Hibernate criteria 混合sql语句多表关联时查询注意事项
  6. panel控件 换行
  7. XStream 用法汇总
  8. C socket udp方式发数据
  9. IntelliJ IDEA创建多模块依赖项目
  10. css scroll bug
  11. JPA javax.persistence.TransactionRequiredException
  12. python之Django学习笔记(三)---URL调度/URL路由
  13. 设计模式七: 策略(Strategy)
  14. 偏差(Bias)和方差(Variance)——机器学习中的模型选择zz
  15. 一款开源免费的WPF图表控件ModernuiCharts
  16. Linux常用命令1-50(持续更新中)
  17. Hibernate session FlushMode的五种设置
  18. python入门-文件
  19. Git入门及常用命令(1)(window环境下)
  20. 常见的错误:FTP连接时出现“227 Entering Passive Mode”

热门文章

  1. poj2125 最小点权覆盖集
  2. PLAY2.6-SCALA(六) 异步处理结果
  3. Git同步Python代码
  4. [React Native]去掉WebStorm中黄色警告
  5. 1.Golang开山篇,GO就是NB!
  6. poj 3280【区间dp】
  7. pycharm 的简单操作
  8. 冒泡排序 Day07
  9. C++ 求向量的交集、并集、差集
  10. Linux下安装MySQL-python