From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MPEFj-0002rJ-1n for qemu-devel@nongnu.org; Fri, 10 Jul 2009 07:26:55 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MPEFU-0002Ta-8D for qemu-devel@nongnu.org; Fri, 10 Jul 2009 07:26:45 -0400 Received: from [199.232.76.173] (port=37951 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MPEFS-0002SW-VY for qemu-devel@nongnu.org; Fri, 10 Jul 2009 07:26:39 -0400 Received: from mx2.redhat.com ([66.187.237.31]:38366) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MPEFS-0005d7-DP for qemu-devel@nongnu.org; Fri, 10 Jul 2009 07:26:38 -0400 Received: from int-mx2.corp.redhat.com (int-mx2.corp.redhat.com [172.16.27.26]) by mx2.redhat.com (8.13.8/8.13.8) with ESMTP id n6ABQbFl030024 for ; Fri, 10 Jul 2009 07:26:37 -0400 From: Gerd Hoffmann Date: Fri, 10 Jul 2009 13:26:16 +0200 Message-Id: <1247225179-5495-11-git-send-email-kraxel@redhat.com> In-Reply-To: <1247225179-5495-1-git-send-email-kraxel@redhat.com> References: <1247225179-5495-1-git-send-email-kraxel@redhat.com> Subject: [Qemu-devel] [PATCH 10/13] qdev: add user-specified identifier to devices. List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Gerd Hoffmann Add id field to DeviceState. Make qdev_device_add() fill it if supplied on the command line (i.e. -device foo,id=bar). Make "info qtree" print it. This helps users and management apps identifying devices in monitor output, which is especially useful with otherwise identical devices such as two virtio disks. Signed-off-by: Gerd Hoffmann --- hw/qdev.c | 5 ++++- hw/qdev.h | 1 + 2 files changed, 5 insertions(+), 1 deletions(-) diff --git a/hw/qdev.c b/hw/qdev.c index dcca6ac..a075e86 100644 --- a/hw/qdev.c +++ b/hw/qdev.c @@ -153,6 +153,7 @@ DeviceState *qdev_device_add(const char *cmdline) qdev = info->bus_info->add_dev(driver, strlen(addr) ? addr : NULL); if (params) { + get_param_value(qdev->id, sizeof(qdev->id), "id", params); while (params[0]) { if (2 != sscanf(params, "%31[^=]=%255[^,]%n", tag, value, &n)) { fprintf(stderr, "parse error at \"%s\"\n", params); @@ -161,6 +162,8 @@ DeviceState *qdev_device_add(const char *cmdline) params += n; if (strcmp(tag, "addr") == 0) continue; + if (strcmp(tag, "id") == 0) + continue; if (-1 == qdev_prop_parse(qdev, tag, value)) { fprintf(stderr, "can't set property \"%s\" to \"%s\" for \"%s\"\n", tag, value, driver); @@ -336,7 +339,7 @@ static void qdev_print_props(Monitor *mon, DeviceState *dev, Property *props, static void qdev_print(Monitor *mon, DeviceState *dev, int indent) { BusState *child; - qdev_printf("dev: %s\n", dev->info->name); + qdev_printf("dev: %s, id \"%s\"\n", dev->info->name, dev->id); indent += 2; if (dev->num_gpio_in) { qdev_printf("gpio-in %d\n", dev->num_gpio_in); diff --git a/hw/qdev.h b/hw/qdev.h index 15c1481..c61ef4a 100644 --- a/hw/qdev.h +++ b/hw/qdev.h @@ -17,6 +17,7 @@ typedef struct BusInfo BusInfo; /* This structure should not be accessed directly. We declare it here so that it can be embedded in individual device state structures. */ struct DeviceState { + char id[32]; DeviceInfo *info; BusState *parent_bus; int num_gpio_out; -- 1.6.2.5