qom: Move compat_props machinery from qdev to QOM
See the previous commit for rationale. Signed-off-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Message-Id: <20190308131445.17502-3-armbru@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
1a3ec8c156
commit
617902af2c
@ -978,45 +978,6 @@ static void device_initfn(Object *obj)
|
||||
QLIST_INIT(&dev->gpios);
|
||||
}
|
||||
|
||||
/*
|
||||
* Global property defaults
|
||||
* Slot 0: accelerator's global property defaults
|
||||
* Slot 1: machine's global property defaults
|
||||
* Each is a GPtrArray of of GlobalProperty.
|
||||
* Applied in order, later entries override earlier ones.
|
||||
*/
|
||||
static GPtrArray *object_compat_props[2];
|
||||
|
||||
/*
|
||||
* Set machine's global property defaults to @compat_props.
|
||||
* May be called at most once.
|
||||
*/
|
||||
void object_set_machine_compat_props(GPtrArray *compat_props)
|
||||
{
|
||||
assert(!object_compat_props[1]);
|
||||
object_compat_props[1] = compat_props;
|
||||
}
|
||||
|
||||
/*
|
||||
* Set accelerator's global property defaults to @compat_props.
|
||||
* May be called at most once.
|
||||
*/
|
||||
void object_set_accelerator_compat_props(GPtrArray *compat_props)
|
||||
{
|
||||
assert(!object_compat_props[0]);
|
||||
object_compat_props[0] = compat_props;
|
||||
}
|
||||
|
||||
void object_apply_compat_props(Object *obj)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(object_compat_props); i++) {
|
||||
object_apply_global_props(obj, object_compat_props[i],
|
||||
&error_abort);
|
||||
}
|
||||
}
|
||||
|
||||
static void device_post_init(Object *obj)
|
||||
{
|
||||
/*
|
||||
|
@ -431,10 +431,6 @@ const char *qdev_fw_name(DeviceState *dev);
|
||||
|
||||
Object *qdev_get_machine(void);
|
||||
|
||||
void object_set_machine_compat_props(GPtrArray *compat_props);
|
||||
void object_set_accelerator_compat_props(GPtrArray *compat_props);
|
||||
void object_apply_compat_props(Object *obj);
|
||||
|
||||
/* FIXME: make this a link<> */
|
||||
void qdev_set_parent_bus(DeviceState *dev, BusState *bus);
|
||||
|
||||
|
@ -677,6 +677,9 @@ Object *object_new_with_propv(const char *typename,
|
||||
|
||||
void object_apply_global_props(Object *obj, const GPtrArray *props,
|
||||
Error **errp);
|
||||
void object_set_machine_compat_props(GPtrArray *compat_props);
|
||||
void object_set_accelerator_compat_props(GPtrArray *compat_props);
|
||||
void object_apply_compat_props(Object *obj);
|
||||
|
||||
/**
|
||||
* object_set_props:
|
||||
|
39
qom/object.c
39
qom/object.c
@ -408,6 +408,45 @@ void object_apply_global_props(Object *obj, const GPtrArray *props, Error **errp
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Global property defaults
|
||||
* Slot 0: accelerator's global property defaults
|
||||
* Slot 1: machine's global property defaults
|
||||
* Each is a GPtrArray of of GlobalProperty.
|
||||
* Applied in order, later entries override earlier ones.
|
||||
*/
|
||||
static GPtrArray *object_compat_props[2];
|
||||
|
||||
/*
|
||||
* Set machine's global property defaults to @compat_props.
|
||||
* May be called at most once.
|
||||
*/
|
||||
void object_set_machine_compat_props(GPtrArray *compat_props)
|
||||
{
|
||||
assert(!object_compat_props[1]);
|
||||
object_compat_props[1] = compat_props;
|
||||
}
|
||||
|
||||
/*
|
||||
* Set accelerator's global property defaults to @compat_props.
|
||||
* May be called at most once.
|
||||
*/
|
||||
void object_set_accelerator_compat_props(GPtrArray *compat_props)
|
||||
{
|
||||
assert(!object_compat_props[0]);
|
||||
object_compat_props[0] = compat_props;
|
||||
}
|
||||
|
||||
void object_apply_compat_props(Object *obj)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(object_compat_props); i++) {
|
||||
object_apply_global_props(obj, object_compat_props[i],
|
||||
&error_abort);
|
||||
}
|
||||
}
|
||||
|
||||
static void object_initialize_with_type(void *data, size_t size, TypeImpl *type)
|
||||
{
|
||||
Object *obj = data;
|
||||
|
Loading…
Reference in New Issue
Block a user