From patchwork Thu Nov 21 19:33:22 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marcel Apfelbaum X-Patchwork-Id: 293233 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 6C76C2C00A4 for ; Fri, 22 Nov 2013 06:37:01 +1100 (EST) Received: from localhost ([::1]:34980 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vja3e-0001H2-Rl for incoming@patchwork.ozlabs.org; Thu, 21 Nov 2013 14:36:58 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51275) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vja32-0001B6-4Y for qemu-devel@nongnu.org; Thu, 21 Nov 2013 14:36:26 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Vja2w-00080h-5r for qemu-devel@nongnu.org; Thu, 21 Nov 2013 14:36:20 -0500 Received: from mx1.redhat.com ([209.132.183.28]:25896) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vja2v-00080d-Ts for qemu-devel@nongnu.org; Thu, 21 Nov 2013 14:36:14 -0500 Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id rALJaDMl032443 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Thu, 21 Nov 2013 14:36:13 -0500 Received: from localhost.localdomain.com (vpn-200-133.tlv.redhat.com [10.35.200.133]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id rALJa8na021358; Thu, 21 Nov 2013 14:36:12 -0500 From: Marcel Apfelbaum To: qemu-devel@nongnu.org Date: Thu, 21 Nov 2013 21:33:22 +0200 Message-Id: <1385062405-3800-3-git-send-email-marcel.a@redhat.com> In-Reply-To: <1385062405-3800-1-git-send-email-marcel.a@redhat.com> References: <1385062405-3800-1-git-send-email-marcel.a@redhat.com> X-Scanned-By: MIMEDefang 2.67 on 10.5.11.12 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 209.132.183.28 Cc: mst@redhat.com Subject: [Qemu-devel] [PATCH for-1.7 2/5] acpi unit-test: adjust the test data structure for better handling X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Ensure more then one instance of test_data may exist at a given time. It will help to compare different acpi table versions. Signed-off-by: Marcel Apfelbaum --- tests/acpi-test.c | 55 ++++++++++++++++++++++++++++++++----------------------- 1 file changed, 32 insertions(+), 23 deletions(-) diff --git a/tests/acpi-test.c b/tests/acpi-test.c index 43775cd..ca83b1d 100644 --- a/tests/acpi-test.c +++ b/tests/acpi-test.c @@ -34,7 +34,7 @@ typedef struct { uint32_t *rsdt_tables_addr; int rsdt_tables_nr; AcpiSdtTable dsdt_table; - AcpiSdtTable *ssdt_tables; + GArray *ssdt_tables; } test_data; #define LOW(x) ((x) & 0xff) @@ -118,6 +118,18 @@ static uint8_t boot_sector[0x200] = { static const char *disk = "tests/acpi-test-disk.raw"; +static void free_test_data(test_data *data) +{ + int i; + + g_free(data->rsdt_tables_addr); + for (i = 0; i < data->ssdt_tables->len; ++i) { + g_free(g_array_index(data->ssdt_tables, AcpiSdtTable, i).aml); + } + g_array_free(data->ssdt_tables, false); + g_free(data->dsdt_table.aml); +} + static uint8_t acpi_checksum(const uint8_t *data, int len) { int i; @@ -295,30 +307,30 @@ static void test_acpi_dsdt_table(test_data *data) static void test_acpi_ssdt_tables(test_data *data) { - AcpiSdtTable *ssdt_tables; + GArray *ssdt_tables; int ssdt_tables_nr = data->rsdt_tables_nr - 1; /* fadt is first */ int i; - ssdt_tables = g_new0(AcpiSdtTable, ssdt_tables_nr); + ssdt_tables = g_array_sized_new(false, true, sizeof(AcpiSdtTable), + ssdt_tables_nr); for (i = 0; i < ssdt_tables_nr; i++) { - AcpiSdtTable *ssdt_table = &ssdt_tables[i]; + AcpiSdtTable ssdt_table; uint32_t addr = data->rsdt_tables_addr[i + 1]; /* fadt is first */ - - test_dst_table(ssdt_table, addr); + test_dst_table(&ssdt_table, addr); + g_array_append_val(ssdt_tables, ssdt_table); } data->ssdt_tables = ssdt_tables; } -static void test_acpi_one(const char *params) +static void test_acpi_one(const char *params, test_data *data) { char *args; uint8_t signature_low; uint8_t signature_high; uint16_t signature; int i; - test_data data; - memset(&data, 0, sizeof(data)); + memset(data, 0, sizeof(*data)); args = g_strdup_printf("-net none -display none %s %s", params ? params : "", disk); qtest_start(args); @@ -342,20 +354,13 @@ static void test_acpi_one(const char *params) } g_assert_cmphex(signature, ==, SIGNATURE); - test_acpi_rsdp_address(&data); - test_acpi_rsdp_table(&data); - test_acpi_rsdt_table(&data); - test_acpi_fadt_table(&data); + test_acpi_rsdp_address(data); + test_acpi_rsdp_table(data); + test_acpi_rsdt_table(data); + test_acpi_fadt_table(data); test_acpi_facs_table(data); - test_acpi_dsdt_table(&data); - test_acpi_ssdt_tables(&data); - - g_free(data.rsdt_tables_addr); - for (i = 0; i < (data.rsdt_tables_nr - 1); ++i) { - g_free(data.ssdt_tables[i].aml); - } - g_free(data.ssdt_tables); - g_free(data.dsdt_table.aml); + test_acpi_dsdt_table(data); + test_acpi_ssdt_tables(data); qtest_quit(global_qtest); g_free(args); @@ -363,10 +368,14 @@ static void test_acpi_one(const char *params) static void test_acpi_tcg(void) { + test_data data; + /* Supplying -machine accel argument overrides the default (qtest). * This is to make guest actually run. */ - test_acpi_one("-machine accel=tcg"); + test_acpi_one("-machine accel=tcg", &data); + + free_test_data(&data); } int main(int argc, char *argv[])