|
@@ -923,19 +923,22 @@ ACPI_EXPORT_SYMBOL(acpi_detach_data)
|
|
|
|
|
|
/*******************************************************************************
|
|
|
*
|
|
|
- * FUNCTION: acpi_get_data
|
|
|
+ * FUNCTION: acpi_get_data_full
|
|
|
*
|
|
|
* PARAMETERS: obj_handle - Namespace node
|
|
|
* handler - Handler used in call to attach_data
|
|
|
* data - Where the data is returned
|
|
|
+ * callback - function to execute before returning
|
|
|
*
|
|
|
* RETURN: Status
|
|
|
*
|
|
|
- * DESCRIPTION: Retrieve data that was previously attached to a namespace node.
|
|
|
+ * DESCRIPTION: Retrieve data that was previously attached to a namespace node
|
|
|
+ * and execute a callback before returning.
|
|
|
*
|
|
|
******************************************************************************/
|
|
|
acpi_status
|
|
|
-acpi_get_data(acpi_handle obj_handle, acpi_object_handler handler, void **data)
|
|
|
+acpi_get_data_full(acpi_handle obj_handle, acpi_object_handler handler,
|
|
|
+ void **data, void (*callback)(void *))
|
|
|
{
|
|
|
struct acpi_namespace_node *node;
|
|
|
acpi_status status;
|
|
@@ -960,10 +963,34 @@ acpi_get_data(acpi_handle obj_handle, acpi_object_handler handler, void **data)
|
|
|
}
|
|
|
|
|
|
status = acpi_ns_get_attached_data(node, handler, data);
|
|
|
+ if (ACPI_SUCCESS(status) && callback) {
|
|
|
+ callback(*data);
|
|
|
+ }
|
|
|
|
|
|
unlock_and_exit:
|
|
|
(void)acpi_ut_release_mutex(ACPI_MTX_NAMESPACE);
|
|
|
return (status);
|
|
|
}
|
|
|
|
|
|
+ACPI_EXPORT_SYMBOL(acpi_get_data_full)
|
|
|
+
|
|
|
+/*******************************************************************************
|
|
|
+ *
|
|
|
+ * FUNCTION: acpi_get_data
|
|
|
+ *
|
|
|
+ * PARAMETERS: obj_handle - Namespace node
|
|
|
+ * handler - Handler used in call to attach_data
|
|
|
+ * data - Where the data is returned
|
|
|
+ *
|
|
|
+ * RETURN: Status
|
|
|
+ *
|
|
|
+ * DESCRIPTION: Retrieve data that was previously attached to a namespace node.
|
|
|
+ *
|
|
|
+ ******************************************************************************/
|
|
|
+acpi_status
|
|
|
+acpi_get_data(acpi_handle obj_handle, acpi_object_handler handler, void **data)
|
|
|
+{
|
|
|
+ return acpi_get_data_full(obj_handle, handler, data, NULL);
|
|
|
+}
|
|
|
+
|
|
|
ACPI_EXPORT_SYMBOL(acpi_get_data)
|