// SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 /******************************************************************************* * * Module Name: nsalloc - Namespace allocation and deletion utilities * ******************************************************************************/ #include <acpi/acpi.h> #include "accommon.h" #include "acnamesp.h" #define _COMPONENT … ACPI_MODULE_NAME("nsalloc") /******************************************************************************* * * FUNCTION: acpi_ns_create_node * * PARAMETERS: name - Name of the new node (4 char ACPI name) * * RETURN: New namespace node (Null on failure) * * DESCRIPTION: Create a namespace node * ******************************************************************************/ struct acpi_namespace_node *acpi_ns_create_node(u32 name) { … } /******************************************************************************* * * FUNCTION: acpi_ns_delete_node * * PARAMETERS: node - Node to be deleted * * RETURN: None * * DESCRIPTION: Delete a namespace node. All node deletions must come through * here. Detaches any attached objects, including any attached * data. If a handler is associated with attached data, it is * invoked before the node is deleted. * ******************************************************************************/ void acpi_ns_delete_node(struct acpi_namespace_node *node) { … } /******************************************************************************* * * FUNCTION: acpi_ns_remove_node * * PARAMETERS: node - Node to be removed/deleted * * RETURN: None * * DESCRIPTION: Remove (unlink) and delete a namespace node * ******************************************************************************/ void acpi_ns_remove_node(struct acpi_namespace_node *node) { … } /******************************************************************************* * * FUNCTION: acpi_ns_install_node * * PARAMETERS: walk_state - Current state of the walk * parent_node - The parent of the new Node * node - The new Node to install * type - ACPI object type of the new Node * * RETURN: None * * DESCRIPTION: Initialize a new namespace node and install it amongst * its peers. * * Note: Current namespace lookup is linear search. This appears * to be sufficient as namespace searches consume only a small * fraction of the execution time of the ACPI subsystem. * ******************************************************************************/ void acpi_ns_install_node(struct acpi_walk_state *walk_state, struct acpi_namespace_node *parent_node, /* Parent */ struct acpi_namespace_node *node, /* New Child */ acpi_object_type type) { … } /******************************************************************************* * * FUNCTION: acpi_ns_delete_children * * PARAMETERS: parent_node - Delete this objects children * * RETURN: None. * * DESCRIPTION: Delete all children of the parent object. In other words, * deletes a "scope". * ******************************************************************************/ void acpi_ns_delete_children(struct acpi_namespace_node *parent_node) { … } /******************************************************************************* * * FUNCTION: acpi_ns_delete_namespace_subtree * * PARAMETERS: parent_node - Root of the subtree to be deleted * * RETURN: None. * * DESCRIPTION: Delete a subtree of the namespace. This includes all objects * stored within the subtree. * ******************************************************************************/ void acpi_ns_delete_namespace_subtree(struct acpi_namespace_node *parent_node) { … } /******************************************************************************* * * FUNCTION: acpi_ns_delete_namespace_by_owner * * PARAMETERS: owner_id - All nodes with this owner will be deleted * * RETURN: Status * * DESCRIPTION: Delete entries within the namespace that are owned by a * specific ID. Used to delete entire ACPI tables. All * reference counts are updated. * * MUTEX: Locks namespace during deletion walk. * ******************************************************************************/ void acpi_ns_delete_namespace_by_owner(acpi_owner_id owner_id) { … }