From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MRod0-0007hI-6h for qemu-devel@nongnu.org; Fri, 17 Jul 2009 10:41:38 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MRocv-0007e4-0I for qemu-devel@nongnu.org; Fri, 17 Jul 2009 10:41:37 -0400 Received: from [199.232.76.173] (port=46461 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MRocu-0007dw-R1 for qemu-devel@nongnu.org; Fri, 17 Jul 2009 10:41:32 -0400 Received: from e4.ny.us.ibm.com ([32.97.182.144]:40514) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1MRocu-0000MH-1Y for qemu-devel@nongnu.org; Fri, 17 Jul 2009 10:41:32 -0400 Received: from d01relay02.pok.ibm.com (d01relay02.pok.ibm.com [9.56.227.234]) by e4.ny.us.ibm.com (8.13.1/8.13.1) with ESMTP id n6HEZp4s005635 for ; Fri, 17 Jul 2009 10:35:51 -0400 Received: from d01av04.pok.ibm.com (d01av04.pok.ibm.com [9.56.224.64]) by d01relay02.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id n6HEfSWY165716 for ; Fri, 17 Jul 2009 10:41:28 -0400 Received: from d01av04.pok.ibm.com (loopback [127.0.0.1]) by d01av04.pok.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id n6HEfSF8003168 for ; Fri, 17 Jul 2009 10:41:28 -0400 From: Anthony Liguori Date: Fri, 17 Jul 2009 09:41:24 -0500 Message-Id: <1247841685-18495-2-git-send-email-aliguori@us.ibm.com> In-Reply-To: <1247841685-18495-1-git-send-email-aliguori@us.ibm.com> References: <1247841685-18495-1-git-send-email-aliguori@us.ibm.com> Subject: [Qemu-devel] [PATCH 1/2] Introduce CharDriverState qdev property type List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Anthony Liguori , Paul Brook , Gerd Hoffman Signed-off-by: Anthony Liguori --- hw/qdev-properties.c | 23 +++++++++++++++++++++++ hw/qdev.h | 4 ++++ 2 files changed, 27 insertions(+), 0 deletions(-) diff --git a/hw/qdev-properties.c b/hw/qdev-properties.c index 06c25af..bfe77d1 100644 --- a/hw/qdev-properties.c +++ b/hw/qdev-properties.c @@ -145,6 +145,24 @@ PropertyInfo qdev_prop_macaddr = { .print = print_mac, }; +/* -- character device --- */ + +static int print_chrdev(DeviceState *dev, Property *prop, char *dest, size_t len) +{ + void **ptr = qdev_get_prop_ptr(dev, prop); + CharDriverState *chr = *ptr; + + return snprintf(dest, len, "chr: %s", chr->label); +} + +PropertyInfo qdev_prop_chrdev = { + .name = "chrdev", + .type = PROP_TYPE_CHRDEV, + .size = sizeof(CharDriverState*), + .print = print_chrdev, +}; + + /* --- public helpers --- */ static Property *qdev_prop_walk(Property *props, const char *name) @@ -229,6 +247,11 @@ 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_chrdev(DeviceState *dev, const char *name, CharDriverState *value) +{ + qdev_prop_set(dev, name, &value, PROP_TYPE_CHRDEV); +} + void qdev_prop_set_defaults(DeviceState *dev, Property *props) { char *dst; diff --git a/hw/qdev.h b/hw/qdev.h index 11744fa..97722b1 100644 --- a/hw/qdev.h +++ b/hw/qdev.h @@ -3,6 +3,7 @@ #include "hw.h" #include "sys-queue.h" +#include "qemu-char.h" typedef struct Property Property; @@ -61,6 +62,7 @@ enum PropertyType { PROP_TYPE_TADDR, PROP_TYPE_MACADDR, PROP_TYPE_PTR, + PROP_TYPE_CHRDEV, }; struct PropertyInfo { @@ -148,6 +150,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_chrdev; /* Set properties between creation and init. */ void *qdev_get_prop_ptr(DeviceState *dev, Property *prop); @@ -157,6 +160,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_chrdev(DeviceState *dev, const char *name, CharDriverState *chr); void qdev_prop_set_defaults(DeviceState *dev, Property *props); void qdev_prop_register_compat(CompatProperty *props); -- 1.6.2.5