From: Gerd Hoffmann <kraxel@redhat.com>
To: Anthony Liguori <aliguori@us.ibm.com>
Cc: qemu-devel@nongnu.org, Paul Brook <paul@codesourcery.com>
Subject: [Qemu-devel] Re: [PATCH 1/2] Introduce CharDriverState qdev property type
Date: Tue, 21 Jul 2009 17:14:33 +0200 [thread overview]
Message-ID: <4A65DB59.7020401@redhat.com> (raw)
In-Reply-To: <4A65D8CA.20004@redhat.com>
[-- Attachment #1: Type: text/plain, Size: 341 bytes --]
On 07/21/09 17:03, Gerd Hoffmann wrote:
> Yes. Same for drives and others. A generic string property should do I
> think.
Something like the attached patch. Compiles, but not tested yet.
I'm not fully sure the dynamic allocation is actually a good idea though
as it makes the string property a special case.
Commments?
cheers,
Gerd
[-- Attachment #2: fix --]
[-- Type: text/plain, Size: 2384 bytes --]
diff --git a/hw/qdev-properties.c b/hw/qdev-properties.c
index 76699b0..51cb8b3 100644
--- a/hw/qdev-properties.c
+++ b/hw/qdev-properties.c
@@ -145,6 +145,31 @@ PropertyInfo qdev_prop_macaddr = {
.print = print_mac,
};
+/* --- string --- */
+
+static int parse_str(DeviceState *dev, Property *prop, const char *str)
+{
+ char **ptr = qdev_get_prop_ptr(dev, prop);
+
+ qemu_free(*ptr);
+ *ptr = qemu_strdup(str);
+ return 0;
+}
+
+static int print_str(DeviceState *dev, Property *prop, char *dest, size_t len)
+{
+ char **ptr = qdev_get_prop_ptr(dev, prop);
+ return snprintf(dest, len, "%s", *ptr);
+}
+
+PropertyInfo qdev_prop_str = {
+ .name = "string",
+ .type = PROP_TYPE_STRING,
+ .size = sizeof(char*),
+ .parse = parse_str,
+ .print = print_str,
+};
+
/* --- public helpers --- */
static Property *qdev_prop_walk(Property *props, const char *name)
@@ -229,6 +254,12 @@ void qdev_prop_set_ptr(DeviceState *dev, const char *name, void *value)
qdev_prop_set(dev, name, &value, PROP_TYPE_PTR);
}
+void qdev_prop_set_str(DeviceState *dev, const char *name, char *str)
+{
+ char *value = qemu_strdup(str);
+ qdev_prop_set(dev, name, &value, PROP_TYPE_STRING);
+}
+
void qdev_prop_set_defaults(DeviceState *dev, Property *props)
{
char *dst;
diff --git a/hw/qdev.h b/hw/qdev.h
index 59ac8dc..ec38a37 100644
--- a/hw/qdev.h
+++ b/hw/qdev.h
@@ -61,6 +61,7 @@ enum PropertyType {
PROP_TYPE_TADDR,
PROP_TYPE_MACADDR,
PROP_TYPE_PTR,
+ PROP_TYPE_STRING,
};
struct PropertyInfo {
@@ -148,6 +149,7 @@ extern PropertyInfo qdev_prop_uint32;
extern PropertyInfo qdev_prop_hex32;
extern PropertyInfo qdev_prop_ptr;
extern PropertyInfo qdev_prop_macaddr;
+extern PropertyInfo qdev_prop_str;
/* Set properties between creation and init. */
void *qdev_get_prop_ptr(DeviceState *dev, Property *prop);
@@ -157,6 +159,7 @@ void qdev_prop_set_uint16(DeviceState *dev, const char *name, uint16_t value);
void qdev_prop_set_uint32(DeviceState *dev, const char *name, uint32_t value);
/* FIXME: Remove opaque pointer properties. */
void qdev_prop_set_ptr(DeviceState *dev, const char *name, void *value);
+void qdev_prop_set_str(DeviceState *dev, const char *name, char *value);
void qdev_prop_set_defaults(DeviceState *dev, Property *props);
void qdev_prop_register_compat(CompatProperty *props);
next prev parent reply other threads:[~2009-07-21 15:16 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-07-17 14:41 [Qemu-devel] [PATCH 0/2][RFC] Introduce macros for setting properties Anthony Liguori
2009-07-17 14:41 ` [Qemu-devel] [PATCH 1/2] Introduce CharDriverState qdev property type Anthony Liguori
2009-07-21 14:46 ` [Qemu-devel] " Gerd Hoffmann
2009-07-21 14:53 ` Anthony Liguori
2009-07-21 15:03 ` Gerd Hoffmann
2009-07-21 15:14 ` Gerd Hoffmann [this message]
2009-07-21 15:23 ` Anthony Liguori
2009-07-21 15:34 ` Gerd Hoffmann
2009-07-21 15:47 ` Anthony Liguori
2009-07-22 9:48 ` Gerd Hoffmann
2009-07-17 14:41 ` [Qemu-devel] [PATCH 2/2] Introduce macro for defining qdev properties Anthony Liguori
2009-07-17 17:23 ` Blue Swirl
2009-07-17 17:26 ` Anthony Liguori
2009-07-17 17:33 ` Paul Brook
2009-07-17 18:11 ` Anthony Liguori
2009-07-17 18:32 ` Blue Swirl
2009-07-17 20:05 ` Anthony Liguori
2009-07-17 22:58 ` Paul Brook
2009-07-18 12:43 ` Jamie Lokier
2009-07-18 16:13 ` Anthony Liguori
2009-07-20 2:29 ` Jamie Lokier
2009-07-21 8:30 ` [Qemu-devel] " Gerd Hoffmann
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=4A65DB59.7020401@redhat.com \
--to=kraxel@redhat.com \
--cc=aliguori@us.ibm.com \
--cc=paul@codesourcery.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.