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>
This commit is contained in:
parent
3d4960c7ad
commit
698f5daa4a
@ -17,6 +17,7 @@
|
|||||||
#include "qapi/error.h"
|
#include "qapi/error.h"
|
||||||
#include "qapi/qmp/qerror.h"
|
#include "qapi/qmp/qerror.h"
|
||||||
#include "sysemu/tpm.h"
|
#include "sysemu/tpm.h"
|
||||||
|
#include "hw/tpm/tpm_int.h"
|
||||||
#include "qemu/thread.h"
|
#include "qemu/thread.h"
|
||||||
|
|
||||||
static void tpm_backend_worker_thread(gpointer data, gpointer user_data)
|
static void tpm_backend_worker_thread(gpointer data, gpointer user_data)
|
||||||
@ -209,9 +210,16 @@ static const TypeInfo tpm_backend_info = {
|
|||||||
.abstract = true,
|
.abstract = true,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const TypeInfo tpm_if_info = {
|
||||||
|
.name = TYPE_TPM_IF,
|
||||||
|
.parent = TYPE_INTERFACE,
|
||||||
|
.class_size = sizeof(TPMIfClass),
|
||||||
|
};
|
||||||
|
|
||||||
static void register_types(void)
|
static void register_types(void)
|
||||||
{
|
{
|
||||||
type_register_static(&tpm_backend_info);
|
type_register_static(&tpm_backend_info);
|
||||||
|
type_register_static(&tpm_if_info);
|
||||||
}
|
}
|
||||||
|
|
||||||
type_init(register_types);
|
type_init(register_types);
|
||||||
|
@ -13,6 +13,23 @@
|
|||||||
#define TPM_TPM_INT_H
|
#define TPM_TPM_INT_H
|
||||||
|
|
||||||
#include "qemu/osdep.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 \
|
#define TPM_STANDARD_CMDLINE_OPTS \
|
||||||
{ \
|
{ \
|
||||||
|
@ -1123,6 +1123,10 @@ static const TypeInfo tpm_tis_info = {
|
|||||||
.instance_size = sizeof(TPMState),
|
.instance_size = sizeof(TPMState),
|
||||||
.instance_init = tpm_tis_initfn,
|
.instance_init = tpm_tis_initfn,
|
||||||
.class_init = tpm_tis_class_init,
|
.class_init = tpm_tis_class_init,
|
||||||
|
.interfaces = (InterfaceInfo[]) {
|
||||||
|
{ TYPE_TPM_IF },
|
||||||
|
{ }
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static void tpm_tis_register(void)
|
static void tpm_tis_register(void)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user