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,