linux kset subsystem 3.10内核,Kobject、Kset 和 Subsystem

2014年5月12日Kobject 、Kset 和 Subsy stem - 海王 - 博客园http://www.doczj.com/doc/93b5b6113b3567ec112d8a49.html/leav en/archiv e/2010/04/24/1719191.html 4/8件(2)4. Linux input 子系统 io 控制字段(2)

5. linux 内核定时器 tim er_list 详解(2) (2)把kobject 的 kset 成员指向目标kset 。

(3)将kobject 传递给下面的函数:int kobject_add(struct kobject *kobj); /*函数可能失败(返回一个负错误码),程序应作出相应地反应*/

内核提供了一个组合函数:

extern int kobject_register(struct kobject *kobj); /*仅仅是一个

kobject_init 和 kobject_add 的结合,其他成员的初始化必须在之前手动完成*/

当把一个kobject 从kset 中删除以清除引用时使用:

void kobject_del(struct kobject *kobj); /*是 kobject_del 和kobject_put 的结合*/

kset 在一个标准的内核链表中保存了它的子节点,在大部分情况下, 被包含的 kobjects 在它们的 parent 成员中保存指向 kset 内嵌的 kobject 的指

6bf9b4bfc6e8daff1428b0822a31264b.png

针,关系如下:

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

kset 上的操作

ksets 有类似于kobjects 初始化和设置接口:

void kset_init(struct kset *kset);

int kset_add(struct kset *kset);

int kset_register(struct kset *kset);

void kset_unregister(struct kset *kset);

/*管理 ksets 的引用计数:*/

struct kset *kset_get(struct kset *kset);

void kset_put(struct kset *kset);

/* kset 也有一个名字,存储于嵌入的 kobject,因此设置它的名字用:*/kobject_set_nam e(&m y_set->kobj, "The nam e");

ksets 还有一个指针指向 kobj_type 结构来描述它包含的 kobject ,这个类型优先于 kobject 自身中的 ktype 。因此在典型的应用中, 在 struct

kobject 中的 ktype 成员被设为 NULL, 而 kset 中的ktype 是实际被使用的。

在新的内核里, kset 不再包含一个子系统指针struct subsystem *subsys , 而且subsystem 已经被kset 取代。

子系统

子系统是对整个内核中一些高级部分的表述。子系统通常(但不一定)出现在sysfs 分层结构中的顶层,内核子系统包括 block_subsys(/sys/block 块设备)、 devices_subsys(/sys/devices 核心设备层)以及内核已知的用于各种总线的特定子系统。

对于新的内核已经不再有subsystem 数据结构了,用kset 代替了。每个 kset 必须属于一个子系统,子系统成员帮助内核在分层结构中定位 kset 。 /*子系统通常用以下的宏声明:*/

decl_subsys(nam e, struct kobj_type *type, struct

kset_uevent_ops * uevent_ops);

/*子系统的操作函数:*/

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值