我经历了LDD3的第14章,并在第4节中找到了以下内容;
作为一般规则,device-> kobj-> parent等于 &安培;&于设备GT;父 - > Kobj专有
有人可以解释原因吗?
我阅读了第1,2,3节。但我想我错过了一些东西或者无法消化它。
答案 0 :(得分:0)
您可以将此视为面向对象概念的继承。
struct kobject表示一个内核对象,因此device是kobject的类子类。
struct device {
struct device * parent;
struct device_private * p;
struct kobject kobj;
..
}
struct kobject {
char *k_name;
char name[KOBJ_NAME_LEN];
struct kref kref;
struct list_head entry;
struct kobject *parent;
struct kset *kset;
struct kobj_type *ktype;
struct dentry *dentry;
};
设备具有其父设备,并且父设备的kobject也是设备的kobject的父设备。这个关系由linux内核负责。
这就是为什么device-> kobj-> parent等于device-> parent-> kobj。 (设备的kobject父母等于设备的父母的kobject)。