@@ -27,6 +27,7 @@
#include "hw/pci/pci.h"
#include "hw/mem/nvdimm.h"
#include "migration/vmstate.h"
+#include "qom/static-property.h"
GlobalProperty hw_compat_5_1[] = {
{ "vhost-scsi", "num_queues", "1"},
@@ -211,81 +212,6 @@ GlobalProperty hw_compat_2_1[] = {
};
const size_t hw_compat_2_1_len = G_N_ELEMENTS(hw_compat_2_1);
-static char *machine_get_kernel(Object *obj, Error **errp)
-{
- MachineState *ms = MACHINE(obj);
-
- return g_strdup(ms->kernel_filename);
-}
-
-static void machine_set_kernel(Object *obj, const char *value, Error **errp)
-{
- MachineState *ms = MACHINE(obj);
-
- g_free(ms->kernel_filename);
- ms->kernel_filename = g_strdup(value);
-}
-
-static char *machine_get_initrd(Object *obj, Error **errp)
-{
- MachineState *ms = MACHINE(obj);
-
- return g_strdup(ms->initrd_filename);
-}
-
-static void machine_set_initrd(Object *obj, const char *value, Error **errp)
-{
- MachineState *ms = MACHINE(obj);
-
- g_free(ms->initrd_filename);
- ms->initrd_filename = g_strdup(value);
-}
-
-static char *machine_get_append(Object *obj, Error **errp)
-{
- MachineState *ms = MACHINE(obj);
-
- return g_strdup(ms->kernel_cmdline);
-}
-
-static void machine_set_append(Object *obj, const char *value, Error **errp)
-{
- MachineState *ms = MACHINE(obj);
-
- g_free(ms->kernel_cmdline);
- ms->kernel_cmdline = g_strdup(value);
-}
-
-static char *machine_get_dtb(Object *obj, Error **errp)
-{
- MachineState *ms = MACHINE(obj);
-
- return g_strdup(ms->dtb);
-}
-
-static void machine_set_dtb(Object *obj, const char *value, Error **errp)
-{
- MachineState *ms = MACHINE(obj);
-
- g_free(ms->dtb);
- ms->dtb = g_strdup(value);
-}
-
-static char *machine_get_dumpdtb(Object *obj, Error **errp)
-{
- MachineState *ms = MACHINE(obj);
-
- return g_strdup(ms->dumpdtb);
-}
-
-static void machine_set_dumpdtb(Object *obj, const char *value, Error **errp)
-{
- MachineState *ms = MACHINE(obj);
-
- g_free(ms->dumpdtb);
- ms->dumpdtb = g_strdup(value);
-}
-
static void machine_get_phandle_start(Object *obj, Visitor *v,
const char *name, void *opaque,
Error **errp)
@@ -310,21 +236,6 @@ static void machine_set_phandle_start(Object *obj, Visitor *v,
ms->phandle_start = value;
}
-static char *machine_get_dt_compatible(Object *obj, Error **errp)
-{
- MachineState *ms = MACHINE(obj);
-
- return g_strdup(ms->dt_compatible);
-}
-
-static void machine_set_dt_compatible(Object *obj, const char *value, Error **errp)
-{
- MachineState *ms = MACHINE(obj);
-
- g_free(ms->dt_compatible);
- ms->dt_compatible = g_strdup(value);
-}
-
static bool machine_get_dump_guest_core(Object *obj, Error **errp)
{
MachineState *ms = MACHINE(obj);
@@ -353,6 +264,18 @@ static void machine_set_mem_merge(Object *obj, bool value, Error **errp)
ms->mem_merge = value;
}
+static Property machine_props[] = {
+ DEFINE_PROP_STRING("kernel", MachineState, kernel_filename),
+ DEFINE_PROP_STRING("initrd", MachineState, initrd_filename),
+ DEFINE_PROP_STRING("append", MachineState, kernel_cmdline),
+ DEFINE_PROP_STRING("dtb", MachineState, dtb),
+ DEFINE_PROP_STRING("dumpdtb", MachineState, dumpdtb),
+ DEFINE_PROP_STRING("dt-compatible", MachineState, dt_compatible),
+ DEFINE_PROP_STRING("firmware", MachineState, firmware),
+ DEFINE_PROP_STRING("memory-backend", MachineState, ram_memdev_id),
+ DEFINE_PROP_END_OF_LIST(),
+};
+
static bool machine_get_usb(Object *obj, Error **errp)
{
MachineState *ms = MACHINE(obj);
@@ -382,21 +305,6 @@ static void machine_set_graphics(Object *obj, bool value, Error **errp)
ms->enable_graphics = value;
}
-static char *machine_get_firmware(Object *obj, Error **errp)
-{
- MachineState *ms = MACHINE(obj);
-
- return g_strdup(ms->firmware);
-}
-
-static void machine_set_firmware(Object *obj, const char *value, Error **errp)
-{
- MachineState *ms = MACHINE(obj);
-
- g_free(ms->firmware);
- ms->firmware = g_strdup(value);
-}
-
static void machine_set_suppress_vmdesc(Object *obj, bool value, Error **errp)
{
MachineState *ms = MACHINE(obj);
@@ -519,21 +427,6 @@ static void validate_sysbus_device(SysBusDevice *sbdev, void *opaque)
}
}
-static char *machine_get_memdev(Object *obj, Error **errp)
-{
- MachineState *ms = MACHINE(obj);
-
- return g_strdup(ms->ram_memdev_id);
-}
-
-static void machine_set_memdev(Object *obj, const char *value, Error **errp)
-{
- MachineState *ms = MACHINE(obj);
-
- g_free(ms->ram_memdev_id);
- ms->ram_memdev_id = g_strdup(value);
-}
-
static void machine_init_notify(Notifier *notifier, void *data)
{
@@ -773,28 +666,20 @@ static void machine_class_init(ObjectClass *oc, void *data)
*/
mc->numa_mem_align_shift = 23;
- object_class_property_add_str(oc, "kernel",
- machine_get_kernel, machine_set_kernel);
+ /*
+ * TODO: provide a allow_set callback and prevent properties
+ * from being set after machine was already initialized
+ */
+ object_class_add_static_props(oc, machine_props, NULL);
+
object_class_property_set_description(oc, "kernel",
"Linux kernel image file");
-
- object_class_property_add_str(oc, "initrd",
- machine_get_initrd, machine_set_initrd);
object_class_property_set_description(oc, "initrd",
"Linux initial ramdisk file");
-
- object_class_property_add_str(oc, "append",
- machine_get_append, machine_set_append);
object_class_property_set_description(oc, "append",
"Linux kernel command line");
-
- object_class_property_add_str(oc, "dtb",
- machine_get_dtb, machine_set_dtb);
object_class_property_set_description(oc, "dtb",
"Linux kernel device tree file");
-
- object_class_property_add_str(oc, "dumpdtb",
- machine_get_dumpdtb, machine_set_dumpdtb);
object_class_property_set_description(oc, "dumpdtb",
"Dump current dtb to a file and quit");
@@ -804,8 +689,6 @@ static void machine_class_init(ObjectClass *oc, void *data)
object_class_property_set_description(oc, "phandle-start",
"The first phandle ID we may generate dynamically");
- object_class_property_add_str(oc, "dt-compatible",
- machine_get_dt_compatible, machine_set_dt_compatible);
object_class_property_set_description(oc, "dt-compatible",
"Overrides the \"compatible\" property of the dt root node");
@@ -829,8 +712,6 @@ static void machine_class_init(ObjectClass *oc, void *data)
object_class_property_set_description(oc, "graphics",
"Set on/off to enable/disable graphics emulation");
- object_class_property_add_str(oc, "firmware",
- machine_get_firmware, machine_set_firmware);
object_class_property_set_description(oc, "firmware",
"Firmware image");
@@ -844,8 +725,6 @@ static void machine_class_init(ObjectClass *oc, void *data)
object_class_property_set_description(oc, "memory-encryption",
"Set memory encryption object to use");
- object_class_property_add_str(oc, "memory-backend",
- machine_get_memdev, machine_set_memdev);
object_class_property_set_description(oc, "memory-backend",
"Set RAM backend"
"Valid value is ID of hostmem based backend");
@@ -920,13 +799,6 @@ static void machine_finalize(Object *obj)
{
MachineState *ms = MACHINE(obj);
- g_free(ms->kernel_filename);
- g_free(ms->initrd_filename);
- g_free(ms->kernel_cmdline);
- g_free(ms->dtb);
- g_free(ms->dumpdtb);
- g_free(ms->dt_compatible);
- g_free(ms->firmware);
g_free(ms->device_memory);
g_free(ms->nvdimms_state);
g_free(ms->numa_state);
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com> --- hw/core/machine.c | 166 ++++++---------------------------------------- 1 file changed, 19 insertions(+), 147 deletions(-)