From 269e09f3fc922b800d118d9c8a721be46b5462a3 Mon Sep 17 00:00:00 2001 From: Igor Mammedov Date: Thu, 16 Jan 2014 17:34:38 +0100 Subject: add optional 2nd stage initialization to -object/object-add commands Introduces USER_CREATABLE interface that must be implemented by objects which are designed to created with -object CLI option or object-add QMP command. Interface provides an ability to do an optional second stage initialization of the object created with -object/object-add commands. By providing complete() callback, which is called after the object properties were set. It allows to: * prevents misusing of -object/object-add by filtering out objects that are not designed for it. * generalize second stage backend initialization instead of adding custom APIs to perform it * early error detection of backend initialization at -object/ object-add time rather than through a proxy DEVICE object that tries to use backend. Signed-off-by: Igor Mammedov Reviewed-by: Stefan Hajnoczi Signed-off-by: Luiz Capitulino --- backends/rng.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'backends') diff --git a/backends/rng.c b/backends/rng.c index 85cb83f5e1..7bab806ee1 100644 --- a/backends/rng.c +++ b/backends/rng.c @@ -12,6 +12,7 @@ #include "sysemu/rng.h" #include "qapi/qmp/qerror.h" +#include "qom/object_interfaces.h" void rng_backend_request_entropy(RngBackend *s, size_t size, EntropyReceiveFunc *receive_entropy, @@ -83,6 +84,10 @@ static const TypeInfo rng_backend_info = { .instance_init = rng_backend_init, .class_size = sizeof(RngBackendClass), .abstract = true, + .interfaces = (InterfaceInfo[]) { + { TYPE_USER_CREATABLE }, + { } + } }; static void register_types(void) -- cgit v1.2.3