On 14/11/19 10:53, Marc-André Lureau wrote:
>> include/qom/object.h | 1 +
>> qom/object.c | 23 +++++++++++++++++++++--
>> vl.c | 10 +++-------
>> 3 files changed, 25 insertions(+), 9 deletions(-)
>>
>> diff --git a/include/qom/object.h b/include/qom/object.h
>> index 128d00c..230b18f 100644
>> --- a/include/qom/object.h
>> +++ b/include/qom/object.h
>> @@ -679,6 +679,7 @@ 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_register_sugar_prop(const char *driver, const char *prop, const
>> char *value);
>
> Or simply
>
> void object_add_global_prop(const char *typename, ...) ?
This is actually how I called it first, but I didn't like it because
it's prioritized _below_ -global, and it's easy to confuse it with
object_add_global_prop.
>> /*
>> * Set machine's global property defaults to @compat_props.
>> @@ -445,7 +464,7 @@ void object_apply_compat_props(Object *obj)
>>
>> for (i = 0; i < ARRAY_SIZE(object_compat_props); i++) {
>> object_apply_global_props(obj, object_compat_props[i],
>> - &error_abort);
>> + i == 2 ? &error_fatal : &error_abort);
>
> Isn't error_abort() appropriate in all cases?
Unfortunately not, because otherwise "-accel tcg,tb-size=foo" would crash.
>> }
>> }
>>
>> diff --git a/vl.c b/vl.c
>> index 843b263..cb993dd 100644
>> --- a/vl.c
>> +++ b/vl.c
>> @@ -896,13 +896,9 @@ static void configure_rtc(QemuOpts *opts)
>> value = qemu_opt_get(opts, "driftfix");
>> if (value) {
>> if (!strcmp(value, "slew")) {
>> - static GlobalProperty slew_lost_ticks = {
>> - .driver = "mc146818rtc",
>> - .property = "lost_tick_policy",
>> - .value = "slew",
>> - };
>> -
>> - qdev_prop_register_global(&slew_lost_ticks);
>> + object_register_sugar_prop("mc146818rtc",
>> + "lost_tick_policy",
>> + "slew");
>
> Why do you convert this since it's a device?
Not strictly necessary, but it's more compact and it more or less
matches the usecase for this function.
Paolo