ACPICA: acpidump: Add memory/string OSL usage to improve portability
authorLv Zheng <lv.zheng@intel.com>
Tue, 8 Jul 2014 02:07:33 +0000 (10:07 +0800)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Tue, 8 Jul 2014 12:22:27 +0000 (14:22 +0200)
This patch adds code to use generic OSL for acpidump to improve the
portability of this tool. Lv Zheng.

Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
include/acpi/platform/acenv.h
tools/power/acpi/tools/acpidump/apdump.c
tools/power/acpi/tools/acpidump/apfiles.c

index 4390ebd99fda37a228c47444b869820ee10b08b2..5f8cc1fa3278b071c2f733e8f62b44cd10fac2bb 100644 (file)
 
 #ifdef ACPI_DUMP_APP
 #define ACPI_USE_NATIVE_MEMORY_MAPPING
+#define USE_NATIVE_ALLOCATE_ZEROED
 #endif
 
 /* acpi_names/Example configuration. Hardware disabled */
index e8729aa3a60e84f257fd02eef3c092f95470d10f..ccb6262829d6d7c38f360902915a85b93d3d95f0 100644 (file)
@@ -252,7 +252,7 @@ int ap_dump_all_tables(void)
                }
 
                table_status = ap_dump_table_buffer(table, instance, address);
-               free(table);
+               ACPI_FREE(table);
 
                if (table_status) {
                        break;
@@ -303,7 +303,7 @@ int ap_dump_table_by_address(char *ascii_address)
        }
 
        table_status = ap_dump_table_buffer(table, 0, address);
-       free(table);
+       ACPI_FREE(table);
        return (table_status);
 }
 
@@ -329,7 +329,7 @@ int ap_dump_table_by_name(char *signature)
        acpi_status status;
        int table_status;
 
-       if (strlen(signature) != ACPI_NAME_SIZE) {
+       if (ACPI_STRLEN(signature) != ACPI_NAME_SIZE) {
                fprintf(stderr,
                        "Invalid table signature [%s]: must be exactly 4 characters\n",
                        signature);
@@ -338,15 +338,15 @@ int ap_dump_table_by_name(char *signature)
 
        /* Table signatures are expected to be uppercase */
 
-       strcpy(local_signature, signature);
+       ACPI_STRCPY(local_signature, signature);
        acpi_ut_strupr(local_signature);
 
        /* To be friendly, handle tables whose signatures do not match the name */
 
        if (ACPI_COMPARE_NAME(local_signature, "FADT")) {
-               strcpy(local_signature, ACPI_SIG_FADT);
+               ACPI_STRCPY(local_signature, ACPI_SIG_FADT);
        } else if (ACPI_COMPARE_NAME(local_signature, "MADT")) {
-               strcpy(local_signature, ACPI_SIG_MADT);
+               ACPI_STRCPY(local_signature, ACPI_SIG_MADT);
        }
 
        /* Dump all instances of this signature (to handle multiple SSDTs) */
@@ -369,7 +369,7 @@ int ap_dump_table_by_name(char *signature)
                }
 
                table_status = ap_dump_table_buffer(table, instance, address);
-               free(table);
+               ACPI_FREE(table);
 
                if (table_status) {
                        break;
@@ -424,6 +424,6 @@ int ap_dump_table_from_file(char *pathname)
        table_status = ap_dump_table_buffer(table, 0, 0);
 
 exit:
-       free(table);
+       ACPI_FREE(table);
        return (table_status);
 }
index 4488accc010b1d4b1b0ebd57ce9a168578491519..1d12b9d3d44ea00ab0f4302b92d471c16d59b3fe 100644 (file)
@@ -130,11 +130,12 @@ int ap_write_to_binary_file(struct acpi_table_header *table, u32 instance)
        /* Handle multiple SSDts - create different filenames for each */
 
        if (instance > 0) {
-               sprintf(instance_str, "%u", instance);
-               strcat(filename, instance_str);
+               acpi_ut_snprintf(instance_str, sizeof(instance_str), "%u",
+                                instance);
+               ACPI_STRCAT(filename, instance_str);
        }
 
-       strcat(filename, ACPI_TABLE_FILE_SUFFIX);
+       ACPI_STRCAT(filename, ACPI_TABLE_FILE_SUFFIX);
 
        if (gbl_verbose_mode) {
                fprintf(stderr,
@@ -202,7 +203,7 @@ struct acpi_table_header *ap_get_table_from_file(char *pathname,
 
        /* Allocate a buffer for the entire file */
 
-       buffer = calloc(1, file_size);
+       buffer = ACPI_ALLOCATE_ZEROED(file_size);
        if (!buffer) {
                fprintf(stderr,
                        "Could not allocate file buffer of size: %u\n",
@@ -215,7 +216,7 @@ struct acpi_table_header *ap_get_table_from_file(char *pathname,
        actual = fread(buffer, 1, file_size, file);
        if (actual != file_size) {
                fprintf(stderr, "Could not read input file: %s\n", pathname);
-               free(buffer);
+               ACPI_FREE(buffer);
                buffer = NULL;
                goto cleanup;
        }