X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Facpi%2Fnamespace%2Fnsutils.c;fp=drivers%2Facpi%2Fnamespace%2Fnsutils.c;h=3e7cad549a38739cf5ad752513e3f45e0735ce7a;hb=64ba3f394c830ec48a1c31b53dcae312c56f1604;hp=aa4e799d9a8c3123e297e9195c50749086b07906;hpb=be1e6109ac94a859551f8e1774eb9a8469fe055c;p=linux-2.6.git diff --git a/drivers/acpi/namespace/nsutils.c b/drivers/acpi/namespace/nsutils.c index aa4e799d9..3e7cad549 100644 --- a/drivers/acpi/namespace/nsutils.c +++ b/drivers/acpi/namespace/nsutils.c @@ -78,17 +78,15 @@ acpi_ns_report_error(char *module_name, char *internal_name, acpi_status lookup_status) { acpi_status status; - u32 bad_name; char *name = NULL; - acpi_os_printf("ACPI Error (%s-%04d): ", module_name, line_number); + acpi_ut_report_error(module_name, line_number); if (lookup_status == AE_BAD_CHARACTER) { - /* There is a non-ascii character in the name */ - ACPI_MOVE_32_TO_32(&bad_name, internal_name); - acpi_os_printf("[0x%4.4X] (NON-ASCII)", bad_name); + acpi_os_printf("[0x%4.4X] (NON-ASCII)", + *(ACPI_CAST_PTR(u32, internal_name))); } else { /* Convert path to external format */ @@ -104,7 +102,7 @@ acpi_ns_report_error(char *module_name, } if (name) { - ACPI_FREE(name); + ACPI_MEM_FREE(name); } } @@ -139,12 +137,11 @@ acpi_ns_report_method_error(char *module_name, acpi_status status; struct acpi_namespace_node *node = prefix_node; - acpi_os_printf("ACPI Error (%s-%04d): ", module_name, line_number); + acpi_ut_report_error(module_name, line_number); if (path) { - status = - acpi_ns_get_node(prefix_node, path, ACPI_NS_NO_UPSEARCH, - &node); + status = acpi_ns_get_node_by_path(path, prefix_node, + ACPI_NS_NO_UPSEARCH, &node); if (ACPI_FAILURE(status)) { acpi_os_printf("[Could not get node by pathname]"); } @@ -188,7 +185,7 @@ acpi_ns_print_node_pathname(struct acpi_namespace_node *node, char *message) } acpi_os_printf("[%s] (Node %p)", (char *)buffer.pointer, node); - ACPI_FREE(buffer.pointer); + ACPI_MEM_FREE(buffer.pointer); } } @@ -242,7 +239,7 @@ static u8 acpi_ns_valid_path_separator(char sep) acpi_object_type acpi_ns_get_type(struct acpi_namespace_node * node) { - ACPI_FUNCTION_TRACE(ns_get_type); + ACPI_FUNCTION_TRACE("ns_get_type"); if (!node) { ACPI_WARNING((AE_INFO, "Null Node parameter")); @@ -267,10 +264,9 @@ acpi_object_type acpi_ns_get_type(struct acpi_namespace_node * node) u32 acpi_ns_local(acpi_object_type type) { - ACPI_FUNCTION_TRACE(ns_local); + ACPI_FUNCTION_TRACE("ns_local"); if (!acpi_ut_valid_object_type(type)) { - /* Type code out of range */ ACPI_WARNING((AE_INFO, "Invalid Object Type %X", type)); @@ -367,7 +363,7 @@ acpi_status acpi_ns_build_internal_name(struct acpi_namestring_info *info) char *result = NULL; acpi_native_uint i; - ACPI_FUNCTION_TRACE(ns_build_internal_name); + ACPI_FUNCTION_TRACE("ns_build_internal_name"); /* Setup the correct prefixes, counts, and pointers */ @@ -415,7 +411,6 @@ acpi_status acpi_ns_build_internal_name(struct acpi_namestring_info *info) for (i = 0; i < ACPI_NAME_SIZE; i++) { if (acpi_ns_valid_path_separator(*external_name) || (*external_name == 0)) { - /* Pad the segment with underscore(s) if segment is short */ result[i] = '_'; @@ -478,7 +473,7 @@ acpi_status acpi_ns_internalize_name(char *external_name, char **converted_name) struct acpi_namestring_info info; acpi_status status; - ACPI_FUNCTION_TRACE(ns_internalize_name); + ACPI_FUNCTION_TRACE("ns_internalize_name"); if ((!external_name) || (*external_name == 0) || (!converted_name)) { return_ACPI_STATUS(AE_BAD_PARAMETER); @@ -491,7 +486,7 @@ acpi_status acpi_ns_internalize_name(char *external_name, char **converted_name) /* We need a segment to store the internal name */ - internal_name = ACPI_ALLOCATE_ZEROED(info.length); + internal_name = ACPI_MEM_CALLOCATE(info.length); if (!internal_name) { return_ACPI_STATUS(AE_NO_MEMORY); } @@ -501,7 +496,7 @@ acpi_status acpi_ns_internalize_name(char *external_name, char **converted_name) info.internal_name = internal_name; status = acpi_ns_build_internal_name(&info); if (ACPI_FAILURE(status)) { - ACPI_FREE(internal_name); + ACPI_MEM_FREE(internal_name); return_ACPI_STATUS(status); } @@ -538,7 +533,7 @@ acpi_ns_externalize_name(u32 internal_name_length, acpi_native_uint i = 0; acpi_native_uint j = 0; - ACPI_FUNCTION_TRACE(ns_externalize_name); + ACPI_FUNCTION_TRACE("ns_externalize_name"); if (!internal_name_length || !internal_name || !converted_name) { return_ACPI_STATUS(AE_BAD_PARAMETER); @@ -633,7 +628,7 @@ acpi_ns_externalize_name(u32 internal_name_length, /* * Build converted_name */ - *converted_name = ACPI_ALLOCATE_ZEROED(required_length); + *converted_name = ACPI_MEM_CALLOCATE(required_length); if (!(*converted_name)) { return_ACPI_STATUS(AE_NO_MEMORY); } @@ -686,9 +681,13 @@ struct acpi_namespace_node *acpi_ns_map_handle_to_node(acpi_handle handle) ACPI_FUNCTION_ENTRY(); /* - * Simple implementation + * Simple implementation. */ - if ((!handle) || (handle == ACPI_ROOT_OBJECT)) { + if (!handle) { + return (NULL); + } + + if (handle == ACPI_ROOT_OBJECT) { return (acpi_gbl_root_node); } @@ -698,7 +697,7 @@ struct acpi_namespace_node *acpi_ns_map_handle_to_node(acpi_handle handle) return (NULL); } - return (ACPI_CAST_PTR(struct acpi_namespace_node, handle)); + return ((struct acpi_namespace_node *)handle); } /******************************************************************************* @@ -753,7 +752,7 @@ void acpi_ns_terminate(void) { union acpi_operand_object *obj_desc; - ACPI_FUNCTION_TRACE(ns_terminate); + ACPI_FUNCTION_TRACE("ns_terminate"); /* * 1) Free the entire namespace -- all nodes and objects @@ -793,10 +792,9 @@ void acpi_ns_terminate(void) u32 acpi_ns_opens_scope(acpi_object_type type) { - ACPI_FUNCTION_TRACE_STR(ns_opens_scope, acpi_ut_get_type_name(type)); + ACPI_FUNCTION_TRACE_STR("ns_opens_scope", acpi_ut_get_type_name(type)); if (!acpi_ut_valid_object_type(type)) { - /* type code out of range */ ACPI_WARNING((AE_INFO, "Invalid Object Type %X", type)); @@ -808,12 +806,12 @@ u32 acpi_ns_opens_scope(acpi_object_type type) /******************************************************************************* * - * FUNCTION: acpi_ns_get_node + * FUNCTION: acpi_ns_get_node_by_path * * PARAMETERS: *Pathname - Name to be found, in external (ASL) format. The * \ (backslash) and ^ (carat) prefixes, and the * . (period) to separate segments are supported. - * prefix_node - Root of subtree to be searched, or NS_ALL for the + * start_node - Root of subtree to be searched, or NS_ALL for the * root of the name space. If Name is fully * qualified (first s8 is '\'), the passed value * of Scope will not be accessed. @@ -829,29 +827,23 @@ u32 acpi_ns_opens_scope(acpi_object_type type) ******************************************************************************/ acpi_status -acpi_ns_get_node(struct acpi_namespace_node *prefix_node, - char *pathname, - u32 flags, struct acpi_namespace_node **return_node) +acpi_ns_get_node_by_path(char *pathname, + struct acpi_namespace_node *start_node, + u32 flags, struct acpi_namespace_node **return_node) { union acpi_generic_state scope_info; acpi_status status; - char *internal_path; - - ACPI_FUNCTION_TRACE_PTR(ns_get_node, pathname); + char *internal_path = NULL; - if (!pathname) { - *return_node = prefix_node; - if (!prefix_node) { - *return_node = acpi_gbl_root_node; - } - return_ACPI_STATUS(AE_OK); - } + ACPI_FUNCTION_TRACE_PTR("ns_get_node_by_path", pathname); - /* Convert path to internal representation */ + if (pathname) { + /* Convert path to internal representation */ - status = acpi_ns_internalize_name(pathname, &internal_path); - if (ACPI_FAILURE(status)) { - return_ACPI_STATUS(status); + status = acpi_ns_internalize_name(pathname, &internal_path); + if (ACPI_FAILURE(status)) { + return_ACPI_STATUS(status); + } } /* Must lock namespace during lookup */ @@ -863,23 +855,26 @@ acpi_ns_get_node(struct acpi_namespace_node *prefix_node, /* Setup lookup scope (search starting point) */ - scope_info.scope.node = prefix_node; + scope_info.scope.node = start_node; /* Lookup the name in the namespace */ - status = acpi_ns_lookup(&scope_info, internal_path, ACPI_TYPE_ANY, - ACPI_IMODE_EXECUTE, - (flags | ACPI_NS_DONT_OPEN_SCOPE), NULL, - return_node); + status = acpi_ns_lookup(&scope_info, internal_path, + ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, + (flags | ACPI_NS_DONT_OPEN_SCOPE), + NULL, return_node); if (ACPI_FAILURE(status)) { ACPI_DEBUG_PRINT((ACPI_DB_INFO, "%s, %s\n", - pathname, acpi_format_exception(status))); + internal_path, + acpi_format_exception(status))); } (void)acpi_ut_release_mutex(ACPI_MTX_NAMESPACE); cleanup: - ACPI_FREE(internal_path); + if (internal_path) { + ACPI_MEM_FREE(internal_path); + } return_ACPI_STATUS(status); } @@ -965,10 +960,9 @@ acpi_name acpi_ns_find_parent_name(struct acpi_namespace_node * child_node) { struct acpi_namespace_node *parent_node; - ACPI_FUNCTION_TRACE(ns_find_parent_name); + ACPI_FUNCTION_TRACE("ns_find_parent_name"); if (child_node) { - /* Valid entry. Get the parent Node */ parent_node = acpi_ns_get_parent_node(child_node);