[haiku-commits] haiku: hrev47848 - src/add-ons/kernel/bus_managers/acpi headers/os/drivers

  • From: fredrik.holmqvist@xxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Wed, 10 Sep 2014 21:39:58 +0200 (CEST)

hrev47848 adds 1 changeset to branch 'master'
old head: 669e389c33cbdfc134da6943c84cc6dbb92f5b54
new head: 15d8a434d02aa7ee180d1bb613aaabfff61ad965
overview: http://cgit.haiku-os.org/haiku/log/?qt=range&q=15d8a43+%5E669e389

----------------------------------------------------------------------------

15d8a43: Add function to walk through children.
  
  Without losing my sanity that is.
  ACPI API refactoring will happen some day.

                         [ Fredrik Holmqvist <fredrik.holmqvist@xxxxxxxxx> ]

----------------------------------------------------------------------------

Revision:    hrev47848
Commit:      15d8a434d02aa7ee180d1bb613aaabfff61ad965
URL:         http://cgit.haiku-os.org/haiku/commit/?id=15d8a43
Author:      Fredrik Holmqvist <fredrik.holmqvist@xxxxxxxxx>
Date:        Wed Sep 10 19:36:22 2014 UTC

----------------------------------------------------------------------------

3 files changed, 15 insertions(+)
headers/os/drivers/ACPI.h                           |  2 ++
src/add-ons/kernel/bus_managers/acpi/ACPIPrivate.h  |  2 ++
src/add-ons/kernel/bus_managers/acpi/BusManager.cpp | 11 +++++++++++

----------------------------------------------------------------------------

diff --git a/headers/os/drivers/ACPI.h b/headers/os/drivers/ACPI.h
index 32bb5a4..2a50b99 100644
--- a/headers/os/drivers/ACPI.h
+++ b/headers/os/drivers/ACPI.h
@@ -236,6 +236,8 @@ struct acpi_module_info {
 
        status_t        (*get_next_entry)(uint32 objectType, const char *base,
                                        char *result, size_t length, void 
**_counter);
+       status_t        (*get_next_object)(uint32 objectType, acpi_handle 
parent,
+                                       acpi_handle* currentChild);
        status_t        (*get_device)(const char *hid, uint32 index, char 
*result,
                                        size_t resultLength);
 
diff --git a/src/add-ons/kernel/bus_managers/acpi/ACPIPrivate.h 
b/src/add-ons/kernel/bus_managers/acpi/ACPIPrivate.h
index 95e53fc..6a4c7bb 100644
--- a/src/add-ons/kernel/bus_managers/acpi/ACPIPrivate.h
+++ b/src/add-ons/kernel/bus_managers/acpi/ACPIPrivate.h
@@ -202,6 +202,8 @@ status_t remove_fixed_event_handler(uint32 event, 
acpi_event_handler handler);
 
 status_t get_next_entry(uint32 object_type, const char* base, char* result,
        size_t length, void** _counter);
+status_t get_next_object(uint32 object_type, acpi_handle parent,
+       acpi_handle* currentChild);
 status_t get_device(const char* hid, uint32 index, char* result,
        size_t resultLength);
 
diff --git a/src/add-ons/kernel/bus_managers/acpi/BusManager.cpp 
b/src/add-ons/kernel/bus_managers/acpi/BusManager.cpp
index 4ef3827..680589b 100644
--- a/src/add-ons/kernel/bus_managers/acpi/BusManager.cpp
+++ b/src/add-ons/kernel/bus_managers/acpi/BusManager.cpp
@@ -506,6 +506,16 @@ get_next_entry(uint32 objectType, const char *base, char 
*result,
 
 
 status_t
+get_next_object(uint32 objectType, acpi_handle parent,
+       acpi_handle* currentChild)
+{
+       acpi_handle child = *currentChild;
+       return AcpiGetNextObject(objectType, parent, child, currentChild) == 
AE_OK ?
+               B_OK : B_ERROR;
+}
+
+
+status_t
 get_device(const char* hid, uint32 index, char* result, size_t resultLength)
 {
        ACPI_STATUS status;
@@ -829,6 +839,7 @@ struct acpi_module_info gACPIModule = {
        install_fixed_event_handler,
        remove_fixed_event_handler,
        get_next_entry,
+       get_next_object,
        get_device,
        get_device_hid,
        get_object_type,


Other related posts: