acnamesp.h revision 1.3 1 /******************************************************************************
2 *
3 * Name: acnamesp.h - Namespace subcomponent prototypes and defines
4 *
5 *****************************************************************************/
6
7 /*
8 * Copyright (C) 2000 - 2011, Intel Corp.
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
48 /* To search the entire name space, pass this as SearchBase */
49
50 #define ACPI_NS_ALL ((ACPI_HANDLE)0)
51
52 /*
53 * Elements of AcpiNsProperties are bit significant
54 * and should be one-to-one with values of ACPI_OBJECT_TYPE
55 */
56 #define ACPI_NS_NORMAL 0
57 #define ACPI_NS_NEWSCOPE 1 /* a definition of this type opens a name scope */
58 #define ACPI_NS_LOCAL 2 /* suppress search of enclosing scopes */
59
60 /* Flags for AcpiNsLookup, AcpiNsSearchAndEnter */
61
62 #define ACPI_NS_NO_UPSEARCH 0
63 #define ACPI_NS_SEARCH_PARENT 0x01
64 #define ACPI_NS_DONT_OPEN_SCOPE 0x02
65 #define ACPI_NS_NO_PEER_SEARCH 0x04
66 #define ACPI_NS_ERROR_IF_FOUND 0x08
67 #define ACPI_NS_PREFIX_IS_SCOPE 0x10
68 #define ACPI_NS_EXTERNAL 0x20
69 #define ACPI_NS_TEMPORARY 0x40
70
71 /* Flags for AcpiNsWalkNamespace */
72
73 #define ACPI_NS_WALK_NO_UNLOCK 0
74 #define ACPI_NS_WALK_UNLOCK 0x01
75 #define ACPI_NS_WALK_TEMP_NODES 0x02
76
77 /* Object is not a package element */
78
79 #define ACPI_NOT_PACKAGE_ELEMENT ACPI_UINT32_MAX
80
81 /* Always emit warning message, not dependent on node flags */
82
83 #define ACPI_WARN_ALWAYS 0
84
85
86 /*
87 * nsinit - Namespace initialization
88 */
89 ACPI_STATUS
90 AcpiNsInitializeObjects (
91 void);
92
93 ACPI_STATUS
94 AcpiNsInitializeDevices (
95 void);
96
97
98 /*
99 * nsload - Namespace loading
100 */
101 ACPI_STATUS
102 AcpiNsLoadNamespace (
103 void);
104
105 ACPI_STATUS
106 AcpiNsLoadTable (
107 UINT32 TableIndex,
108 ACPI_NAMESPACE_NODE *Node);
109
110
111 /*
112 * nswalk - walk the namespace
113 */
114 ACPI_STATUS
115 AcpiNsWalkNamespace (
116 ACPI_OBJECT_TYPE Type,
117 ACPI_HANDLE StartObject,
118 UINT32 MaxDepth,
119 UINT32 Flags,
120 ACPI_WALK_CALLBACK PreOrderVisit,
121 ACPI_WALK_CALLBACK PostOrderVisit,
122 void *Context,
123 void **ReturnValue);
124
125 ACPI_NAMESPACE_NODE *
126 AcpiNsGetNextNode (
127 ACPI_NAMESPACE_NODE *Parent,
128 ACPI_NAMESPACE_NODE *Child);
129
130 ACPI_NAMESPACE_NODE *
131 AcpiNsGetNextNodeTyped (
132 ACPI_OBJECT_TYPE Type,
133 ACPI_NAMESPACE_NODE *Parent,
134 ACPI_NAMESPACE_NODE *Child);
135
136 /*
137 * nsparse - table parsing
138 */
139 ACPI_STATUS
140 AcpiNsParseTable (
141 UINT32 TableIndex,
142 ACPI_NAMESPACE_NODE *StartNode);
143
144 ACPI_STATUS
145 AcpiNsOneCompleteParse (
146 UINT32 PassNumber,
147 UINT32 TableIndex,
148 ACPI_NAMESPACE_NODE *StartNode);
149
150
151 /*
152 * nsaccess - Top-level namespace access
153 */
154 ACPI_STATUS
155 AcpiNsRootInitialize (
156 void);
157
158 ACPI_STATUS
159 AcpiNsLookup (
160 ACPI_GENERIC_STATE *ScopeInfo,
161 char *Name,
162 ACPI_OBJECT_TYPE Type,
163 ACPI_INTERPRETER_MODE InterpreterMode,
164 UINT32 Flags,
165 ACPI_WALK_STATE *WalkState,
166 ACPI_NAMESPACE_NODE **RetNode);
167
168
169 /*
170 * nsalloc - Named object allocation/deallocation
171 */
172 ACPI_NAMESPACE_NODE *
173 AcpiNsCreateNode (
174 UINT32 Name);
175
176 void
177 AcpiNsDeleteNode (
178 ACPI_NAMESPACE_NODE *Node);
179
180 void
181 AcpiNsRemoveNode (
182 ACPI_NAMESPACE_NODE *Node);
183
184 void
185 AcpiNsDeleteNamespaceSubtree (
186 ACPI_NAMESPACE_NODE *ParentHandle);
187
188 void
189 AcpiNsDeleteNamespaceByOwner (
190 ACPI_OWNER_ID OwnerId);
191
192 void
193 AcpiNsDetachObject (
194 ACPI_NAMESPACE_NODE *Node);
195
196 void
197 AcpiNsDeleteChildren (
198 ACPI_NAMESPACE_NODE *Parent);
199
200 int
201 AcpiNsCompareNames (
202 char *Name1,
203 char *Name2);
204
205
206 /*
207 * nsdump - Namespace dump/print utilities
208 */
209 void
210 AcpiNsDumpTables (
211 ACPI_HANDLE SearchBase,
212 UINT32 MaxDepth);
213
214 void
215 AcpiNsDumpEntry (
216 ACPI_HANDLE Handle,
217 UINT32 DebugLevel);
218
219 void
220 AcpiNsDumpPathname (
221 ACPI_HANDLE Handle,
222 const char *Msg,
223 UINT32 Level,
224 UINT32 Component);
225
226 void
227 AcpiNsPrintPathname (
228 UINT32 NumSegments,
229 char *Pathname);
230
231 ACPI_STATUS
232 AcpiNsDumpOneObject (
233 ACPI_HANDLE ObjHandle,
234 UINT32 Level,
235 void *Context,
236 void **ReturnValue);
237
238 void
239 AcpiNsDumpObjects (
240 ACPI_OBJECT_TYPE Type,
241 UINT8 DisplayType,
242 UINT32 MaxDepth,
243 ACPI_OWNER_ID OwnerId,
244 ACPI_HANDLE StartHandle);
245
246
247 /*
248 * nseval - Namespace evaluation functions
249 */
250 ACPI_STATUS
251 AcpiNsEvaluate (
252 ACPI_EVALUATE_INFO *Info);
253
254 void
255 AcpiNsExecModuleCodeList (
256 void);
257
258
259 /*
260 * nspredef - Support for predefined/reserved names
261 */
262 ACPI_STATUS
263 AcpiNsCheckPredefinedNames (
264 ACPI_NAMESPACE_NODE *Node,
265 UINT32 UserParamCount,
266 ACPI_STATUS ReturnStatus,
267 ACPI_OPERAND_OBJECT **ReturnObject);
268
269 const ACPI_PREDEFINED_INFO *
270 AcpiNsCheckForPredefinedName (
271 ACPI_NAMESPACE_NODE *Node);
272
273 void
274 AcpiNsCheckParameterCount (
275 char *Pathname,
276 ACPI_NAMESPACE_NODE *Node,
277 UINT32 UserParamCount,
278 const ACPI_PREDEFINED_INFO *Info);
279
280
281 /*
282 * nsnames - Name and Scope manipulation
283 */
284 UINT32
285 AcpiNsOpensScope (
286 ACPI_OBJECT_TYPE Type);
287
288 ACPI_STATUS
289 AcpiNsBuildExternalPath (
290 ACPI_NAMESPACE_NODE *Node,
291 ACPI_SIZE Size,
292 char *NameBuffer);
293
294 char *
295 AcpiNsGetExternalPathname (
296 ACPI_NAMESPACE_NODE *Node);
297
298 char *
299 AcpiNsNameOfCurrentScope (
300 ACPI_WALK_STATE *WalkState);
301
302 ACPI_STATUS
303 AcpiNsHandleToPathname (
304 ACPI_HANDLE TargetHandle,
305 ACPI_BUFFER *Buffer);
306
307 BOOLEAN
308 AcpiNsPatternMatch (
309 ACPI_NAMESPACE_NODE *ObjNode,
310 char *SearchFor);
311
312 ACPI_STATUS
313 AcpiNsGetNode (
314 ACPI_NAMESPACE_NODE *PrefixNode,
315 const char *ExternalPathname,
316 UINT32 Flags,
317 ACPI_NAMESPACE_NODE **OutNode);
318
319 ACPI_SIZE
320 AcpiNsGetPathnameLength (
321 ACPI_NAMESPACE_NODE *Node);
322
323
324 /*
325 * nsobject - Object management for namespace nodes
326 */
327 ACPI_STATUS
328 AcpiNsAttachObject (
329 ACPI_NAMESPACE_NODE *Node,
330 ACPI_OPERAND_OBJECT *Object,
331 ACPI_OBJECT_TYPE Type);
332
333 ACPI_OPERAND_OBJECT *
334 AcpiNsGetAttachedObject (
335 ACPI_NAMESPACE_NODE *Node);
336
337 ACPI_OPERAND_OBJECT *
338 AcpiNsGetSecondaryObject (
339 ACPI_OPERAND_OBJECT *ObjDesc);
340
341 ACPI_STATUS
342 AcpiNsAttachData (
343 ACPI_NAMESPACE_NODE *Node,
344 ACPI_OBJECT_HANDLER Handler,
345 void *Data);
346
347 ACPI_STATUS
348 AcpiNsDetachData (
349 ACPI_NAMESPACE_NODE *Node,
350 ACPI_OBJECT_HANDLER Handler);
351
352 ACPI_STATUS
353 AcpiNsGetAttachedData (
354 ACPI_NAMESPACE_NODE *Node,
355 ACPI_OBJECT_HANDLER Handler,
356 void **Data);
357
358
359 /*
360 * nsrepair - General return object repair for all
361 * predefined methods/objects
362 */
363 ACPI_STATUS
364 AcpiNsRepairObject (
365 ACPI_PREDEFINED_DATA *Data,
366 UINT32 ExpectedBtypes,
367 UINT32 PackageIndex,
368 ACPI_OPERAND_OBJECT **ReturnObjectPtr);
369
370 ACPI_STATUS
371 AcpiNsRepairPackageList (
372 ACPI_PREDEFINED_DATA *Data,
373 ACPI_OPERAND_OBJECT **ObjDescPtr);
374
375 ACPI_STATUS
376 AcpiNsRepairNullElement (
377 ACPI_PREDEFINED_DATA *Data,
378 UINT32 ExpectedBtypes,
379 UINT32 PackageIndex,
380 ACPI_OPERAND_OBJECT **ReturnObjectPtr);
381
382 void
383 AcpiNsRemoveNullElements (
384 ACPI_PREDEFINED_DATA *Data,
385 UINT8 PackageType,
386 ACPI_OPERAND_OBJECT *ObjDesc);
387
388
389 /*
390 * nsrepair2 - Return object repair for specific
391 * predefined methods/objects
392 */
393 ACPI_STATUS
394 AcpiNsComplexRepairs (
395 ACPI_PREDEFINED_DATA *Data,
396 ACPI_NAMESPACE_NODE *Node,
397 ACPI_STATUS ValidateStatus,
398 ACPI_OPERAND_OBJECT **ReturnObjectPtr);
399
400
401 /*
402 * nssearch - Namespace searching and entry
403 */
404 ACPI_STATUS
405 AcpiNsSearchAndEnter (
406 UINT32 EntryName,
407 ACPI_WALK_STATE *WalkState,
408 ACPI_NAMESPACE_NODE *Node,
409 ACPI_INTERPRETER_MODE InterpreterMode,
410 ACPI_OBJECT_TYPE Type,
411 UINT32 Flags,
412 ACPI_NAMESPACE_NODE **RetNode);
413
414 ACPI_STATUS
415 AcpiNsSearchOneScope (
416 UINT32 EntryName,
417 ACPI_NAMESPACE_NODE *Node,
418 ACPI_OBJECT_TYPE Type,
419 ACPI_NAMESPACE_NODE **RetNode);
420
421 void
422 AcpiNsInstallNode (
423 ACPI_WALK_STATE *WalkState,
424 ACPI_NAMESPACE_NODE *ParentNode,
425 ACPI_NAMESPACE_NODE *Node,
426 ACPI_OBJECT_TYPE Type);
427
428
429 /*
430 * nsutils - Utility functions
431 */
432 BOOLEAN
433 AcpiNsValidRootPrefix (
434 char Prefix);
435
436 ACPI_OBJECT_TYPE
437 AcpiNsGetType (
438 ACPI_NAMESPACE_NODE *Node);
439
440 UINT32
441 AcpiNsLocal (
442 ACPI_OBJECT_TYPE Type);
443
444 void
445 AcpiNsPrintNodePathname (
446 ACPI_NAMESPACE_NODE *Node,
447 const char *Msg);
448
449 ACPI_STATUS
450 AcpiNsBuildInternalName (
451 ACPI_NAMESTRING_INFO *Info);
452
453 void
454 AcpiNsGetInternalNameLength (
455 ACPI_NAMESTRING_INFO *Info);
456
457 ACPI_STATUS
458 AcpiNsInternalizeName (
459 const char *DottedName,
460 char **ConvertedName);
461
462 ACPI_STATUS
463 AcpiNsExternalizeName (
464 UINT32 InternalNameLength,
465 const char *InternalName,
466 UINT32 *ConvertedNameLength,
467 char **ConvertedName);
468
469 ACPI_NAMESPACE_NODE *
470 AcpiNsValidateHandle (
471 ACPI_HANDLE Handle);
472
473 void
474 AcpiNsTerminate (
475 void);
476
477 #endif /* __ACNAMESP_H__ */
478