kobject_create_and_add 创建了多少引用计数?

How many reference counts does kobject_create_and_add create?

根据 LDD3,kobject_initkobject_add 都会增加引用计数。所以 kobject_create_and_add 应该创建一个有 2 个引用的对象。对吗?

但是在linux/sample/kobject/kobject-example.c中,模块kobject_create_and_add一个对象,但是只放一次,退出的时候。这意味着只有一个引用计数。怎么了?

So kobject_create_and_add should create an object with 2 references. Right?

不是真的。它创建一个对象(应将其引用计数器设置为 1),然后将其添加到 parent 对象(应递增 parent 对象的引用计数器)。涉及两个不同的对象,处理两个不同的引用计数器。

调用kobject_put() 减少对象的引用计数器,当新的引用计数器值相应地测试时,在对象内部调用kobject_release()。后者调用 kobject_cleanup(),后者又在 parent 对象上调用 kobject_put(),从而也处理其引用计数器。