[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 08/16] qom: introduce object_register_sugar_prop
From: |
Paolo Bonzini |
Subject: |
Re: [PATCH 08/16] qom: introduce object_register_sugar_prop |
Date: |
Thu, 14 Nov 2019 11:03:51 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.8.0 |
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
- Re: [PATCH 03/16] vl: merge -accel processing into configure_accelerators, (continued)
- [PATCH 05/16] vl: introduce object_parse_property_opt, Paolo Bonzini, 2019/11/13
- [PATCH 06/16] vl: configure accelerators from -accel options, Paolo Bonzini, 2019/11/13
- [PATCH 07/16] vl: warn for unavailable accelerators, clarify messages, Paolo Bonzini, 2019/11/13
- [PATCH 08/16] qom: introduce object_register_sugar_prop, Paolo Bonzini, 2019/11/13
- [PATCH 09/16] qom: add object_new_with_class, Paolo Bonzini, 2019/11/13
- [PATCH 10/16] accel: pass object to accel_init_machine, Paolo Bonzini, 2019/11/13
- [PATCH 12/16] tcg: add "-accel tcg,tb-size" and deprecate "-tb-size", Paolo Bonzini, 2019/11/13
- [PATCH 11/16] tcg: convert "-accel threads" to a QOM property, Paolo Bonzini, 2019/11/13
- [PATCH 16/16] kvm: convert "-machine kernel_irqchip" to an accelerator property, Paolo Bonzini, 2019/11/13
- [PATCH 13/16] xen: convert "-machine igd-passthru" to an accelerator property, Paolo Bonzini, 2019/11/13