-
-
Save jessicah/8557c9f87f317050e86a to your computer and use it in GitHub Desktop.
ACPI debugging
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
From 6b58e376ee363689c99175d708083687a6402572 Mon Sep 17 00:00:00 2001 | |
From: Jessica Hamilton <jessica.l.hamilton@gmail.com> | |
Date: Sat, 2 Jan 2016 12:22:37 +1300 | |
Subject: [PATCH] ACPI: tracing and debug | |
--- | |
.../kernel/bus_managers/acpi/BusManager.cpp | 26 ++++++++++++++++++---- | |
src/add-ons/kernel/bus_managers/acpi/Module.cpp | 2 +- | |
.../acpi/acpica/components/namespace/nsnames.c | 5 +++++ | |
3 files changed, 28 insertions(+), 5 deletions(-) | |
diff --git a/src/add-ons/kernel/bus_managers/acpi/BusManager.cpp b/src/add-ons/kernel/bus_managers/acpi/BusManager.cpp | |
index 5c65f87..79eb35e 100644 | |
--- a/src/add-ons/kernel/bus_managers/acpi/BusManager.cpp | |
+++ b/src/add-ons/kernel/bus_managers/acpi/BusManager.cpp | |
@@ -29,7 +29,7 @@ extern "C" { | |
} | |
#include "ACPIPrivate.h" | |
-//#define TRACE_ACPI_BUS | |
+#define TRACE_ACPI_BUS | |
#ifdef TRACE_ACPI_BUS | |
#define TRACE(x...) dprintf("acpi: " x) | |
#else | |
@@ -490,6 +490,7 @@ status_t | |
get_next_entry(uint32 objectType, const char *base, char *result, | |
size_t length, void **counter) | |
{ | |
+ TRACE("enter: get_next_entry()\n"); | |
ACPI_HANDLE parent, child, newChild; | |
ACPI_BUFFER buffer; | |
ACPI_STATUS status; | |
@@ -497,26 +498,43 @@ get_next_entry(uint32 objectType, const char *base, char *result, | |
TRACE("get_next_entry %ld, %s\n", objectType, base); | |
if (base == NULL || !strcmp(base, "\\")) { | |
+ TRACE("get_next_entry: no base = %s, using root object\n", base == NULL ? "true" : "false"); | |
parent = ACPI_ROOT_OBJECT; | |
} else { | |
+ TRACE("get_next_entry: getting handle...\n"); | |
status = AcpiGetHandle(NULL, (ACPI_STRING)base, &parent); | |
- if (status != AE_OK) | |
+ if (status != AE_OK) { | |
+ TRACE("get_next_entry: failed to get acpi handle\n"); | |
return B_ENTRY_NOT_FOUND; | |
+ } | |
+ TRACE("get_next_entry: got handle\n"); | |
} | |
child = *counter; | |
+ | |
+ TRACE("get_next_entry: getting next object\n"); | |
status = AcpiGetNextObject(objectType, parent, child, &newChild); | |
- if (status != AE_OK) | |
+ if (status != AE_OK) { | |
+ TRACE("get_next_entry: failed to get next object\n"); | |
return B_ENTRY_NOT_FOUND; | |
+ } | |
+ | |
+ TRACE("get_next_entry: got next object\n"); | |
*counter = newChild; | |
buffer.Length = length; | |
buffer.Pointer = result; | |
+ TRACE("get_next_entry: getting name of object; buffer length = %lu, buffer pointer = %p\n", | |
+ length, result); | |
status = AcpiGetName(newChild, ACPI_FULL_PATHNAME, &buffer); | |
- if (status != AE_OK) | |
+ if (status != AE_OK) { | |
+ TRACE("get_next_entry: couldn't get name\n"); | |
return B_NO_MEMORY; /* Corresponds to AE_BUFFER_OVERFLOW */ | |
+ } | |
+ | |
+ TRACE("get_next_entry: got name\n"); | |
return B_OK; | |
} | |
diff --git a/src/add-ons/kernel/bus_managers/acpi/Module.cpp b/src/add-ons/kernel/bus_managers/acpi/Module.cpp | |
index 82f6c7a..fc08ac6 100644 | |
--- a/src/add-ons/kernel/bus_managers/acpi/Module.cpp | |
+++ b/src/add-ons/kernel/bus_managers/acpi/Module.cpp | |
@@ -18,7 +18,7 @@ extern "C" { | |
#include <PCI.h> | |
-//#define TRACE_ACPI_MODULE | |
+#define TRACE_ACPI_MODULE | |
#ifdef TRACE_ACPI_MODULE | |
# define TRACE(x) dprintf x | |
#else | |
diff --git a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsnames.c b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsnames.c | |
index cd11cb4..b071ade 100644 | |
--- a/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsnames.c | |
+++ b/src/add-ons/kernel/bus_managers/acpi/acpica/components/namespace/nsnames.c | |
@@ -310,6 +310,7 @@ AcpiNsBuildNormalizedPath ( | |
} | |
NextNode = Node; | |
+ dprintf("Starting at node %p\n", NextNode); | |
while (NextNode && NextNode != AcpiGbl_RootNode) | |
{ | |
if (NextNode != Node) | |
@@ -318,6 +319,7 @@ AcpiNsBuildNormalizedPath ( | |
} | |
ACPI_MOVE_32_TO_32 (Name, &NextNode->Name); | |
+ dprintf("Name (%p) = %s\n", Name, Name); | |
DoNoTrailing = NoTrailing; | |
for (i = 0; i < 4; i++) | |
{ | |
@@ -333,6 +335,7 @@ AcpiNsBuildNormalizedPath ( | |
} | |
NextNode = NextNode->Parent; | |
+ dprintf("Next Node = %p\n", NextNode); | |
} | |
ACPI_PATH_PUT8(FullPath, PathSize, AML_ROOT_PREFIX, Length); | |
@@ -359,6 +362,8 @@ BuildTrailingNull: | |
#undef ACPI_PATH_PUT8 | |
+ dprintf("Length of path = %lu\n", Length); | |
+ | |
return_UINT32 (Length); | |
} | |
-- | |
2.2.2 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment