From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55023) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZqqMH-0003P4-TW for qemu-devel@nongnu.org; Mon, 26 Oct 2015 18:35:21 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZqqMG-00074U-LQ for qemu-devel@nongnu.org; Mon, 26 Oct 2015 18:35:17 -0400 Received: from mx1.redhat.com ([209.132.183.28]:48619) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZqqMG-00074I-Ex for qemu-devel@nongnu.org; Mon, 26 Oct 2015 18:35:16 -0400 Received: from int-mx13.intmail.prod.int.phx2.redhat.com (int-mx13.intmail.prod.int.phx2.redhat.com [10.5.11.26]) by mx1.redhat.com (Postfix) with ESMTPS id 2CBA88F267 for ; Mon, 26 Oct 2015 22:35:16 +0000 (UTC) From: Eric Blake Date: Mon, 26 Oct 2015 16:34:59 -0600 Message-Id: <1445898903-12082-21-git-send-email-eblake@redhat.com> In-Reply-To: <1445898903-12082-1-git-send-email-eblake@redhat.com> References: <1445898903-12082-1-git-send-email-eblake@redhat.com> Subject: [Qemu-devel] [PATCH v11 20/24] memory: Convert to new qapi union layout List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Igor Mammedov , "Michael S. Tsirkin" , armbru@redhat.com, Eduardo Habkost , Luiz Capitulino We have two issues with our qapi union layout: 1) Even though the QMP wire format spells the tag 'type', the C code spells it 'kind', requiring some hacks in the generator. 2) The C struct uses an anonymous union, which places all tag values in the same namespace as all non-variant members. This leads to spurious collisions if a tag value matches a QMP name. Make the conversion to the new layout for memory-related code. Signed-off-by: Eric Blake --- v11: no change v10: no change v9: new patch, but incorporates parts of v5 31/46 and Markus' RFC: http://lists.gnu.org/archive/html/qemu-devel/2015-10/msg02236.html --- hmp.c | 6 +++--- hw/mem/pc-dimm.c | 6 +++--- numa.c | 8 ++++---- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/hmp.c b/hmp.c index cc4946d..39d5815 100644 --- a/hmp.c +++ b/hmp.c @@ -1958,12 +1958,12 @@ void hmp_info_memory_devices(Monitor *mon, const QDict *qdict) value = info->value; if (value) { - switch (value->kind) { + switch (value->type) { case MEMORY_DEVICE_INFO_KIND_DIMM: - di = value->dimm; + di = value->u.dimm; monitor_printf(mon, "Memory device [%s]: \"%s\"\n", - MemoryDeviceInfoKind_lookup[value->kind], + MemoryDeviceInfoKind_lookup[value->type], di->id ? di->id : ""); monitor_printf(mon, " addr: 0x%" PRIx64 "\n", di->addr); monitor_printf(mon, " slot: %" PRId64 "\n", di->slot); diff --git a/hw/mem/pc-dimm.c b/hw/mem/pc-dimm.c index 2bae994..fd84a90 100644 --- a/hw/mem/pc-dimm.c +++ b/hw/mem/pc-dimm.c @@ -180,7 +180,7 @@ int qmp_pc_dimm_device_list(Object *obj, void *opaque) NULL); di->memdev = object_get_canonical_path(OBJECT(dimm->hostmem)); - info->dimm = di; + info->u.dimm = di; elem->value = info; elem->next = NULL; **prev = elem; @@ -204,9 +204,9 @@ ram_addr_t get_current_ram_size(void) MemoryDeviceInfo *value = info->value; if (value) { - switch (value->kind) { + switch (value->type) { case MEMORY_DEVICE_INFO_KIND_DIMM: - size += value->dimm->size; + size += value->u.dimm->size; break; default: break; diff --git a/numa.c b/numa.c index e9b18f5..fdfe294 100644 --- a/numa.c +++ b/numa.c @@ -226,9 +226,9 @@ static int parse_numa(void *opaque, QemuOpts *opts, Error **errp) goto error; } - switch (object->kind) { + switch (object->type) { case NUMA_OPTIONS_KIND_NODE: - numa_node_parse(object->node, opts, &err); + numa_node_parse(object->u.node, opts, &err); if (err) { goto error; } @@ -487,9 +487,9 @@ static void numa_stat_memory_devices(uint64_t node_mem[]) MemoryDeviceInfo *value = info->value; if (value) { - switch (value->kind) { + switch (value->type) { case MEMORY_DEVICE_INFO_KIND_DIMM: - node_mem[value->dimm->node] += value->dimm->size; + node_mem[value->u.dimm->node] += value->u.dimm->size; break; default: break; -- 2.4.3