mirror of
https://github.com/qemu/qemu.git
synced 2024-11-24 03:13:44 +08:00
qapi: Convert simple union TpmTypeOptions to flat one
Simple unions predate flat unions. Having both complicates the QAPI schema language and the QAPI generator. We haven't been using simple unions in new code for a long time, because they are less flexible and somewhat awkward on the wire. To prepare for their removal, convert simple union TpmTypeOptions to an equivalent flat one, with existing enum TpmType replacing implicit enum TpmTypeOptionsKind. Adds some boilerplate to the schema, which is a bit ugly, but a lot easier to maintain than the simple union feature. Cc: Stefan Berger <stefanb@linux.vnet.ibm.com> Signed-off-by: Markus Armbruster <armbru@redhat.com> Acked-by: Stefan Berger <stefanb@linux.ibm.com> Reviewed-by: Eric Blake <eblake@redhat.com> Message-Id: <20210917143134.412106-6-armbru@redhat.com> [Indentation tidied up]
This commit is contained in:
parent
b6fd5434de
commit
39dc3e4a4e
@ -623,7 +623,7 @@ static TpmTypeOptions *tpm_emulator_get_tpm_options(TPMBackend *tb)
|
||||
TPMEmulator *tpm_emu = TPM_EMULATOR(tb);
|
||||
TpmTypeOptions *options = g_new0(TpmTypeOptions, 1);
|
||||
|
||||
options->type = TPM_TYPE_OPTIONS_KIND_EMULATOR;
|
||||
options->type = TPM_TYPE_EMULATOR;
|
||||
options->u.emulator.data = QAPI_CLONE(TPMEmulatorOptions, tpm_emu->options);
|
||||
|
||||
return options;
|
||||
|
@ -321,7 +321,7 @@ static TpmTypeOptions *tpm_passthrough_get_tpm_options(TPMBackend *tb)
|
||||
{
|
||||
TpmTypeOptions *options = g_new0(TpmTypeOptions, 1);
|
||||
|
||||
options->type = TPM_TYPE_OPTIONS_KIND_PASSTHROUGH;
|
||||
options->type = TPM_TYPE_PASSTHROUGH;
|
||||
options->u.passthrough.data = QAPI_CLONE(TPMPassthroughOptions,
|
||||
TPM_PASSTHROUGH(tb)->options);
|
||||
|
||||
|
@ -925,10 +925,10 @@ void hmp_info_tpm(Monitor *mon, const QDict *qdict)
|
||||
c, TpmModel_str(ti->model));
|
||||
|
||||
monitor_printf(mon, " \\ %s: type=%s",
|
||||
ti->id, TpmTypeOptionsKind_str(ti->options->type));
|
||||
ti->id, TpmType_str(ti->options->type));
|
||||
|
||||
switch (ti->options->type) {
|
||||
case TPM_TYPE_OPTIONS_KIND_PASSTHROUGH:
|
||||
case TPM_TYPE_PASSTHROUGH:
|
||||
tpo = ti->options->u.passthrough.data;
|
||||
monitor_printf(mon, "%s%s%s%s",
|
||||
tpo->has_path ? ",path=" : "",
|
||||
@ -936,11 +936,11 @@ void hmp_info_tpm(Monitor *mon, const QDict *qdict)
|
||||
tpo->has_cancel_path ? ",cancel-path=" : "",
|
||||
tpo->has_cancel_path ? tpo->cancel_path : "");
|
||||
break;
|
||||
case TPM_TYPE_OPTIONS_KIND_EMULATOR:
|
||||
case TPM_TYPE_EMULATOR:
|
||||
teo = ti->options->u.emulator.data;
|
||||
monitor_printf(mon, ",chardev=%s", teo->chardev);
|
||||
break;
|
||||
case TPM_TYPE_OPTIONS_KIND__MAX:
|
||||
case TPM_TYPE__MAX:
|
||||
break;
|
||||
}
|
||||
monitor_printf(mon, "\n");
|
||||
|
@ -99,6 +99,24 @@
|
||||
{ 'struct': 'TPMEmulatorOptions', 'data': { 'chardev' : 'str' },
|
||||
'if': 'CONFIG_TPM' }
|
||||
|
||||
##
|
||||
# @TPMPassthroughOptionsWrapper:
|
||||
#
|
||||
# Since: 1.5
|
||||
##
|
||||
{ 'struct': 'TPMPassthroughOptionsWrapper',
|
||||
'data': { 'data': 'TPMPassthroughOptions' },
|
||||
'if': 'CONFIG_TPM' }
|
||||
|
||||
##
|
||||
# @TPMEmulatorOptionsWrapper:
|
||||
#
|
||||
# Since: 2.11
|
||||
##
|
||||
{ 'struct': 'TPMEmulatorOptionsWrapper',
|
||||
'data': { 'data': 'TPMEmulatorOptions' },
|
||||
'if': 'CONFIG_TPM' }
|
||||
|
||||
##
|
||||
# @TpmTypeOptions:
|
||||
#
|
||||
@ -110,8 +128,10 @@
|
||||
# Since: 1.5
|
||||
##
|
||||
{ 'union': 'TpmTypeOptions',
|
||||
'data': { 'passthrough' : 'TPMPassthroughOptions',
|
||||
'emulator': 'TPMEmulatorOptions' },
|
||||
'base': { 'type': 'TpmType' },
|
||||
'discriminator': 'type',
|
||||
'data': { 'passthrough' : 'TPMPassthroughOptionsWrapper',
|
||||
'emulator': 'TPMEmulatorOptionsWrapper' },
|
||||
'if': 'CONFIG_TPM' }
|
||||
|
||||
##
|
||||
|
Loading…
Reference in New Issue
Block a user