为什么device-> kobj-> parent按照LDD3等于& device-> parent-> kobj?

时间:2014-07-28 09:06:36

标签: linux linux-kernel kernel linux-device-driver

我经历了LDD3的第14章,并在第4节中找到了以下内容;

  

作为一般规则,device-> kobj-> parent等于   &安培;&于设备GT;父 - > Kobj专有

有人可以解释原因吗?

我阅读了第1,2,3节。但我想我错过了一些东西或者无法消化它。

1 个答案:

答案 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)。