mirror of
https://github.com/openembedded/meta-openembedded.git
synced 2026-06-15 06:10:02 +00:00
197cd6b367
Fixes build with clang-15 Signed-off-by: Khem Raj <raj.khem@gmail.com>
83 lines
2.0 KiB
Diff
83 lines
2.0 KiB
Diff
From 03a886252f6555d6b0af76b654e76459642b89da Mon Sep 17 00:00:00 2001
|
|
From: Yunguo Wei <yunguo.wei@windriver.com>
|
|
Date: Tue, 3 Dec 2013 18:12:50 +0800
|
|
Subject: [PATCH] pmtools: switch to dynamic buffer for huge ACPI tables
|
|
|
|
For servers like Canoe Pass or Thunder Ridge, there are much more
|
|
entries in ACPI table, so original 1K buffer is insufficient.
|
|
|
|
We switch to dynamic buffer on this situation.
|
|
|
|
Signed-off-by: Yunguo Wei <yunguo.wei@windriver.com>
|
|
|
|
|
|
Upstream-Status: Pending
|
|
|
|
Signed-off-by: Kai Kang <kai.kang@windriver.com>
|
|
---
|
|
madt/madt.c | 18 +++++++++++++++++-
|
|
1 file changed, 17 insertions(+), 1 deletion(-)
|
|
|
|
--- a/madt/madt.c
|
|
+++ b/madt/madt.c
|
|
@@ -34,14 +34,16 @@ typedef unsigned long long u64;
|
|
//#include <sys/mman.h>
|
|
#include <stdio.h> // fread
|
|
#include <stdlib.h> // malloc
|
|
+#include <string.h> // memset/memcpy
|
|
|
|
#include "./tables.c"
|
|
|
|
int verbose = 0;
|
|
/*
|
|
-/* read standard input
|
|
+ * read standard input
|
|
* write decoded madt to standard output
|
|
*/
|
|
+size_t
|
|
get_next_entry(acpi_table_entry_header * entry_header)
|
|
{
|
|
size_t retval;
|
|
@@ -51,9 +53,11 @@ get_next_entry(acpi_table_entry_header *
|
|
return retval;
|
|
}
|
|
|
|
-u8 buffer[1024];
|
|
|
|
-main()
|
|
+u8 buf[1024];
|
|
+u8 *buffer = buf;
|
|
+int
|
|
+main(int argc, char *argv[])
|
|
{
|
|
size_t retval;
|
|
struct acpi_table_madt *madt_header;
|
|
@@ -75,6 +79,17 @@ main()
|
|
|
|
if (verbose) printf("header.length %d\n", madt_header->header.length);
|
|
|
|
+ /* if 1K buffer is insufficient for acpi table, switch to a larger memory buffer */
|
|
+ if(expected_length > sizeof(buf)) {
|
|
+ buffer = malloc(expected_length);
|
|
+ if (!buffer) {
|
|
+ perror("malloc");
|
|
+ exit(1);
|
|
+ }
|
|
+ memset(buffer, 0, expected_length);
|
|
+ memcpy(buffer, buf, sizeof(struct acpi_table_madt));
|
|
+ }
|
|
+
|
|
acpi_table_print((void*)&(buffer[bytes_read]), 0);
|
|
|
|
bytes_read = sizeof(struct acpi_table_madt);
|
|
@@ -118,6 +133,9 @@ done:
|
|
printf("Checksum 0x%x != 0; 0x%x in header ERROR\n", csum,
|
|
madt_header->header.checksum);
|
|
|
|
+ if(buffer != buf)
|
|
+ free(buffer);
|
|
+
|
|
return 0;
|
|
}
|
|
|