// SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 /******************************************************************************* * * Module Name: utdelete - object deletion and reference count utilities * ******************************************************************************/ #include <acpi/acpi.h> #include "accommon.h" #include "acinterp.h" #include "acnamesp.h" #include "acevents.h" #define _COMPONENT … ACPI_MODULE_NAME("utdelete") /* Local prototypes */ static void acpi_ut_delete_internal_obj(union acpi_operand_object *object); static void acpi_ut_update_ref_count(union acpi_operand_object *object, u32 action); /******************************************************************************* * * FUNCTION: acpi_ut_delete_internal_obj * * PARAMETERS: object - Object to be deleted * * RETURN: None * * DESCRIPTION: Low level object deletion, after reference counts have been * updated (All reference counts, including sub-objects!) * ******************************************************************************/ static void acpi_ut_delete_internal_obj(union acpi_operand_object *object) { … } /******************************************************************************* * * FUNCTION: acpi_ut_delete_internal_object_list * * PARAMETERS: obj_list - Pointer to the list to be deleted * * RETURN: None * * DESCRIPTION: This function deletes an internal object list, including both * simple objects and package objects * ******************************************************************************/ void acpi_ut_delete_internal_object_list(union acpi_operand_object **obj_list) { … } /******************************************************************************* * * FUNCTION: acpi_ut_update_ref_count * * PARAMETERS: object - Object whose ref count is to be updated * action - What to do (REF_INCREMENT or REF_DECREMENT) * * RETURN: None. Sets new reference count within the object * * DESCRIPTION: Modify the reference count for an internal acpi object * ******************************************************************************/ static void acpi_ut_update_ref_count(union acpi_operand_object *object, u32 action) { … } /******************************************************************************* * * FUNCTION: acpi_ut_update_object_reference * * PARAMETERS: object - Increment or decrement the ref count for * this object and all sub-objects * action - Either REF_INCREMENT or REF_DECREMENT * * RETURN: Status * * DESCRIPTION: Increment or decrement the object reference count * * Object references are incremented when: * 1) An object is attached to a Node (namespace object) * 2) An object is copied (all subobjects must be incremented) * * Object references are decremented when: * 1) An object is detached from an Node * ******************************************************************************/ acpi_status acpi_ut_update_object_reference(union acpi_operand_object *object, u16 action) { … } /******************************************************************************* * * FUNCTION: acpi_ut_add_reference * * PARAMETERS: object - Object whose reference count is to be * incremented * * RETURN: None * * DESCRIPTION: Add one reference to an ACPI object * ******************************************************************************/ void acpi_ut_add_reference(union acpi_operand_object *object) { … } /******************************************************************************* * * FUNCTION: acpi_ut_remove_reference * * PARAMETERS: object - Object whose ref count will be decremented * * RETURN: None * * DESCRIPTION: Decrement the reference count of an ACPI internal object * ******************************************************************************/ void acpi_ut_remove_reference(union acpi_operand_object *object) { … }