[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH RFC 25/48] qdev: Hide "ptr" properties from users
From: |
Markus Armbruster |
Subject: |
[Qemu-devel] [PATCH RFC 25/48] qdev: Hide "ptr" properties from users |
Date: |
Wed, 24 Feb 2010 18:55:37 +0100 |
Users can't set them, so qdev_device_help() shouldn't list them. Fix
that. Also make qdev_prop_parse() hide them instead of printing a
meaningless "has no parser" error message.
Their value means nothing to users, so qdev_print_props() shouldn't
print it. Fix by removing their print method.
Their only use is dirty hacks. Document that.
Signed-off-by: Markus Armbruster <address@hidden>
---
hw/qdev-properties.c | 21 ++++++++-------------
hw/qdev.c | 15 +++++++++++++++
2 files changed, 23 insertions(+), 13 deletions(-)
diff --git a/hw/qdev-properties.c b/hw/qdev-properties.c
index 277ff9e..8e96805 100644
--- a/hw/qdev-properties.c
+++ b/hw/qdev-properties.c
@@ -399,17 +399,11 @@ PropertyInfo qdev_prop_vlan = {
/* --- pointer --- */
-static int print_ptr(DeviceState *dev, Property *prop, char *dest, size_t len)
-{
- void **ptr = qdev_get_prop_ptr(dev, prop);
- return snprintf(dest, len, "<%p>", *ptr);
-}
-
+/* Not a proper property, just for dirty hacks. FIXME Remove it! */
PropertyInfo qdev_prop_ptr = {
.name = "ptr",
.type = PROP_TYPE_PTR,
.size = sizeof(void*),
- .print = print_ptr,
};
/* --- mac address --- */
@@ -543,16 +537,17 @@ int qdev_prop_parse(DeviceState *dev, const char *name,
const char *value)
Property *prop;
prop = qdev_prop_find(dev, name);
- if (!prop) {
+ /*
+ * TODO Properties without a parse method are just for dirty
+ * hacks. qdev_prop_ptr is the only such PropertyInfo. It's
+ * marked for removal. The test !prop->info->parse should be
+ * removed along with it.
+ */
+ if (!prop || !prop->info->parse) {
fprintf(stderr, "property \"%s.%s\" not found\n",
dev->info->name, name);
return -1;
}
- if (!prop->info->parse) {
- fprintf(stderr, "property \"%s.%s\" has no parser\n",
- dev->info->name, name);
- return -1;
- }
if (prop->info->parse(dev, prop, value) != 0) {
fprintf(stderr, "property \"%s.%s\": failed to parse \"%s\"\n",
dev->info->name, name, value);
diff --git a/hw/qdev.c b/hw/qdev.c
index 274b052..4d5ede7 100644
--- a/hw/qdev.c
+++ b/hw/qdev.c
@@ -180,6 +180,15 @@ int qdev_device_help(QemuOpts *opts)
}
for (prop = info->props; prop && prop->name; prop++) {
+ /*
+ * TODO Properties without a parser are just for dirty hacks.
+ * qdev_prop_ptr is the only such PropertyInfo. It's marked
+ * for removal. This conditional should be removed along with
+ * it.
+ */
+ if (!prop->info->parse) {
+ continue; /* no way to set it, don't show */
+ }
error_printf("%s.%s=%s\n", info->name, prop->name, prop->info->name);
}
return 1;
@@ -682,6 +691,12 @@ static void qdev_print_props(Monitor *mon, DeviceState
*dev, Property *props,
if (!props)
return;
while (props->name) {
+ /*
+ * TODO Properties without a print method are just for dirty
+ * hacks. qdev_prop_ptr is the only such PropertyInfo. It's
+ * marked for removal. The test props->info->print should be
+ * removed along with it.
+ */
if (props->info->print) {
props->info->print(dev, props, buf, sizeof(buf));
qdev_printf("%s-prop: %s = %s\n", prefix, props->name, buf);
--
1.6.6
- [Qemu-devel] [PATCH RFC 02/48] error: Move qemu_error() & friends from monitor.c to own file, (continued)
- [Qemu-devel] [PATCH RFC 02/48] error: Move qemu_error() & friends from monitor.c to own file, Markus Armbruster, 2010/02/24
- [Qemu-devel] [PATCH RFC 17/48] error: Infrastructure to track locations for error reporting, Markus Armbruster, 2010/02/24
- [Qemu-devel] [PATCH RFC 16/48] error: Don't abuse qemu_error() for non-error in qbus_find(), Markus Armbruster, 2010/02/24
- [Qemu-devel] [PATCH RFC 21/48] error: Track locations on command line, Markus Armbruster, 2010/02/24
- [Qemu-devel] [PATCH RFC 28/48] error: New QERR_PROPERTY_VALUE_BAD, Markus Armbruster, 2010/02/24
- [Qemu-devel] [PATCH RFC 01/48] monitor: Factor monitor_set_error() out of qemu_error_internal(), Markus Armbruster, 2010/02/24
- [Qemu-devel] [PATCH RFC 22/48] qdev: Fix -device and device_add to handle unsuitable bus gracefully, Markus Armbruster, 2010/02/24
- [Qemu-devel] [PATCH RFC 24/48] qdev: Hide "no_user" devices from users, Markus Armbruster, 2010/02/24
- [Qemu-devel] [PATCH RFC 44/48] qemu-option: Move the implied first name into QemuOptsList, Markus Armbruster, 2010/02/24
- [Qemu-devel] [PATCH RFC 25/48] qdev: Hide "ptr" properties from users,
Markus Armbruster <=
- [Qemu-devel] [PATCH RFC 46/48] monitor: New argument type 'O', Markus Armbruster, 2010/02/24
- [Qemu-devel] [PATCH RFC 43/48] qemu-option: Functions to convert to/from QDict., Markus Armbruster, 2010/02/24
- [Qemu-devel] [PATCH RFC 30/48] qdev: Relax parsing of bus option, Markus Armbruster, 2010/02/24
- [Qemu-devel] [PATCH RFC 13/48] error: Make qemu_error() add a newline, strip it from arguments, Markus Armbruster, 2010/02/24
- [Qemu-devel] [PATCH RFC 26/48] error: Polish human-readable error descriptions, Markus Armbruster, 2010/02/24
- [Qemu-devel] [PATCH RFC 42/48] error: Convert do_device_add() to QError, Markus Armbruster, 2010/02/24
- [Qemu-devel] [PATCH RFC 48/48] monitor: convert do_device_add() to QObject, Markus Armbruster, 2010/02/24