[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 21/87] qom: introduce object_register_sugar_prop
From: |
Paolo Bonzini |
Subject: |
[PULL 21/87] qom: introduce object_register_sugar_prop |
Date: |
Wed, 18 Dec 2019 13:01:47 +0100 |
Similar to the existing "-rtc driftfix" option, we will convert some
legacy "-machine" command line options to global properties on accelerators.
Because accelerators are not devices, we cannot use qdev_prop_register_global.
Instead, provide a slot in the generic object_compat_props arrays for
command line syntactic sugar.
Signed-off-by: Paolo Bonzini <address@hidden>
---
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);
void object_apply_compat_props(Object *obj);
/**
diff --git a/qom/object.c b/qom/object.c
index d51b57f..e7b72f7 100644
--- a/qom/object.c
+++ b/qom/object.c
@@ -414,10 +414,29 @@ 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
+ * Slot 2: global properties from legacy command line option
* Each is a GPtrArray of of GlobalProperty.
* Applied in order, later entries override earlier ones.
*/
-static GPtrArray *object_compat_props[2];
+static GPtrArray *object_compat_props[3];
+
+/*
+ * Retrieve @GPtrArray for global property defined with options
+ * other than "-global". These are generally used for syntactic
+ * sugar and legacy command line options.
+ */
+void object_register_sugar_prop(const char *driver, const char *prop, const
char *value)
+{
+ GlobalProperty *g;
+ if (!object_compat_props[2]) {
+ object_compat_props[2] = g_ptr_array_new();
+ }
+ g = g_new0(GlobalProperty, 1);
+ g->driver = g_strdup(driver);
+ g->property = g_strdup(prop);
+ g->value = g_strdup(value);
+ g_ptr_array_add(object_compat_props[2], g);
+}
/*
* 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);
}
}
diff --git a/vl.c b/vl.c
index c350eef..b95c161 100644
--- a/vl.c
+++ b/vl.c
@@ -895,13 +895,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");
} else if (!strcmp(value, "none")) {
/* discard is default */
} else {
--
1.8.3.1
- [PULL 31/87] object: Improve documentation of interfaces, (continued)
- [PULL 31/87] object: Improve documentation of interfaces, Paolo Bonzini, 2019/12/18
- [PULL 32/87] build-sys: build vhost-user-gpu only if CONFIG_TOOLS, Paolo Bonzini, 2019/12/18
- [PULL 26/87] xen: convert "-machine igd-passthru" to an accelerator property, Paolo Bonzini, 2019/12/18
- [PULL 18/87] vl: introduce object_parse_property_opt, Paolo Bonzini, 2019/12/18
- [PULL 10/87] migration-test: Rename cmd_src/dst to arch_source/arch_target, Paolo Bonzini, 2019/12/18
- [PULL 17/87] accel: compile accel/accel.c just once, Paolo Bonzini, 2019/12/18
- [PULL 19/87] vl: configure accelerators from -accel options, Paolo Bonzini, 2019/12/18
- [PULL 28/87] kvm: introduce kvm_kernel_irqchip_* functions, Paolo Bonzini, 2019/12/18
- [PULL 33/87] build-sys: do not include Windows SLIRP dependencies in $LIBS, Paolo Bonzini, 2019/12/18
- [PULL 34/87] migration: fix maybe-uninitialized warning, Paolo Bonzini, 2019/12/18
- [PULL 21/87] qom: introduce object_register_sugar_prop,
Paolo Bonzini <=
- [PULL 20/87] vl: warn for unavailable accelerators, clarify messages, Paolo Bonzini, 2019/12/18
- [PULL 24/87] tcg: convert "-accel threads" to a QOM property, Paolo Bonzini, 2019/12/18
- [PULL 30/87] Makefile: remove unused variables, Paolo Bonzini, 2019/12/18
- [PULL 27/87] kvm: convert "-machine kvm_shadow_mem" to an accelerator property, Paolo Bonzini, 2019/12/18
- [PULL 35/87] monitor: fix maybe-uninitialized, Paolo Bonzini, 2019/12/18
- [PULL 36/87] vhost-user-scsi: fix printf format warning, Paolo Bonzini, 2019/12/18
- [PULL 38/87] tests: skip block layer tests if !CONFIG_TOOLS, Paolo Bonzini, 2019/12/18
- [PULL 41/87] stubs: replace stubs with lnot if applicable, Paolo Bonzini, 2019/12/18
- [PULL 43/87] configure: simplify vhost condition with Kconfig, Paolo Bonzini, 2019/12/18
- [PULL 37/87] os-posix: simplify os_find_datadir, Paolo Bonzini, 2019/12/18