[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 07/13] acpi: make toplevel ACPI tables blob a dedica
From: |
Igor Mammedov |
Subject: |
[Qemu-devel] [PATCH 07/13] acpi: make toplevel ACPI tables blob a dedicated object |
Date: |
Wed, 28 Jan 2015 10:03:31 +0000 |
it will help to generalize and reuse blob intitalization/
destruction code.
Signed-off-by: Igor Mammedov <address@hidden>
---
hw/acpi/acpi-build-utils.c | 12 +++++++++++-
hw/i386/acpi-build.c | 4 ++--
include/hw/acpi/acpi-build-utils.h | 17 ++++++++++++++++-
3 files changed, 29 insertions(+), 4 deletions(-)
diff --git a/hw/acpi/acpi-build-utils.c b/hw/acpi/acpi-build-utils.c
index 02f60d7..bffad1e 100644
--- a/hw/acpi/acpi-build-utils.c
+++ b/hw/acpi/acpi-build-utils.c
@@ -320,9 +320,10 @@ void aml_append(AcpiAml *parent_ctx, AcpiAml *child)
uint8_t *start = (uint8_t *)parent_ctx->buf->data +
parent_ctx->buf->len;
uint32_t le32_len = cpu_to_le32(child->buf->len);
+ AcpiAmlTablesBlob *tables_blob = AML_TABLES_BLOB(parent_ctx);
/* create linker entry for the DefinitionBlock */
- bios_linker_loader_add_checksum(parent_ctx->linker,
+ bios_linker_loader_add_checksum(tables_blob->linker,
ACPI_BUILD_TABLE_FILE,
parent_ctx->buf->data,
start, child->buf->len, start + 9 /* checksum offset */);
@@ -948,9 +949,18 @@ static const TypeInfo aml_object_type_info = {
.class_size = sizeof(AcpiAmlClass),
};
+static const TypeInfo aml_tables_blob_type_info = {
+ .name = TYPE_AML_TABLES_BLOB,
+ .parent = TYPE_AML_OBJECT,
+ .instance_size = sizeof(AcpiAmlTablesBlob),
+ .abstract = false,
+ .class_size = sizeof(AcpiAmlTablesBlobClass),
+};
+
static void aml_register_types(void)
{
type_register_static(&aml_object_type_info);
+ type_register_static(&aml_tables_blob_type_info);
}
type_init(aml_register_types)
diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
index f456f53..624c903 100644
--- a/hw/i386/acpi-build.c
+++ b/hw/i386/acpi-build.c
@@ -1279,10 +1279,10 @@ struct AcpiBuildTables {
static inline void acpi_build_tables_init(AcpiBuildTables *tables)
{
tables->rsdp = g_array_new(false, true /* clear */, 1);
- tables->table_data = AML_OBJECT(object_new(TYPE_AML_OBJECT));
tables->tcpalog = g_array_new(false, true /* clear */, 1);
tables->linker = bios_linker_loader_init();
- tables->table_data->linker = tables->linker;
+ tables->table_data = AML_OBJECT(object_new(TYPE_AML_TABLES_BLOB));
+ AML_TABLES_BLOB(tables->table_data)->linker = tables->linker;
}
static inline void acpi_build_tables_cleanup(AcpiBuildTables *tables, bool
mfre)
diff --git a/include/hw/acpi/acpi-build-utils.h
b/include/hw/acpi/acpi-build-utils.h
index c36ddb6..b2d023e 100644
--- a/include/hw/acpi/acpi-build-utils.h
+++ b/include/hw/acpi/acpi-build-utils.h
@@ -30,13 +30,28 @@ typedef struct AcpiAml {
GArray *buf;
uint8_t op;
AcpiBlockFlags block_flags;
- GArray *linker;
} AcpiAml;
typedef struct AcpiAmlClass {
ObjectClass parent_class;
} AcpiAmlClass;
+#define TYPE_AML_TABLES_BLOB "aml-tables-blob"
+#define AML_TABLES_BLOB(obj) OBJECT_CHECK(AcpiAmlTablesBlob, (obj),
TYPE_AML_TABLES_BLOB)
+#define AML_TABLES_BLOB_CLASS(klass) \
+ OBJECT_CLASS_CHECK(AcpiAmlTablesBlobClass, (klass), TYPE_AML_TABLES_BLOB)
+#define AML_TABLES_BLOB_GET_CLASS \
+ OBJECT_GET_CLASS(AcpiAmlTablesBlobClass, (obj), TYPE_AML_TABLES_BLOB)
+
+typedef struct AcpiAmlTablesBlob {
+ AcpiAml parent_obj;
+ GArray *linker;
+} AcpiAmlTablesBlob;
+
+typedef struct AcpiAmlTablesBlobClass {
+ AcpiAmlClass parent_class;
+} AcpiAmlTablesBlobClass;
+
typedef enum {
acpi_decode10 = 0,
acpi_decode16 = 1,
--
1.8.3.1
- [Qemu-devel] [PATCH 02/13] make toplevel ACPI tables blob a pointer, (continued)
- [Qemu-devel] [PATCH 02/13] make toplevel ACPI tables blob a pointer, Igor Mammedov, 2015/01/28
- [Qemu-devel] [PATCH 04/13] acpi: make AcpiAml an OQM object, Igor Mammedov, 2015/01/28
- [Qemu-devel] [PATCH 03/13] qom: add support for weak referenced object: aka UnownedObject, Igor Mammedov, 2015/01/28
- Re: [Qemu-devel] [PATCH 03/13] qom: add support for weak referenced object: aka UnownedObject, Paolo Bonzini, 2015/01/28
- Re: [Qemu-devel] [PATCH 03/13] qom: add support for weak referenced object: aka UnownedObject, Igor Mammedov, 2015/01/28
- [Qemu-devel] [PATCH 05/13] acpi: use TYPE_AML_OBJECT inside of AML API, Igor Mammedov, 2015/01/28
- [Qemu-devel] [PATCH 09/13] acpi: add aml_blob() helper, Igor Mammedov, 2015/01/28
- [Qemu-devel] [PATCH 08/13] i386: acpi: hack not yet converted tables calls to deal with table_data being a pointer, Igor Mammedov, 2015/01/28
- [Qemu-devel] [PATCH 01/13] convert to passing AcpiAml by pointers, Igor Mammedov, 2015/01/28
- [Qemu-devel] [PATCH 10/13] i386: acpi: add DSDT table using AML API, Igor Mammedov, 2015/01/28
- [Qemu-devel] [PATCH 07/13] acpi: make toplevel ACPI tables blob a dedicated object,
Igor Mammedov <=
- [Qemu-devel] [PATCH 11/13] acpi: acpi_add_table() to common cross target file, Igor Mammedov, 2015/01/28
- [Qemu-devel] [PATCH 12/13] acpi: prepare for API internal collection of RSDT entries, Igor Mammedov, 2015/01/28
- [Qemu-devel] [PATCH 13/13] i386: acpi: mark SSDT as RSDT entry so API would add entry to RSDT automatically, Igor Mammedov, 2015/01/28
- [Qemu-devel] [PATCH 06/13] acpi: use TYPE_AML_OBJECT for toplevel ACPI tables blob, Igor Mammedov, 2015/01/28
- Re: [Qemu-devel] [PATCH 00/13] convert AML API to QOM, Andrew Jones, 2015/01/28
- Re: [Qemu-devel] [PATCH v2 01/47] acpi: introduce AML composer aml_append(), Michael S. Tsirkin, 2015/01/28
- Re: [Qemu-devel] [PATCH v2 01/47] acpi: introduce AML composer aml_append(), Igor Mammedov, 2015/01/28
- Re: [Qemu-devel] [PATCH v2 01/47] acpi: introduce AML composer aml_append(), Michael S. Tsirkin, 2015/01/28
- Re: [Qemu-devel] [PATCH v2 01/47] acpi: introduce AML composer aml_append(), Igor Mammedov, 2015/01/28
- Re: [Qemu-devel] [PATCH v2 01/47] acpi: introduce AML composer aml_append(), Michael S. Tsirkin, 2015/01/28