From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MMJab-0003CU-VJ for qemu-devel@nongnu.org; Thu, 02 Jul 2009 06:32:26 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MMJaW-00035j-Ao for qemu-devel@nongnu.org; Thu, 02 Jul 2009 06:32:24 -0400 Received: from [199.232.76.173] (port=36452 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MMJaV-00035C-J8 for qemu-devel@nongnu.org; Thu, 02 Jul 2009 06:32:20 -0400 Received: from mx2.redhat.com ([66.187.237.31]:34412) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MMJaU-00007b-RO for qemu-devel@nongnu.org; Thu, 02 Jul 2009 06:32:19 -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 n62AWIQe005925 for ; Thu, 2 Jul 2009 06:32:18 -0400 From: Gerd Hoffmann Date: Thu, 2 Jul 2009 12:32:10 +0200 Message-Id: <1246530731-18828-2-git-send-email-kraxel@redhat.com> In-Reply-To: <1246530731-18828-1-git-send-email-kraxel@redhat.com> References: <1246530731-18828-1-git-send-email-kraxel@redhat.com> Subject: [Qemu-devel] [PATCH 1/2] 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 2b8994a..735fe4e 100644 --- a/hw/qdev.c +++ b/hw/qdev.c @@ -145,6 +145,7 @@ DeviceState *qdev_device_add(const char *cmdline) qdev = info->bus_info->add(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); @@ -153,6 +154,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); @@ -308,7 +311,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 8531276..ad3f2a6 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