Skip to content

Commit

Permalink
Pull sgi into test branch
Browse files Browse the repository at this point in the history
  • Loading branch information
Len Brown committed Dec 20, 2006
2 parents 9774f33 + 0f0fe1a commit 5b7b411
Show file tree
Hide file tree
Showing 3 changed files with 102 additions and 3 deletions.
44 changes: 44 additions & 0 deletions drivers/acpi/namespace/nsxfobj.c
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,50 @@
#define _COMPONENT ACPI_NAMESPACE
ACPI_MODULE_NAME("nsxfobj")

/*******************************************************************************
*
* FUNCTION: acpi_get_id
*
* PARAMETERS: Handle - Handle of object whose id is desired
* ret_id - Where the id will be placed
*
* RETURN: Status
*
* DESCRIPTION: This routine returns the owner id associated with a handle
*
******************************************************************************/
acpi_status acpi_get_id(acpi_handle handle, acpi_owner_id * ret_id)
{
struct acpi_namespace_node *node;
acpi_status status;

/* Parameter Validation */

if (!ret_id) {
return (AE_BAD_PARAMETER);
}

status = acpi_ut_acquire_mutex(ACPI_MTX_NAMESPACE);
if (ACPI_FAILURE(status)) {
return (status);
}

/* Convert and validate the handle */

node = acpi_ns_map_handle_to_node(handle);
if (!node) {
(void)acpi_ut_release_mutex(ACPI_MTX_NAMESPACE);
return (AE_BAD_PARAMETER);
}

*ret_id = node->owner_id;

status = acpi_ut_release_mutex(ACPI_MTX_NAMESPACE);
return (status);
}

ACPI_EXPORT_SYMBOL(acpi_get_id)

/*******************************************************************************
*
* FUNCTION: acpi_get_type
Expand Down
54 changes: 53 additions & 1 deletion drivers/acpi/tables/tbxface.c
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,6 @@ acpi_status acpi_load_tables(void)

ACPI_EXPORT_SYMBOL(acpi_load_tables)

#ifdef ACPI_FUTURE_USAGE
/*******************************************************************************
*
* FUNCTION: acpi_load_table
Expand Down Expand Up @@ -219,6 +218,59 @@ acpi_status acpi_load_table(struct acpi_table_header *table_ptr)

ACPI_EXPORT_SYMBOL(acpi_load_table)

/*******************************************************************************
*
* FUNCTION: acpi_unload_table_id
*
* PARAMETERS: table_type - Type of table to be unloaded
* id - Owner ID of the table to be removed.
*
* RETURN: Status
*
* DESCRIPTION: This routine is used to force the unload of a table (by id)
*
******************************************************************************/
acpi_status acpi_unload_table_id(acpi_table_type table_type, acpi_owner_id id)
{
struct acpi_table_desc *table_desc;
acpi_status status;

ACPI_FUNCTION_TRACE(acpi_unload_table);

/* Parameter validation */
if (table_type > ACPI_TABLE_ID_MAX)
return_ACPI_STATUS(AE_BAD_PARAMETER);

/* Find table from the requested type list */
table_desc = acpi_gbl_table_lists[table_type].next;
while (table_desc && table_desc->owner_id != id)
table_desc = table_desc->next;

if (!table_desc)
return_ACPI_STATUS(AE_NOT_EXIST);

/*
* Delete all namespace objects owned by this table. Note that these
* objects can appear anywhere in the namespace by virtue of the AML
* "Scope" operator. Thus, we need to track ownership by an ID, not
* simply a position within the hierarchy
*/
acpi_ns_delete_namespace_by_owner(table_desc->owner_id);

status = acpi_ut_acquire_mutex(ACPI_MTX_TABLES);
if (ACPI_FAILURE(status))
return_ACPI_STATUS(status);

(void)acpi_tb_uninstall_table(table_desc);

(void)acpi_ut_release_mutex(ACPI_MTX_TABLES);

return_ACPI_STATUS(AE_OK);
}

ACPI_EXPORT_SYMBOL(acpi_unload_table_id)

#ifdef ACPI_FUTURE_USAGE
/*******************************************************************************
*
* FUNCTION: acpi_unload_table
Expand Down
7 changes: 5 additions & 2 deletions include/acpi/acpixf.h
Original file line number Diff line number Diff line change
Expand Up @@ -97,11 +97,12 @@ acpi_find_root_pointer(u32 flags, struct acpi_pointer *rsdp_address);

acpi_status acpi_load_tables(void);

#ifdef ACPI_FUTURE_USAGE
acpi_status acpi_load_table(struct acpi_table_header *table_ptr);

acpi_status acpi_unload_table(acpi_table_type table_type);
acpi_status acpi_unload_table_id(acpi_table_type table_type, acpi_owner_id id);

#ifdef ACPI_FUTURE_USAGE
acpi_status acpi_unload_table(acpi_table_type table_type);
acpi_status
acpi_get_table_header(acpi_table_type table_type,
u32 instance, struct acpi_table_header *out_table_header);
Expand Down Expand Up @@ -180,6 +181,8 @@ acpi_get_next_object(acpi_object_type type,

acpi_status acpi_get_type(acpi_handle object, acpi_object_type * out_type);

acpi_status acpi_get_id(acpi_handle object, acpi_owner_id * out_type);

acpi_status acpi_get_parent(acpi_handle object, acpi_handle * out_handle);

/*
Expand Down

0 comments on commit 5b7b411

Please sign in to comment.