git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge master.kernel.org:/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog
[pandora-kernel.git]
/
drivers
/
acpi
/
namespace
/
nsutils.c
diff --git
a/drivers/acpi/namespace/nsutils.c
b/drivers/acpi/namespace/nsutils.c
index
3e7cad5
..
aa4e799
100644
(file)
--- a/
drivers/acpi/namespace/nsutils.c
+++ b/
drivers/acpi/namespace/nsutils.c
@@
-78,15
+78,17
@@
acpi_ns_report_error(char *module_name,
char *internal_name, acpi_status lookup_status)
{
acpi_status status;
char *internal_name, acpi_status lookup_status)
{
acpi_status status;
+ u32 bad_name;
char *name = NULL;
char *name = NULL;
- acpi_
ut_report_error(
module_name, line_number);
+ acpi_
os_printf("ACPI Error (%s-%04d): ",
module_name, line_number);
if (lookup_status == AE_BAD_CHARACTER) {
if (lookup_status == AE_BAD_CHARACTER) {
+
/* There is a non-ascii character in the name */
/* There is a non-ascii character in the name */
- acpi_os_printf("[0x%4.4X] (NON-ASCII)",
-
*(ACPI_CAST_PTR(u32, internal_name))
);
+ ACPI_MOVE_32_TO_32(&bad_name, internal_name);
+
acpi_os_printf("[0x%4.4X] (NON-ASCII)", bad_name
);
} else {
/* Convert path to external format */
} else {
/* Convert path to external format */
@@
-102,7
+104,7
@@
acpi_ns_report_error(char *module_name,
}
if (name) {
}
if (name) {
- ACPI_
MEM_
FREE(name);
+ ACPI_FREE(name);
}
}
}
}
@@
-137,11
+139,12
@@
acpi_ns_report_method_error(char *module_name,
acpi_status status;
struct acpi_namespace_node *node = prefix_node;
acpi_status status;
struct acpi_namespace_node *node = prefix_node;
- acpi_
ut_report_error(
module_name, line_number);
+ acpi_
os_printf("ACPI Error (%s-%04d): ",
module_name, line_number);
if (path) {
if (path) {
- status = acpi_ns_get_node_by_path(path, prefix_node,
- ACPI_NS_NO_UPSEARCH, &node);
+ status =
+ acpi_ns_get_node(prefix_node, path, ACPI_NS_NO_UPSEARCH,
+ &node);
if (ACPI_FAILURE(status)) {
acpi_os_printf("[Could not get node by pathname]");
}
if (ACPI_FAILURE(status)) {
acpi_os_printf("[Could not get node by pathname]");
}
@@
-185,7
+188,7
@@
acpi_ns_print_node_pathname(struct acpi_namespace_node *node, char *message)
}
acpi_os_printf("[%s] (Node %p)", (char *)buffer.pointer, node);
}
acpi_os_printf("[%s] (Node %p)", (char *)buffer.pointer, node);
- ACPI_
MEM_
FREE(buffer.pointer);
+ ACPI_FREE(buffer.pointer);
}
}
}
}
@@
-239,7
+242,7
@@
static u8 acpi_ns_valid_path_separator(char sep)
acpi_object_type acpi_ns_get_type(struct acpi_namespace_node * node)
{
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"));
if (!node) {
ACPI_WARNING((AE_INFO, "Null Node parameter"));
@@
-264,9
+267,10
@@
acpi_object_type acpi_ns_get_type(struct acpi_namespace_node * node)
u32 acpi_ns_local(acpi_object_type type)
{
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)) {
if (!acpi_ut_valid_object_type(type)) {
+
/* Type code out of range */
ACPI_WARNING((AE_INFO, "Invalid Object Type %X", type));
/* Type code out of range */
ACPI_WARNING((AE_INFO, "Invalid Object Type %X", type));
@@
-363,7
+367,7
@@
acpi_status acpi_ns_build_internal_name(struct acpi_namestring_info *info)
char *result = NULL;
acpi_native_uint i;
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 */
/* Setup the correct prefixes, counts, and pointers */
@@
-411,6
+415,7
@@
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)) {
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] = '_';
/* Pad the segment with underscore(s) if segment is short */
result[i] = '_';
@@
-473,7
+478,7
@@
acpi_status acpi_ns_internalize_name(char *external_name, char **converted_name)
struct acpi_namestring_info info;
acpi_status status;
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);
if ((!external_name) || (*external_name == 0) || (!converted_name)) {
return_ACPI_STATUS(AE_BAD_PARAMETER);
@@
-486,7
+491,7
@@
acpi_status acpi_ns_internalize_name(char *external_name, char **converted_name)
/* We need a segment to store the internal name */
/* We need a segment to store the internal name */
- internal_name = ACPI_
MEM_CALLOCATE
(info.length);
+ internal_name = ACPI_
ALLOCATE_ZEROED
(info.length);
if (!internal_name) {
return_ACPI_STATUS(AE_NO_MEMORY);
}
if (!internal_name) {
return_ACPI_STATUS(AE_NO_MEMORY);
}
@@
-496,7
+501,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)) {
info.internal_name = internal_name;
status = acpi_ns_build_internal_name(&info);
if (ACPI_FAILURE(status)) {
- ACPI_
MEM_
FREE(internal_name);
+ ACPI_FREE(internal_name);
return_ACPI_STATUS(status);
}
return_ACPI_STATUS(status);
}
@@
-533,7
+538,7
@@
acpi_ns_externalize_name(u32 internal_name_length,
acpi_native_uint i = 0;
acpi_native_uint j = 0;
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);
if (!internal_name_length || !internal_name || !converted_name) {
return_ACPI_STATUS(AE_BAD_PARAMETER);
@@
-628,7
+633,7
@@
acpi_ns_externalize_name(u32 internal_name_length,
/*
* Build converted_name
*/
/*
* Build converted_name
*/
- *converted_name = ACPI_
MEM_CALLOCATE
(required_length);
+ *converted_name = ACPI_
ALLOCATE_ZEROED
(required_length);
if (!(*converted_name)) {
return_ACPI_STATUS(AE_NO_MEMORY);
}
if (!(*converted_name)) {
return_ACPI_STATUS(AE_NO_MEMORY);
}
@@
-681,13
+686,9
@@
struct acpi_namespace_node *acpi_ns_map_handle_to_node(acpi_handle handle)
ACPI_FUNCTION_ENTRY();
/*
ACPI_FUNCTION_ENTRY();
/*
- * Simple implementation
.
+ * Simple implementation
*/
*/
- if (!handle) {
- return (NULL);
- }
-
- if (handle == ACPI_ROOT_OBJECT) {
+ if ((!handle) || (handle == ACPI_ROOT_OBJECT)) {
return (acpi_gbl_root_node);
}
return (acpi_gbl_root_node);
}
@@
-697,7
+698,7
@@
struct acpi_namespace_node *acpi_ns_map_handle_to_node(acpi_handle handle)
return (NULL);
}
return (NULL);
}
- return (
(struct acpi_namespace_node *)handle
);
+ return (
ACPI_CAST_PTR(struct acpi_namespace_node, handle)
);
}
/*******************************************************************************
}
/*******************************************************************************
@@
-752,7
+753,7
@@
void acpi_ns_terminate(void)
{
union acpi_operand_object *obj_desc;
{
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
/*
* 1) Free the entire namespace -- all nodes and objects
@@
-792,9
+793,10
@@
void acpi_ns_terminate(void)
u32 acpi_ns_opens_scope(acpi_object_type type)
{
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)) {
if (!acpi_ut_valid_object_type(type)) {
+
/* type code out of range */
ACPI_WARNING((AE_INFO, "Invalid Object Type %X", type));
/* type code out of range */
ACPI_WARNING((AE_INFO, "Invalid Object Type %X", type));
@@
-806,12
+808,12
@@
u32 acpi_ns_opens_scope(acpi_object_type type)
/*******************************************************************************
*
/*******************************************************************************
*
- * FUNCTION: acpi_ns_get_node
_by_path
+ * FUNCTION: acpi_ns_get_node
*
* PARAMETERS: *Pathname - Name to be found, in external (ASL) format. The
* \ (backslash) and ^ (carat) prefixes, and the
* . (period) to separate segments are supported.
*
* PARAMETERS: *Pathname - Name to be found, in external (ASL) format. The
* \ (backslash) and ^ (carat) prefixes, and the
* . (period) to separate segments are supported.
- *
start
_node - Root of subtree to be searched, or NS_ALL for the
+ *
prefix
_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.
* root of the name space. If Name is fully
* qualified (first s8 is '\'), the passed value
* of Scope will not be accessed.
@@
-827,23
+829,29
@@
u32 acpi_ns_opens_scope(acpi_object_type type)
******************************************************************************/
acpi_status
******************************************************************************/
acpi_status
-acpi_ns_get_node
_by_path(char *pathnam
e,
-
struct acpi_namespace_node *start_nod
e,
-
u32 flags, struct acpi_namespace_node **return_node)
+acpi_ns_get_node
(struct acpi_namespace_node *prefix_nod
e,
+
char *pathnam
e,
+ u32 flags, struct acpi_namespace_node **return_node)
{
union acpi_generic_state scope_info;
acpi_status status;
{
union acpi_generic_state scope_info;
acpi_status status;
- char *internal_path = NULL;
-
- ACPI_FUNCTION_TRACE_PTR("ns_get_node_by_path", pathname);
+ char *internal_path;
- if (pathname) {
- /* Convert path to internal representation */
+ ACPI_FUNCTION_TRACE_PTR(ns_get_node, pathname);
- status = acpi_ns_internalize_name(pathname, &internal_path);
- if (ACPI_FAILURE(status)) {
- return_ACPI_STATUS(status);
+ if (!pathname) {
+ *return_node = prefix_node;
+ if (!prefix_node) {
+ *return_node = acpi_gbl_root_node;
}
}
+ return_ACPI_STATUS(AE_OK);
+ }
+
+ /* Convert path to internal representation */
+
+ status = acpi_ns_internalize_name(pathname, &internal_path);
+ if (ACPI_FAILURE(status)) {
+ return_ACPI_STATUS(status);
}
/* Must lock namespace during lookup */
}
/* Must lock namespace during lookup */
@@
-855,26
+863,23
@@
acpi_ns_get_node_by_path(char *pathname,
/* Setup lookup scope (search starting point) */
/* Setup lookup scope (search starting point) */
- scope_info.scope.node =
start
_node;
+ scope_info.scope.node =
prefix
_node;
/* Lookup the name in the namespace */
/* 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",
if (ACPI_FAILURE(status)) {
ACPI_DEBUG_PRINT((ACPI_DB_INFO, "%s, %s\n",
- internal_path,
- acpi_format_exception(status)));
+ pathname, acpi_format_exception(status)));
}
(void)acpi_ut_release_mutex(ACPI_MTX_NAMESPACE);
cleanup:
}
(void)acpi_ut_release_mutex(ACPI_MTX_NAMESPACE);
cleanup:
- if (internal_path) {
- ACPI_MEM_FREE(internal_path);
- }
+ ACPI_FREE(internal_path);
return_ACPI_STATUS(status);
}
return_ACPI_STATUS(status);
}
@@
-960,9
+965,10
@@
acpi_name acpi_ns_find_parent_name(struct acpi_namespace_node * child_node)
{
struct acpi_namespace_node *parent_node;
{
struct acpi_namespace_node *parent_node;
- ACPI_FUNCTION_TRACE(
"ns_find_parent_name"
);
+ ACPI_FUNCTION_TRACE(
ns_find_parent_name
);
if (child_node) {
if (child_node) {
+
/* Valid entry. Get the parent Node */
parent_node = acpi_ns_get_parent_node(child_node);
/* Valid entry. Get the parent Node */
parent_node = acpi_ns_get_parent_node(child_node);