qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Eduardo Habkost <ehabkost@redhat.com>
To: qemu-devel@nongnu.org, Markus Armbruster <armbru@redhat.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>,
	Marcel Apfelbaum <marcel@redhat.com>,
	Igor Mammedov <imammedo@redhat.com>
Subject: [Qemu-devel] [PATCH 05/10] qdev: GlobalProperty.errp field
Date: Wed, 15 Jun 2016 17:32:48 -0300	[thread overview]
Message-ID: <1466022773-8965-6-git-send-email-ehabkost@redhat.com> (raw)
In-Reply-To: <1466022773-8965-1-git-send-email-ehabkost@redhat.com>

The new field will allow error handling to be configured by
qdev_prop_register_global() callers: &error_fatal and
&error_abort can be used to make QEMU exit or abort if any errors
are reported when applying the properties.

Suggested-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
 hw/core/qdev-properties.c | 8 ++++++--
 include/hw/qdev-core.h    | 4 ++++
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/hw/core/qdev-properties.c b/hw/core/qdev-properties.c
index cd19603..0fe7214 100644
--- a/hw/core/qdev-properties.c
+++ b/hw/core/qdev-properties.c
@@ -1078,10 +1078,14 @@ static void qdev_prop_set_globals_for_type(DeviceState *dev,
         prop->used = true;
         object_property_parse(OBJECT(dev), prop->value, prop->property, &err);
         if (err != NULL) {
-            assert(prop->user_provided);
             error_prepend(&err, "can't apply global %s.%s=%s: ",
                           prop->driver, prop->property, prop->value);
-            error_reportf_err(err, "Warning: ");
+            if (prop->errp) {
+                error_propagate(prop->errp, err);
+            } else {
+                assert(prop->user_provided);
+                error_reportf_err(err, "Warning: ");
+            }
         }
     }
 }
diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h
index 24aa0a7..16e7cc0 100644
--- a/include/hw/qdev-core.h
+++ b/include/hw/qdev-core.h
@@ -256,6 +256,9 @@ struct PropertyInfo {
 
 /**
  * GlobalProperty:
+ * @errp: If set, error_propagate() will be called on errors when applying
+ *        the property. &error_abort or &error_fatal may be used to make
+ *        errors automatically abort or exit QEMU.
  * @user_provided: Set to true if property comes from user-provided config
  * (command-line or config file).
  * @used: Set to true if property was used when initializing a device.
@@ -264,6 +267,7 @@ typedef struct GlobalProperty {
     const char *driver;
     const char *property;
     const char *value;
+    Error **errp;
     bool user_provided;
     bool used;
 } GlobalProperty;
-- 
2.5.5

  parent reply	other threads:[~2016-06-15 20:33 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-15 20:32 [Qemu-devel] [PATCH 00/10] globals: Clean up validation and error checking Eduardo Habkost
2016-06-15 20:32 ` [Qemu-devel] [PATCH 01/10] qdev: Don't stop applying globals on first error Eduardo Habkost
2016-06-19 16:40   ` Marcel Apfelbaum
2016-06-20  7:43   ` Markus Armbruster
2016-06-15 20:32 ` [Qemu-devel] [PATCH 02/10] qdev: Eliminate qemu_add_globals() function Eduardo Habkost
2016-06-20 12:03   ` Igor Mammedov
2016-06-15 20:32 ` [Qemu-devel] [PATCH 03/10] vl: Reject invalid class names on -global Eduardo Habkost
2016-06-20  7:56   ` Markus Armbruster
2016-06-20 12:44   ` Igor Mammedov
2016-06-15 20:32 ` [Qemu-devel] [PATCH 04/10] qdev: Use error_prepend() for errors applying globals Eduardo Habkost
2016-06-20  8:02   ` Markus Armbruster
2016-06-20 13:43     ` Eduardo Habkost
2016-06-15 20:32 ` Eduardo Habkost [this message]
2016-06-20  8:14   ` [Qemu-devel] [PATCH 05/10] qdev: GlobalProperty.errp field Markus Armbruster
2016-06-20 13:45     ` Eduardo Habkost
2016-06-15 20:32 ` [Qemu-devel] [PATCH 06/10] machine: Add machine_register_compat_props() function Eduardo Habkost
2016-06-19 16:25   ` Marcel Apfelbaum
2016-06-15 20:32 ` [Qemu-devel] [PATCH 07/10] vl: Set errp to &error_abort on machine compat_props Eduardo Habkost
2016-06-19 16:27   ` Marcel Apfelbaum
2016-06-15 20:32 ` [Qemu-devel] [PATCH 08/10] qdev: Eliminate "global not used" warning Eduardo Habkost
2016-06-15 20:32 ` [Qemu-devel] [PATCH 09/10] qdev: Eliminate GlobalProperty 'used' and 'user_provided' fields Eduardo Habkost
2016-06-15 20:32 ` [Qemu-devel] [PATCH 10/10] machine: Skip global registration for non-existing classes Eduardo Habkost
2016-06-19 16:39   ` Marcel Apfelbaum
2016-06-19 16:50     ` Marcel Apfelbaum
2016-06-20 13:38       ` Eduardo Habkost
2016-06-20 13:11 ` [Qemu-devel] [PATCH 00/10] globals: Clean up validation and error checking Igor Mammedov
2016-06-20 13:48   ` Eduardo Habkost

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=1466022773-8965-6-git-send-email-ehabkost@redhat.com \
    --to=ehabkost@redhat.com \
    --cc=armbru@redhat.com \
    --cc=imammedo@redhat.com \
    --cc=marcel@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).