Initial commit

This commit is contained in:
Your Name
2026-04-23 17:07:55 +08:00
commit b7e39e063b
16725 changed files with 1625565 additions and 0 deletions
@@ -0,0 +1,82 @@
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;
}
@@ -0,0 +1,34 @@
DESCRIPTION = "This is a small collection of power management \
test and investigation tools"
HOMEPAGE = "http://lesswatts.org/projects/acpi"
LICENSE = "GPL-2.0-or-later"
LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3"
PV = "20130209+git${SRCPV}"
SRC_URI = "git://github.com/anyc/pmtools.git;branch=master;protocol=https \
file://pmtools-switch-to-dynamic-buffer-for-huge-ACPI-table.patch \
"
SRCREV = "3ebe0e54c54061b4c627236cbe35d820de2e1168"
COMPATIBLE_HOST = "(i.86|x86_64).*-linux"
S = "${WORKDIR}/git"
inherit update-alternatives
ALTERNATIVE_PRIORITY = "90"
ALTERNATIVE:${PN} = "acpixtract acpidump"
do_configure[noexec] = "1"
do_compile() {
oe_runmake
}
do_install() {
install -d ${D}${bindir} ${D}${docdir}
install -m 755 ${S}/acpidump/acpidump ${D}${bindir}
install -m 755 ${S}/acpixtract/acpixtract ${D}${bindir}
install -m 755 ${S}/madt/madt ${D}${bindir}
install -m 644 ${S}/README ${D}${docdir}
}