Palacios Public Git Repository

To checkout Palacios execute

  git clone http://v3vee.org/palacios/palacios.web/palacios.git
This will give you the master branch. You probably want the devel branch or one of the release branches. To switch to the devel branch, simply execute
  cd palacios
  git checkout --track -b devel origin/devel
The other branches are similar.


Added Kitten
[palacios-OLD.git] / kitten / include / acpi / acnamesp.h
1 /******************************************************************************
2  *
3  * Name: acnamesp.h - Namespace subcomponent prototypes and defines
4  *
5  *****************************************************************************/
6
7 /*
8  * Copyright (C) 2000 - 2006, R. Byron Moore
9  * All rights reserved.
10  *
11  * Redistribution and use in source and binary forms, with or without
12  * modification, are permitted provided that the following conditions
13  * are met:
14  * 1. Redistributions of source code must retain the above copyright
15  *    notice, this list of conditions, and the following disclaimer,
16  *    without modification.
17  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18  *    substantially similar to the "NO WARRANTY" disclaimer below
19  *    ("Disclaimer") and any redistribution must be conditioned upon
20  *    including a substantially similar Disclaimer requirement for further
21  *    binary redistribution.
22  * 3. Neither the names of the above-listed copyright holders nor the names
23  *    of any contributors may be used to endorse or promote products derived
24  *    from this software without specific prior written permission.
25  *
26  * Alternatively, this software may be distributed under the terms of the
27  * GNU General Public License ("GPL") version 2 as published by the Free
28  * Software Foundation.
29  *
30  * NO WARRANTY
31  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41  * POSSIBILITY OF SUCH DAMAGES.
42  */
43
44 #ifndef __ACNAMESP_H__
45 #define __ACNAMESP_H__
46
47 /* To search the entire name space, pass this as search_base */
48
49 #define ACPI_NS_ALL                 ((acpi_handle)0)
50
51 /*
52  * Elements of acpi_ns_properties are bit significant
53  * and should be one-to-one with values of acpi_object_type
54  */
55 #define ACPI_NS_NORMAL              0
56 #define ACPI_NS_NEWSCOPE            1   /* a definition of this type opens a name scope */
57 #define ACPI_NS_LOCAL               2   /* suppress search of enclosing scopes */
58
59 /* Flags for acpi_ns_lookup, acpi_ns_search_and_enter */
60
61 #define ACPI_NS_NO_UPSEARCH         0
62 #define ACPI_NS_SEARCH_PARENT       0x01
63 #define ACPI_NS_DONT_OPEN_SCOPE     0x02
64 #define ACPI_NS_NO_PEER_SEARCH      0x04
65 #define ACPI_NS_ERROR_IF_FOUND      0x08
66 #define ACPI_NS_PREFIX_IS_SCOPE     0x10
67 #define ACPI_NS_EXTERNAL            0x20
68
69 #define ACPI_NS_WALK_UNLOCK         TRUE
70 #define ACPI_NS_WALK_NO_UNLOCK      FALSE
71
72 /*
73  * nsinit - Namespace initialization
74  */
75 acpi_status acpi_ns_initialize_objects(void);
76
77 acpi_status acpi_ns_initialize_devices(void);
78
79 /*
80  * nsload -  Namespace loading
81  */
82 acpi_status acpi_ns_load_namespace(void);
83
84 acpi_status
85 acpi_ns_load_table(struct acpi_table_desc *table_desc,
86                    struct acpi_namespace_node *node);
87
88 /*
89  * nswalk - walk the namespace
90  */
91 acpi_status
92 acpi_ns_walk_namespace(acpi_object_type type,
93                        acpi_handle start_object,
94                        u32 max_depth,
95                        u8 unlock_before_callback,
96                        acpi_walk_callback user_function,
97                        void *context, void **return_value);
98
99 struct acpi_namespace_node *acpi_ns_get_next_node(acpi_object_type type,
100                                                   struct acpi_namespace_node
101                                                   *parent,
102                                                   struct acpi_namespace_node
103                                                   *child);
104
105 /*
106  * nsparse - table parsing
107  */
108 acpi_status
109 acpi_ns_parse_table(struct acpi_table_desc *table_desc,
110                     struct acpi_namespace_node *scope);
111
112 acpi_status
113 acpi_ns_one_complete_parse(u8 pass_number, struct acpi_table_desc *table_desc);
114
115 /*
116  * nsaccess - Top-level namespace access
117  */
118 acpi_status acpi_ns_root_initialize(void);
119
120 acpi_status
121 acpi_ns_lookup(union acpi_generic_state *scope_info,
122                char *name,
123                acpi_object_type type,
124                acpi_interpreter_mode interpreter_mode,
125                u32 flags,
126                struct acpi_walk_state *walk_state,
127                struct acpi_namespace_node **ret_node);
128
129 /*
130  * nsalloc - Named object allocation/deallocation
131  */
132 struct acpi_namespace_node *acpi_ns_create_node(u32 name);
133
134 void acpi_ns_delete_node(struct acpi_namespace_node *node);
135
136 void
137 acpi_ns_delete_namespace_subtree(struct acpi_namespace_node *parent_handle);
138
139 void acpi_ns_delete_namespace_by_owner(acpi_owner_id owner_id);
140
141 void acpi_ns_detach_object(struct acpi_namespace_node *node);
142
143 void acpi_ns_delete_children(struct acpi_namespace_node *parent);
144
145 int acpi_ns_compare_names(char *name1, char *name2);
146
147 /*
148  * nsdump - Namespace dump/print utilities
149  */
150 #ifdef  ACPI_FUTURE_USAGE
151 void acpi_ns_dump_tables(acpi_handle search_base, u32 max_depth);
152 #endif                          /* ACPI_FUTURE_USAGE */
153
154 void acpi_ns_dump_entry(acpi_handle handle, u32 debug_level);
155
156 void
157 acpi_ns_dump_pathname(acpi_handle handle, char *msg, u32 level, u32 component);
158
159 void acpi_ns_print_pathname(u32 num_segments, char *pathname);
160
161 acpi_status
162 acpi_ns_dump_one_object(acpi_handle obj_handle,
163                         u32 level, void *context, void **return_value);
164
165 #ifdef  ACPI_FUTURE_USAGE
166 void
167 acpi_ns_dump_objects(acpi_object_type type,
168                      u8 display_type,
169                      u32 max_depth,
170                      acpi_owner_id owner_id, acpi_handle start_handle);
171 #endif                          /* ACPI_FUTURE_USAGE */
172
173 /*
174  * nseval - Namespace evaluation functions
175  */
176 acpi_status acpi_ns_evaluate(struct acpi_evaluate_info *info);
177
178 /*
179  * nsnames - Name and Scope manipulation
180  */
181 u32 acpi_ns_opens_scope(acpi_object_type type);
182
183 void
184 acpi_ns_build_external_path(struct acpi_namespace_node *node,
185                             acpi_size size, char *name_buffer);
186
187 char *acpi_ns_get_external_pathname(struct acpi_namespace_node *node);
188
189 char *acpi_ns_name_of_current_scope(struct acpi_walk_state *walk_state);
190
191 acpi_status
192 acpi_ns_handle_to_pathname(acpi_handle target_handle,
193                            struct acpi_buffer *buffer);
194
195 u8
196 acpi_ns_pattern_match(struct acpi_namespace_node *obj_node, char *search_for);
197
198 acpi_status
199 acpi_ns_get_node(struct acpi_namespace_node *prefix_node,
200                  char *external_pathname,
201                  u32 flags, struct acpi_namespace_node **out_node);
202
203 acpi_size acpi_ns_get_pathname_length(struct acpi_namespace_node *node);
204
205 /*
206  * nsobject - Object management for namespace nodes
207  */
208 acpi_status
209 acpi_ns_attach_object(struct acpi_namespace_node *node,
210                       union acpi_operand_object *object, acpi_object_type type);
211
212 union acpi_operand_object *acpi_ns_get_attached_object(struct
213                                                        acpi_namespace_node
214                                                        *node);
215
216 union acpi_operand_object *acpi_ns_get_secondary_object(union
217                                                         acpi_operand_object
218                                                         *obj_desc);
219
220 acpi_status
221 acpi_ns_attach_data(struct acpi_namespace_node *node,
222                     acpi_object_handler handler, void *data);
223
224 acpi_status
225 acpi_ns_detach_data(struct acpi_namespace_node *node,
226                     acpi_object_handler handler);
227
228 acpi_status
229 acpi_ns_get_attached_data(struct acpi_namespace_node *node,
230                           acpi_object_handler handler, void **data);
231
232 /*
233  * nssearch - Namespace searching and entry
234  */
235 acpi_status
236 acpi_ns_search_and_enter(u32 entry_name,
237                          struct acpi_walk_state *walk_state,
238                          struct acpi_namespace_node *node,
239                          acpi_interpreter_mode interpreter_mode,
240                          acpi_object_type type,
241                          u32 flags, struct acpi_namespace_node **ret_node);
242
243 acpi_status
244 acpi_ns_search_one_scope(u32 entry_name,
245                          struct acpi_namespace_node *node,
246                          acpi_object_type type,
247                          struct acpi_namespace_node **ret_node);
248
249 void
250 acpi_ns_install_node(struct acpi_walk_state *walk_state,
251                      struct acpi_namespace_node *parent_node,
252                      struct acpi_namespace_node *node, acpi_object_type type);
253
254 /*
255  * nsutils - Utility functions
256  */
257 u8 acpi_ns_valid_root_prefix(char prefix);
258
259 acpi_object_type acpi_ns_get_type(struct acpi_namespace_node *node);
260
261 u32 acpi_ns_local(acpi_object_type type);
262
263 void
264 acpi_ns_report_error(char *module_name,
265                      u32 line_number,
266                      char *internal_name, acpi_status lookup_status);
267
268 void
269 acpi_ns_report_method_error(char *module_name,
270                             u32 line_number,
271                             char *message,
272                             struct acpi_namespace_node *node,
273                             char *path, acpi_status lookup_status);
274
275 void acpi_ns_print_node_pathname(struct acpi_namespace_node *node, char *msg);
276
277 acpi_status acpi_ns_build_internal_name(struct acpi_namestring_info *info);
278
279 void acpi_ns_get_internal_name_length(struct acpi_namestring_info *info);
280
281 acpi_status acpi_ns_internalize_name(char *dotted_name, char **converted_name);
282
283 acpi_status
284 acpi_ns_externalize_name(u32 internal_name_length,
285                          char *internal_name,
286                          u32 * converted_name_length, char **converted_name);
287
288 struct acpi_namespace_node *acpi_ns_map_handle_to_node(acpi_handle handle);
289
290 acpi_handle acpi_ns_convert_entry_to_handle(struct acpi_namespace_node *node);
291
292 void acpi_ns_terminate(void);
293
294 struct acpi_namespace_node *acpi_ns_get_parent_node(struct acpi_namespace_node
295                                                     *node);
296
297 struct acpi_namespace_node *acpi_ns_get_next_valid_node(struct
298                                                         acpi_namespace_node
299                                                         *node);
300
301 #endif                          /* __ACNAMESP_H__ */