From: Peter Xu <peterx@redhat.com>
To: qemu-devel@nongnu.org
Cc: Eduardo Habkost <ehabkost@redhat.com>,
Laurent Vivier <lvivier@redhat.com>,
Eric Blake <eblake@redhat.com>,
Markus Armbruster <armbru@redhat.com>,
Juan Quintela <quintela@redhat.com>,
"Dr . David Alan Gilbert" <dgilbert@redhat.com>,
peterx@redhat.com, Marcel Apfelbaum <marcel@redhat.com>
Subject: [Qemu-devel] [PATCH v3 01/13] machine: export register_compat_prop()
Date: Mon, 19 Jun 2017 20:49:36 +0800 [thread overview]
Message-ID: <1497876588-947-2-git-send-email-peterx@redhat.com> (raw)
In-Reply-To: <1497876588-947-1-git-send-email-peterx@redhat.com>
We have HW_COMPAT_*, however that's only binded to machines, not other
things (like accelerators). Behind it, it was register_compat_prop()
that played the trick. Let's export the function for further use
outside HW_COMPAT_* magic.
Meanwhile, move it to qdev-properties.c where seems more proper.
Refactor it a bit to provide global_prop_list_add() for further
use (will use it in cases where we need a GlobalProperty list).
CC: Eduardo Habkost <ehabkost@redhat.com>
CC: Markus Armbruster <armbru@redhat.com>
CC: Marcel Apfelbaum <marcel@redhat.com>
Signed-off-by: Peter Xu <peterx@redhat.com>
---
accel.c | 1 +
hw/core/machine.c | 14 +-------------
hw/core/qdev-properties.c | 22 ++++++++++++++++++++++
include/hw/qdev-properties.h | 5 +++++
4 files changed, 29 insertions(+), 13 deletions(-)
diff --git a/accel.c b/accel.c
index 664bb88..62edd29 100644
--- a/accel.c
+++ b/accel.c
@@ -26,6 +26,7 @@
#include "qemu/osdep.h"
#include "sysemu/accel.h"
#include "hw/boards.h"
+#include "hw/qdev-properties.h"
#include "qemu-common.h"
#include "sysemu/arch_init.h"
#include "sysemu/sysemu.h"
diff --git a/hw/core/machine.c b/hw/core/machine.c
index 2e7e977..b4b3449 100644
--- a/hw/core/machine.c
+++ b/hw/core/machine.c
@@ -16,6 +16,7 @@
#include "qapi-visit.h"
#include "qapi/visitor.h"
#include "hw/sysbus.h"
+#include "hw/qdev-properties.h"
#include "sysemu/sysemu.h"
#include "sysemu/numa.h"
#include "qemu/error-report.h"
@@ -770,19 +771,6 @@ static void machine_class_finalize(ObjectClass *klass, void *data)
g_free(mc->name);
}
-static void register_compat_prop(const char *driver,
- const char *property,
- const char *value)
-{
- GlobalProperty *p = g_new0(GlobalProperty, 1);
- /* Machine compat_props must never cause errors: */
- p->errp = &error_abort;
- p->driver = driver;
- p->property = property;
- p->value = value;
- qdev_prop_register_global(p);
-}
-
static void machine_register_compat_for_subclass(ObjectClass *oc, void *opaque)
{
GlobalProperty *p = opaque;
diff --git a/hw/core/qdev-properties.c b/hw/core/qdev-properties.c
index 9f1a497..4b74382 100644
--- a/hw/core/qdev-properties.c
+++ b/hw/core/qdev-properties.c
@@ -1042,6 +1042,28 @@ void qdev_prop_set_ptr(DeviceState *dev, const char *name, void *value)
static GList *global_props;
+GList *global_prop_list_add(GList *list, const char *driver,
+ const char *property, const char *value)
+{
+ GlobalProperty *p = g_new0(GlobalProperty, 1);
+
+ /* These properties cannot fail the apply */
+ p->errp = &error_abort;
+ p->driver = driver;
+ p->property = property;
+ p->value = value;
+
+ return g_list_append(list, p);
+}
+
+void register_compat_prop(const char *driver,
+ const char *property,
+ const char *value)
+{
+ global_props = global_prop_list_add(global_props, driver,
+ property, value);
+}
+
void qdev_prop_register_global(GlobalProperty *prop)
{
global_props = g_list_append(global_props, prop);
diff --git a/include/hw/qdev-properties.h b/include/hw/qdev-properties.h
index d206fc9..15ee6ba 100644
--- a/include/hw/qdev-properties.h
+++ b/include/hw/qdev-properties.h
@@ -201,6 +201,11 @@ void qdev_prop_set_globals(DeviceState *dev);
void error_set_from_qdev_prop_error(Error **errp, int ret, DeviceState *dev,
Property *prop, const char *value);
+GList *global_prop_list_add(GList *list, const char *driver,
+ const char *property, const char *value);
+void register_compat_prop(const char *driver, const char *property,
+ const char *value);
+
/**
* qdev_property_add_static:
* @dev: Device to add the property to.
--
2.7.4
next prev parent reply other threads:[~2017-06-19 12:50 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-19 12:49 [Qemu-devel] [PATCH v3 00/13] migration: objectify MigrationState Peter Xu
2017-06-19 12:49 ` Peter Xu [this message]
2017-06-19 14:27 ` [Qemu-devel] [PATCH v3 01/13] machine: export register_compat_prop() Laurent Vivier
2017-06-19 12:49 ` [Qemu-devel] [PATCH v3 02/13] qdev: enhance global_prop_list_add() Peter Xu
2017-06-19 15:24 ` Eduardo Habkost
2017-06-19 12:49 ` [Qemu-devel] [PATCH v3 03/13] qdev: remove qdev_prop_register_global() Peter Xu
2017-06-19 12:49 ` [Qemu-devel] [PATCH v3 04/13] accel: introduce AccelState.global_props Peter Xu
2017-06-19 16:17 ` Eduardo Habkost
2017-06-20 13:20 ` Peter Xu
2017-06-20 13:41 ` Eduardo Habkost
2017-06-19 12:49 ` [Qemu-devel] [PATCH v3 05/13] tests: avoid check GlobalProperty.used Peter Xu
2017-06-19 12:49 ` [Qemu-devel] [PATCH v3 06/13] kvm: let kvm use AccelState.global_props Peter Xu
2017-06-19 16:14 ` Eduardo Habkost
2017-06-20 13:55 ` Peter Xu
2017-06-20 14:07 ` Eduardo Habkost
2017-06-21 3:00 ` Peter Xu
2017-06-21 12:09 ` Eduardo Habkost
2017-06-19 12:49 ` [Qemu-devel] [PATCH v3 07/13] tcg: " Peter Xu
2017-06-19 12:49 ` [Qemu-devel] [PATCH v3 08/13] trace: add qdev_global_prop_apply Peter Xu
2017-06-19 12:49 ` [Qemu-devel] [PATCH v3 09/13] migration: let MigrationState be a qdev Peter Xu
2017-06-19 12:49 ` [Qemu-devel] [PATCH v3 10/13] migration: move global_state.optional out Peter Xu
2017-06-19 15:47 ` Juan Quintela
2017-06-19 12:49 ` [Qemu-devel] [PATCH v3 11/13] migration: move only_migratable to MigrationState Peter Xu
2017-06-19 15:50 ` Juan Quintela
2017-06-21 3:07 ` Peter Xu
2017-06-19 12:49 ` [Qemu-devel] [PATCH v3 12/13] migration: move skip_configuration out Peter Xu
2017-06-19 15:56 ` Juan Quintela
2017-06-21 3:33 ` Peter Xu
2017-06-21 7:28 ` Juan Quintela
2017-06-19 12:49 ` [Qemu-devel] [PATCH v3 13/13] migration: move skip_section_footers Peter Xu
2017-06-19 15:57 ` Juan Quintela
2017-06-19 15:59 ` [Qemu-devel] [PATCH v3 00/13] migration: objectify MigrationState Juan Quintela
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1497876588-947-2-git-send-email-peterx@redhat.com \
--to=peterx@redhat.com \
--cc=armbru@redhat.com \
--cc=dgilbert@redhat.com \
--cc=eblake@redhat.com \
--cc=ehabkost@redhat.com \
--cc=lvivier@redhat.com \
--cc=marcel@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).