On Wed, Jun 28, 2017 at 03:15:44PM +0800, Peter Xu wrote: > It'll be strange that the migration object inherits TYPE_DEVICE. Add > some explanations to it. > > Signed-off-by: Peter Xu <pet...@redhat.com> > --- > migration/migration.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/migration/migration.c b/migration/migration.c > index b1b0825..2398a9d 100644 > --- a/migration/migration.c > +++ b/migration/migration.c > @@ -2046,6 +2046,14 @@ static void migration_instance_init(Object *obj) > > static const TypeInfo migration_type = { > .name = TYPE_MIGRATION, > + /* > + * NOTE: "migration" itself is not really a device. We used
I suggest extending this as: TYPE_MIGRATION is not really a device, as the object is not created using qdev_create(), it is not attached to the qdev device tree, and it is never realized. > + * TYPE_DEVICE here only to leverage some existing QDev features > + * like "-global" properties, and HW_COMPAT_* fields (which are > + * finally applied as global properties as well). If one day the > + * global property feature can be migrated from QDev to QObject in > + * general, then we can switch to QObject as well. > + */ QOM objects (qom/object.h) are not QObject (qapi/qmp/qobject.h). People often confuse them with each other. (It probably doesn't help that both are described as "QEMU Object Model" at their headers.) I suggest rewriting it as: If one day we allow non-device QOM objects to use the global property system, we can switch this from TYPE_DEVICE to TYPE_OBJECT." > .parent = TYPE_DEVICE, > .class_init = migration_class_init, > .class_size = sizeof(MigrationClass), > -- > 2.7.4 > -- Eduardo