diff options
author | Marc-André Lureau <marcandre.lureau@redhat.com> | 2017-10-10 00:56:01 +0200 |
---|---|---|
committer | Stefan Berger <stefanb@linux.vnet.ibm.com> | 2017-10-19 11:42:32 -0400 |
commit | 698f5daa4a81984490612a6143b46f5da7392510 (patch) | |
tree | cbfc2fa751a1da2abfb8610088a5469425f24e1f | |
parent | 3d4960c7addeb08513f04abaa3c52bb3c69f80f6 (diff) |
tpm: add a QOM TPM interface
This will simplify backend / interface objects relationship, so the
frontend interface will simply have to implement the TPM QOM interface.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
-rw-r--r-- | backends/tpm.c | 8 | ||||
-rw-r--r-- | hw/tpm/tpm_int.h | 17 | ||||
-rw-r--r-- | hw/tpm/tpm_tis.c | 4 |
3 files changed, 29 insertions, 0 deletions
diff --git a/backends/tpm.c b/backends/tpm.c index dc7c831ff8..87c5c09179 100644 --- a/backends/tpm.c +++ b/backends/tpm.c @@ -17,6 +17,7 @@ #include "qapi/error.h" #include "qapi/qmp/qerror.h" #include "sysemu/tpm.h" +#include "hw/tpm/tpm_int.h" #include "qemu/thread.h" static void tpm_backend_worker_thread(gpointer data, gpointer user_data) @@ -209,9 +210,16 @@ static const TypeInfo tpm_backend_info = { .abstract = true, }; +static const TypeInfo tpm_if_info = { + .name = TYPE_TPM_IF, + .parent = TYPE_INTERFACE, + .class_size = sizeof(TPMIfClass), +}; + static void register_types(void) { type_register_static(&tpm_backend_info); + type_register_static(&tpm_if_info); } type_init(register_types); diff --git a/hw/tpm/tpm_int.h b/hw/tpm/tpm_int.h index e231d0eb4f..eb02e7760c 100644 --- a/hw/tpm/tpm_int.h +++ b/hw/tpm/tpm_int.h @@ -13,6 +13,23 @@ #define TPM_TPM_INT_H #include "qemu/osdep.h" +#include "qom/object.h" + +#define TYPE_TPM_IF "tpm-if" +#define TPM_IF_CLASS(klass) \ + OBJECT_CLASS_CHECK(TPMIfClass, (klass), TYPE_TPM_IF) +#define TPM_IF_GET_CLASS(obj) \ + OBJECT_GET_CLASS(TPMIfClass, (obj), TYPE_TPM_IF) +#define TPM_IF(obj) \ + INTERFACE_CHECK(TPMIf, (obj), TYPE_TPM_IF) + +typedef struct TPMIf { + Object parent_obj; +} TPMIf; + +typedef struct TPMIfClass { + InterfaceClass parent_class; +} TPMIfClass; #define TPM_STANDARD_CMDLINE_OPTS \ { \ diff --git a/hw/tpm/tpm_tis.c b/hw/tpm/tpm_tis.c index d84eec48b4..dbb50043ac 100644 --- a/hw/tpm/tpm_tis.c +++ b/hw/tpm/tpm_tis.c @@ -1123,6 +1123,10 @@ static const TypeInfo tpm_tis_info = { .instance_size = sizeof(TPMState), .instance_init = tpm_tis_initfn, .class_init = tpm_tis_class_init, + .interfaces = (InterfaceInfo[]) { + { TYPE_TPM_IF }, + { } + } }; static void tpm_tis_register(void) |