From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55067) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZqqML-0003XW-UF for qemu-devel@nongnu.org; Mon, 26 Oct 2015 18:35:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZqqMH-00074c-0t for qemu-devel@nongnu.org; Mon, 26 Oct 2015 18:35:21 -0400 Received: from mx1.redhat.com ([209.132.183.28]:46161) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZqqMG-00074Y-Sz 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 98B2EC0AF79E for ; Mon, 26 Oct 2015 22:35:16 +0000 (UTC) From: Eric Blake Date: Mon, 26 Oct 2015 16:35:00 -0600 Message-Id: <1445898903-12082-22-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 21/24] tpm: Convert to new qapi union layout List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: armbru@redhat.com, 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 TPM-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 +++--- tpm.c | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/hmp.c b/hmp.c index 39d5815..a15d00c 100644 --- a/hmp.c +++ b/hmp.c @@ -841,11 +841,11 @@ void hmp_info_tpm(Monitor *mon, const QDict *qdict) c, TpmModel_lookup[ti->model]); monitor_printf(mon, " \\ %s: type=%s", - ti->id, TpmTypeOptionsKind_lookup[ti->options->kind]); + ti->id, TpmTypeOptionsKind_lookup[ti->options->type]); - switch (ti->options->kind) { + switch (ti->options->type) { case TPM_TYPE_OPTIONS_KIND_PASSTHROUGH: - tpo = ti->options->passthrough; + tpo = ti->options->u.passthrough; monitor_printf(mon, "%s%s%s%s", tpo->has_path ? ",path=" : "", tpo->has_path ? tpo->path : "", diff --git a/tpm.c b/tpm.c index 4e9b109..f2c59d1 100644 --- a/tpm.c +++ b/tpm.c @@ -260,9 +260,9 @@ static TPMInfo *qmp_query_tpm_inst(TPMBackend *drv) switch (drv->ops->type) { case TPM_TYPE_PASSTHROUGH: - res->options->kind = TPM_TYPE_OPTIONS_KIND_PASSTHROUGH; + res->options->type = TPM_TYPE_OPTIONS_KIND_PASSTHROUGH; tpo = g_new0(TPMPassthroughOptions, 1); - res->options->passthrough = tpo; + res->options->u.passthrough = tpo; if (drv->path) { tpo->path = g_strdup(drv->path); tpo->has_path = true; -- 2.4.3