Skip to content

Instantly share code, notes, and snippets.

@jessicah
Created January 2, 2016 01:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jessicah/8557c9f87f317050e86a to your computer and use it in GitHub Desktop.
Save jessicah/8557c9f87f317050e86a to your computer and use it in GitHub Desktop.
ACPI debugging
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