From: Kevin Wolf <kwolf@redhat.com>
To: qemu-devel@nongnu.org
Cc: kwolf@redhat.com, berrange@redhat.com, ehabkost@redhat.com,
armbru@redhat.com, pbonzini@redhat.com, eblake@redhat.com
Subject: [RFC PATCH 12/12] qapi/qom: Add class definition for rng-egd
Date: Wed, 3 Nov 2021 18:30:02 +0100 [thread overview]
Message-ID: <20211103173002.209906-13-kwolf@redhat.com> (raw)
In-Reply-To: <20211103173002.209906-1-kwolf@redhat.com>
Switch object creation to .instance_config and remove the property
setter that would only return an error after creation anyway.
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
qapi/qom.json | 12 ++++++------
backends/rng-egd.c | 18 +++++++-----------
2 files changed, 13 insertions(+), 17 deletions(-)
diff --git a/qapi/qom.json b/qapi/qom.json
index 864c6a658b..fce24428f8 100644
--- a/qapi/qom.json
+++ b/qapi/qom.json
@@ -742,18 +742,18 @@
'parent': 'rng-backend' }
##
-# @RngEgdProperties:
+# @rng-egd:
#
-# Properties for rng-egd objects.
+# Random number generator backend connecting to an EGD-compatible daemon
#
# @chardev: the name of a character device backend that provides the connection
# to the RNG daemon
#
# Since: 1.3
##
-{ 'struct': 'RngEgdProperties',
- 'base': 'RngProperties',
- 'data': { 'chardev': 'str' } }
+{ 'class': 'rng-egd',
+ 'parent': 'rng-backend',
+ 'config': { 'chardev': 'str' } }
##
# @rng-random:
@@ -908,7 +908,7 @@
'if': 'CONFIG_LINUX' },
'qtest': 'QtestProperties',
'rng-builtin': 'qom-config:rng-builtin',
- 'rng-egd': 'RngEgdProperties',
+ 'rng-egd': 'qom-config:rng-egd',
'rng-random': { 'type': 'qom-config:rng-random',
'if': 'CONFIG_POSIX' },
'secret': 'SecretProperties',
diff --git a/backends/rng-egd.c b/backends/rng-egd.c
index 4de142b9dc..89255dc6fa 100644
--- a/backends/rng-egd.c
+++ b/backends/rng-egd.c
@@ -15,6 +15,7 @@
#include "chardev/char-fe.h"
#include "qapi/error.h"
#include "qapi/qmp/qerror.h"
+#include "qapi/qapi-qom-qom.h"
#include "qemu/module.h"
#include "qom/object.h"
@@ -110,17 +111,12 @@ static void rng_egd_opened(RngBackend *b, Error **errp)
rng_egd_chr_read, NULL, NULL, s, NULL, true);
}
-static void rng_egd_set_chardev(Object *obj, const char *value, Error **errp)
+bool qom_rng_egd_config(Object *obj, const char *chardev, Error **errp)
{
- RngBackend *b = RNG_BACKEND(obj);
- RngEgd *s = RNG_EGD(b);
+ RngEgd *s = RNG_EGD(obj);
- if (b->opened) {
- error_setg(errp, QERR_PERMISSION_DENIED);
- } else {
- g_free(s->chr_name);
- s->chr_name = g_strdup(value);
- }
+ s->chr_name = g_strdup(chardev);
+ return true;
}
static char *rng_egd_get_chardev(Object *obj, Error **errp)
@@ -149,8 +145,7 @@ static void rng_egd_class_init(ObjectClass *klass, void *data)
rbc->request_entropy = rng_egd_request_entropy;
rbc->opened = rng_egd_opened;
- object_class_property_add_str(klass, "chardev",
- rng_egd_get_chardev, rng_egd_set_chardev);
+ object_class_property_add_str(klass, "chardev", rng_egd_get_chardev, NULL);
}
static const TypeInfo rng_egd_info = {
@@ -158,6 +153,7 @@ static const TypeInfo rng_egd_info = {
.parent = TYPE_RNG_BACKEND,
.instance_size = sizeof(RngEgd),
.class_init = rng_egd_class_init,
+ .instance_config = qom_rng_egd_marshal_config,
.instance_finalize = rng_egd_finalize,
};
--
2.31.1
next prev parent reply other threads:[~2021-11-03 17:51 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-03 17:29 [RFC PATCH 00/12] QOM/QAPI integration part 1 Kevin Wolf
2021-11-03 17:29 ` [RFC PATCH 01/12] qapi: Add visit_next_struct_member() Kevin Wolf
2021-11-03 17:29 ` [RFC PATCH 02/12] qom: Create object_configure() Kevin Wolf
2021-11-23 15:23 ` Markus Armbruster
2021-12-14 9:52 ` Kevin Wolf
2021-11-03 17:29 ` [RFC PATCH 03/12] qom: Make object_configure() public Kevin Wolf
2021-11-03 17:29 ` [RFC PATCH 04/12] qom: Add instance_config() to TypeInfo Kevin Wolf
2021-11-03 17:29 ` [RFC PATCH 05/12] rng-random: Implement .instance_config Kevin Wolf
2021-11-03 17:29 ` [RFC PATCH 06/12] rng-backend: " Kevin Wolf
2021-11-03 17:29 ` [RFC PATCH 07/12] qapi: Allow defining QOM classes Kevin Wolf
2021-11-23 10:02 ` Markus Armbruster
2021-12-10 17:53 ` Kevin Wolf
2021-11-03 17:29 ` [RFC PATCH 08/12] qapi: Create qom-config:... type for classes Kevin Wolf
2021-11-23 13:00 ` Markus Armbruster
2021-12-10 17:41 ` Kevin Wolf
2021-11-03 17:29 ` [RFC PATCH 09/12] qapi/qom: Convert rng-backend/random to class Kevin Wolf
2021-11-23 13:15 ` Markus Armbruster
2021-12-10 17:57 ` Kevin Wolf
2021-11-03 17:30 ` [RFC PATCH 10/12] qapi: Generate QOM config marshalling code Kevin Wolf
2021-11-23 14:16 ` Markus Armbruster
2021-12-10 16:50 ` Kevin Wolf
2021-11-03 17:30 ` [RFC PATCH 11/12] qapi/qom: Add class definition for rng-builtin Kevin Wolf
2021-11-03 17:30 ` Kevin Wolf [this message]
2021-11-03 21:26 ` [RFC PATCH 00/12] QOM/QAPI integration part 1 Paolo Bonzini
2021-11-04 9:07 ` Kevin Wolf
2021-11-04 12:39 ` Paolo Bonzini
2021-11-04 14:26 ` Kevin Wolf
2021-11-04 14:49 ` Paolo Bonzini
2021-11-04 15:51 ` Kevin Wolf
2021-11-04 15:52 ` Damien Hedde
2021-11-05 13:55 ` Kevin Wolf
2021-11-23 16:05 ` Markus Armbruster
2021-12-14 10:23 ` Kevin Wolf
2021-12-14 10:40 ` Peter Maydell
2021-12-14 11:52 ` Kevin Wolf
2021-12-14 14:45 ` Markus Armbruster
2021-12-14 16:00 ` Kevin Wolf
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=20211103173002.209906-13-kwolf@redhat.com \
--to=kwolf@redhat.com \
--cc=armbru@redhat.com \
--cc=berrange@redhat.com \
--cc=eblake@redhat.com \
--cc=ehabkost@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
/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).