2005-04-17 02:20:36 +04:00
/******************************************************************************
*
* Name : acnamesp . h - Namespace subcomponent prototypes and defines
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/*
2007-02-02 19:48:24 +03:00
* Copyright ( C ) 2000 - 2007 , R . Byron Moore
2005-04-17 02:20:36 +04:00
* All rights reserved .
*
* Redistribution and use in source and binary forms , with or without
* modification , are permitted provided that the following conditions
* are met :
* 1. Redistributions of source code must retain the above copyright
* notice , this list of conditions , and the following disclaimer ,
* without modification .
* 2. Redistributions in binary form must reproduce at minimum a disclaimer
* substantially similar to the " NO WARRANTY " disclaimer below
* ( " Disclaimer " ) and any redistribution must be conditioned upon
* including a substantially similar Disclaimer requirement for further
* binary redistribution .
* 3. Neither the names of the above - listed copyright holders nor the names
* of any contributors may be used to endorse or promote products derived
* from this software without specific prior written permission .
*
* Alternatively , this software may be distributed under the terms of the
* GNU General Public License ( " GPL " ) version 2 as published by the Free
* Software Foundation .
*
* NO WARRANTY
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* " AS IS " AND ANY EXPRESS OR IMPLIED WARRANTIES , INCLUDING , BUT NOT
* LIMITED TO , THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED . IN NO EVENT SHALL THE COPYRIGHT
* HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL , EXEMPLARY , OR CONSEQUENTIAL
* DAMAGES ( INCLUDING , BUT NOT LIMITED TO , PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES ; LOSS OF USE , DATA , OR PROFITS ; OR BUSINESS INTERRUPTION )
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY , WHETHER IN CONTRACT ,
* STRICT LIABILITY , OR TORT ( INCLUDING NEGLIGENCE OR OTHERWISE ) ARISING
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE , EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGES .
*/
# ifndef __ACNAMESP_H__
# define __ACNAMESP_H__
/* To search the entire name space, pass this as search_base */
# define ACPI_NS_ALL ((acpi_handle)0)
/*
* Elements of acpi_ns_properties are bit significant
* and should be one - to - one with values of acpi_object_type
*/
# define ACPI_NS_NORMAL 0
2005-08-05 08:44:28 +04:00
# define ACPI_NS_NEWSCOPE 1 /* a definition of this type opens a name scope */
# define ACPI_NS_LOCAL 2 /* suppress search of enclosing scopes */
2005-04-17 02:20:36 +04:00
/* Flags for acpi_ns_lookup, acpi_ns_search_and_enter */
# define ACPI_NS_NO_UPSEARCH 0
# define ACPI_NS_SEARCH_PARENT 0x01
# define ACPI_NS_DONT_OPEN_SCOPE 0x02
# define ACPI_NS_NO_PEER_SEARCH 0x04
# define ACPI_NS_ERROR_IF_FOUND 0x08
2006-10-03 08:00:00 +04:00
# define ACPI_NS_PREFIX_IS_SCOPE 0x10
2006-05-13 01:12:00 +04:00
# define ACPI_NS_EXTERNAL 0x20
2007-02-02 19:48:21 +03:00
# define ACPI_NS_TEMPORARY 0x40
2005-04-17 02:20:36 +04:00
2007-02-02 19:48:21 +03:00
/* Flags for acpi_ns_walk_namespace */
# define ACPI_NS_WALK_NO_UNLOCK 0
# define ACPI_NS_WALK_UNLOCK 0x01
# define ACPI_NS_WALK_TEMP_NODES 0x02
2005-04-17 02:20:36 +04:00
2005-04-19 06:49:35 +04:00
/*
* nsinit - Namespace initialization
*/
2005-08-05 08:44:28 +04:00
acpi_status acpi_ns_initialize_objects ( void ) ;
2005-04-17 02:20:36 +04:00
2005-08-05 08:44:28 +04:00
acpi_status acpi_ns_initialize_devices ( void ) ;
2005-04-17 02:20:36 +04:00
2005-04-19 06:49:35 +04:00
/*
* nsload - Namespace loading
*/
2005-08-05 08:44:28 +04:00
acpi_status acpi_ns_load_namespace ( void ) ;
2005-04-17 02:20:36 +04:00
acpi_status
2007-02-02 19:48:18 +03:00
acpi_ns_load_table ( acpi_native_uint table_index ,
2005-08-05 08:44:28 +04:00
struct acpi_namespace_node * node ) ;
2005-04-17 02:20:36 +04:00
2005-04-19 06:49:35 +04:00
/*
* nswalk - walk the namespace
*/
2005-04-17 02:20:36 +04:00
acpi_status
2005-08-05 08:44:28 +04:00
acpi_ns_walk_namespace ( acpi_object_type type ,
acpi_handle start_object ,
u32 max_depth ,
2007-02-02 19:48:21 +03:00
u32 flags ,
2005-08-05 08:44:28 +04:00
acpi_walk_callback user_function ,
void * context , void * * return_value ) ;
2007-05-10 07:34:35 +04:00
struct acpi_namespace_node * acpi_ns_get_next_node ( acpi_object_type type , struct acpi_namespace_node
* parent , struct acpi_namespace_node
2005-08-05 08:44:28 +04:00
* child ) ;
2005-04-17 02:20:36 +04:00
2005-04-19 06:49:35 +04:00
/*
* nsparse - table parsing
*/
2005-04-17 02:20:36 +04:00
acpi_status
2007-02-02 19:48:18 +03:00
acpi_ns_parse_table ( acpi_native_uint table_index ,
struct acpi_namespace_node * start_node ) ;
2005-04-17 02:20:36 +04:00
acpi_status
2007-02-02 19:48:18 +03:00
acpi_ns_one_complete_parse ( acpi_native_uint pass_number ,
acpi_native_uint table_index ) ;
2005-04-17 02:20:36 +04:00
/*
2005-04-19 06:49:35 +04:00
* nsaccess - Top - level namespace access
2005-04-17 02:20:36 +04:00
*/
2005-08-05 08:44:28 +04:00
acpi_status acpi_ns_root_initialize ( void ) ;
2005-04-17 02:20:36 +04:00
acpi_status
2005-08-05 08:44:28 +04:00
acpi_ns_lookup ( union acpi_generic_state * scope_info ,
char * name ,
acpi_object_type type ,
acpi_interpreter_mode interpreter_mode ,
u32 flags ,
struct acpi_walk_state * walk_state ,
struct acpi_namespace_node * * ret_node ) ;
2005-04-17 02:20:36 +04:00
/*
2005-04-19 06:49:35 +04:00
* nsalloc - Named object allocation / deallocation
2005-04-17 02:20:36 +04:00
*/
2005-08-05 08:44:28 +04:00
struct acpi_namespace_node * acpi_ns_create_node ( u32 name ) ;
2005-04-17 02:20:36 +04:00
2005-08-05 08:44:28 +04:00
void acpi_ns_delete_node ( struct acpi_namespace_node * node ) ;
2005-04-17 02:20:36 +04:00
2005-04-19 06:49:35 +04:00
void
2005-08-05 08:44:28 +04:00
acpi_ns_delete_namespace_subtree ( struct acpi_namespace_node * parent_handle ) ;
2005-04-19 06:49:35 +04:00
2005-08-05 08:44:28 +04:00
void acpi_ns_delete_namespace_by_owner ( acpi_owner_id owner_id ) ;
2005-04-17 02:20:36 +04:00
2005-08-05 08:44:28 +04:00
void acpi_ns_detach_object ( struct acpi_namespace_node * node ) ;
2005-04-17 02:20:36 +04:00
2005-08-05 08:44:28 +04:00
void acpi_ns_delete_children ( struct acpi_namespace_node * parent ) ;
2005-04-17 02:20:36 +04:00
2005-08-05 08:44:28 +04:00
int acpi_ns_compare_names ( char * name1 , char * name2 ) ;
2005-04-17 02:20:36 +04:00
/*
2005-04-19 06:49:35 +04:00
* nsdump - Namespace dump / print utilities
2005-04-17 02:20:36 +04:00
*/
2005-04-19 06:49:35 +04:00
# ifdef ACPI_FUTURE_USAGE
2005-08-05 08:44:28 +04:00
void acpi_ns_dump_tables ( acpi_handle search_base , u32 max_depth ) ;
# endif /* ACPI_FUTURE_USAGE */
2005-04-17 02:20:36 +04:00
2005-08-05 08:44:28 +04:00
void acpi_ns_dump_entry ( acpi_handle handle , u32 debug_level ) ;
2005-04-17 02:20:36 +04:00
void
2005-08-05 08:44:28 +04:00
acpi_ns_dump_pathname ( acpi_handle handle , char * msg , u32 level , u32 component ) ;
2005-04-17 02:20:36 +04:00
2005-08-05 08:44:28 +04:00
void acpi_ns_print_pathname ( u32 num_segments , char * pathname ) ;
2005-04-17 02:20:36 +04:00
acpi_status
2005-08-05 08:44:28 +04:00
acpi_ns_dump_one_object ( acpi_handle obj_handle ,
u32 level , void * context , void * * return_value ) ;
2005-04-17 02:20:36 +04:00
2005-04-19 06:49:35 +04:00
# ifdef ACPI_FUTURE_USAGE
2005-04-17 02:20:36 +04:00
void
2005-08-05 08:44:28 +04:00
acpi_ns_dump_objects ( acpi_object_type type ,
u8 display_type ,
u32 max_depth ,
acpi_owner_id owner_id , acpi_handle start_handle ) ;
# endif /* ACPI_FUTURE_USAGE */
2005-04-17 02:20:36 +04:00
/*
2005-04-19 06:49:35 +04:00
* nseval - Namespace evaluation functions
2005-04-17 02:20:36 +04:00
*/
2006-05-27 00:36:00 +04:00
acpi_status acpi_ns_evaluate ( struct acpi_evaluate_info * info ) ;
2005-04-17 02:20:36 +04:00
/*
2005-04-19 06:49:35 +04:00
* nsnames - Name and Scope manipulation
2005-04-17 02:20:36 +04:00
*/
2005-08-05 08:44:28 +04:00
u32 acpi_ns_opens_scope ( acpi_object_type type ) ;
2005-04-17 02:20:36 +04:00
2006-10-03 08:00:00 +04:00
void
acpi_ns_build_external_path ( struct acpi_namespace_node * node ,
acpi_size size , char * name_buffer ) ;
2005-08-05 08:44:28 +04:00
char * acpi_ns_get_external_pathname ( struct acpi_namespace_node * node ) ;
2005-04-17 02:20:36 +04:00
2005-08-05 08:44:28 +04:00
char * acpi_ns_name_of_current_scope ( struct acpi_walk_state * walk_state ) ;
2005-04-17 02:20:36 +04:00
acpi_status
2005-08-05 08:44:28 +04:00
acpi_ns_handle_to_pathname ( acpi_handle target_handle ,
struct acpi_buffer * buffer ) ;
2005-04-17 02:20:36 +04:00
u8
2005-08-05 08:44:28 +04:00
acpi_ns_pattern_match ( struct acpi_namespace_node * obj_node , char * search_for ) ;
2005-04-17 02:20:36 +04:00
acpi_status
2006-05-27 00:36:00 +04:00
acpi_ns_get_node ( struct acpi_namespace_node * prefix_node ,
char * external_pathname ,
u32 flags , struct acpi_namespace_node * * out_node ) ;
2005-04-17 02:20:36 +04:00
2005-08-05 08:44:28 +04:00
acpi_size acpi_ns_get_pathname_length ( struct acpi_namespace_node * node ) ;
2005-04-17 02:20:36 +04:00
/*
2005-04-19 06:49:35 +04:00
* nsobject - Object management for namespace nodes
2005-04-17 02:20:36 +04:00
*/
acpi_status
2005-08-05 08:44:28 +04:00
acpi_ns_attach_object ( struct acpi_namespace_node * node ,
union acpi_operand_object * object , acpi_object_type type ) ;
2005-04-17 02:20:36 +04:00
2005-08-05 08:44:28 +04:00
union acpi_operand_object * acpi_ns_get_attached_object ( struct
acpi_namespace_node
* node ) ;
2005-04-17 02:20:36 +04:00
2005-08-05 08:44:28 +04:00
union acpi_operand_object * acpi_ns_get_secondary_object ( union
acpi_operand_object
* obj_desc ) ;
2005-04-17 02:20:36 +04:00
acpi_status
2005-08-05 08:44:28 +04:00
acpi_ns_attach_data ( struct acpi_namespace_node * node ,
acpi_object_handler handler , void * data ) ;
2005-04-17 02:20:36 +04:00
acpi_status
2005-08-05 08:44:28 +04:00
acpi_ns_detach_data ( struct acpi_namespace_node * node ,
acpi_object_handler handler ) ;
2005-04-17 02:20:36 +04:00
acpi_status
2005-08-05 08:44:28 +04:00
acpi_ns_get_attached_data ( struct acpi_namespace_node * node ,
acpi_object_handler handler , void * * data ) ;
2005-04-17 02:20:36 +04:00
/*
2005-04-19 06:49:35 +04:00
* nssearch - Namespace searching and entry
2005-04-17 02:20:36 +04:00
*/
acpi_status
2005-08-05 08:44:28 +04:00
acpi_ns_search_and_enter ( u32 entry_name ,
struct acpi_walk_state * walk_state ,
struct acpi_namespace_node * node ,
acpi_interpreter_mode interpreter_mode ,
acpi_object_type type ,
u32 flags , struct acpi_namespace_node * * ret_node ) ;
2005-04-17 02:20:36 +04:00
acpi_status
2006-05-27 00:36:00 +04:00
acpi_ns_search_one_scope ( u32 entry_name ,
struct acpi_namespace_node * node ,
acpi_object_type type ,
struct acpi_namespace_node * * ret_node ) ;
2005-04-17 02:20:36 +04:00
void
2005-08-05 08:44:28 +04:00
acpi_ns_install_node ( struct acpi_walk_state * walk_state ,
struct acpi_namespace_node * parent_node ,
struct acpi_namespace_node * node , acpi_object_type type ) ;
2005-04-17 02:20:36 +04:00
/*
2005-04-19 06:49:35 +04:00
* nsutils - Utility functions
2005-04-17 02:20:36 +04:00
*/
2005-08-05 08:44:28 +04:00
u8 acpi_ns_valid_root_prefix ( char prefix ) ;
2005-04-17 02:20:36 +04:00
2005-08-05 08:44:28 +04:00
acpi_object_type acpi_ns_get_type ( struct acpi_namespace_node * node ) ;
2005-04-17 02:20:36 +04:00
2005-08-05 08:44:28 +04:00
u32 acpi_ns_local ( acpi_object_type type ) ;
2005-04-17 02:20:36 +04:00
void
2005-08-05 08:44:28 +04:00
acpi_ns_report_error ( char * module_name ,
u32 line_number ,
char * internal_name , acpi_status lookup_status ) ;
2005-04-17 02:20:36 +04:00
void
2005-08-05 08:44:28 +04:00
acpi_ns_report_method_error ( char * module_name ,
u32 line_number ,
char * message ,
struct acpi_namespace_node * node ,
char * path , acpi_status lookup_status ) ;
2005-04-17 02:20:36 +04:00
2005-08-05 08:44:28 +04:00
void acpi_ns_print_node_pathname ( struct acpi_namespace_node * node , char * msg ) ;
2005-04-17 02:20:36 +04:00
2005-08-05 08:44:28 +04:00
acpi_status acpi_ns_build_internal_name ( struct acpi_namestring_info * info ) ;
2005-04-17 02:20:36 +04:00
2005-08-05 08:44:28 +04:00
void acpi_ns_get_internal_name_length ( struct acpi_namestring_info * info ) ;
2005-04-17 02:20:36 +04:00
2005-08-05 08:44:28 +04:00
acpi_status acpi_ns_internalize_name ( char * dotted_name , char * * converted_name ) ;
2005-04-17 02:20:36 +04:00
acpi_status
2005-08-05 08:44:28 +04:00
acpi_ns_externalize_name ( u32 internal_name_length ,
char * internal_name ,
u32 * converted_name_length , char * * converted_name ) ;
2005-04-17 02:20:36 +04:00
2005-08-05 08:44:28 +04:00
struct acpi_namespace_node * acpi_ns_map_handle_to_node ( acpi_handle handle ) ;
2005-04-17 02:20:36 +04:00
2005-08-05 08:44:28 +04:00
acpi_handle acpi_ns_convert_entry_to_handle ( struct acpi_namespace_node * node ) ;
2005-04-17 02:20:36 +04:00
2005-08-05 08:44:28 +04:00
void acpi_ns_terminate ( void ) ;
2005-04-17 02:20:36 +04:00
2005-08-05 08:44:28 +04:00
struct acpi_namespace_node * acpi_ns_get_parent_node ( struct acpi_namespace_node
* node ) ;
2005-04-17 02:20:36 +04:00
2005-08-05 08:44:28 +04:00
struct acpi_namespace_node * acpi_ns_get_next_valid_node ( struct
acpi_namespace_node
* node ) ;
2005-04-17 02:20:36 +04:00
2005-08-05 08:44:28 +04:00
# endif /* __ACNAMESP_H__ */