acnamesp.h revision 1.7 1 /******************************************************************************
2 *
3 * Name: acnamesp.h - Namespace subcomponent prototypes and defines
4 *
5 *****************************************************************************/
6
7 /*
8 * Copyright (C) 2000 - 2015, 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 #define ACPI_NS_OVERRIDE_IF_FOUND 0x80
71
72 /* Flags for AcpiNsWalkNamespace */
73
74 #define ACPI_NS_WALK_NO_UNLOCK 0
75 #define ACPI_NS_WALK_UNLOCK 0x01
76 #define ACPI_NS_WALK_TEMP_NODES 0x02
77
78 /* Object is not a package element */
79
80 #define ACPI_NOT_PACKAGE_ELEMENT ACPI_UINT32_MAX
81
82 /* Always emit warning message, not dependent on node flags */
83
84 #define ACPI_WARN_ALWAYS 0
85
86
87 /*
88 * nsinit - Namespace initialization
89 */
90 ACPI_STATUS
91 AcpiNsInitializeObjects (
92 void);
93
94 ACPI_STATUS
95 AcpiNsInitializeDevices (
96 void);
97
98
99 /*
100 * nsload - Namespace loading
101 */
102 ACPI_STATUS
103 AcpiNsLoadNamespace (
104 void);
105
106 ACPI_STATUS
107 AcpiNsLoadTable (
108 UINT32 TableIndex,
109 ACPI_NAMESPACE_NODE *Node);
110
111
112 /*
113 * nswalk - walk the namespace
114 */
115 ACPI_STATUS
116 AcpiNsWalkNamespace (
117 ACPI_OBJECT_TYPE Type,
118 ACPI_HANDLE StartObject,
119 UINT32 MaxDepth,
120 UINT32 Flags,
121 ACPI_WALK_CALLBACK DescendingCallback,
122 ACPI_WALK_CALLBACK AscendingCallback,
123 void *Context,
124 void **ReturnValue);
125
126 ACPI_NAMESPACE_NODE *
127 AcpiNsGetNextNode (
128 ACPI_NAMESPACE_NODE *Parent,
129 ACPI_NAMESPACE_NODE *Child);
130
131 ACPI_NAMESPACE_NODE *
132 AcpiNsGetNextNodeTyped (
133 ACPI_OBJECT_TYPE Type,
134 ACPI_NAMESPACE_NODE *Parent,
135 ACPI_NAMESPACE_NODE *Child);
136
137 /*
138 * nsparse - table parsing
139 */
140 ACPI_STATUS
141 AcpiNsParseTable (
142 UINT32 TableIndex,
143 ACPI_NAMESPACE_NODE *StartNode);
144
145 ACPI_STATUS
146 AcpiNsOneCompleteParse (
147 UINT32 PassNumber,
148 UINT32 TableIndex,
149 ACPI_NAMESPACE_NODE *StartNode);
150
151
152 /*
153 * nsaccess - Top-level namespace access
154 */
155 ACPI_STATUS
156 AcpiNsRootInitialize (
157 void);
158
159 ACPI_STATUS
160 AcpiNsLookup (
161 ACPI_GENERIC_STATE *ScopeInfo,
162 char *Name,
163 ACPI_OBJECT_TYPE Type,
164 ACPI_INTERPRETER_MODE InterpreterMode,
165 UINT32 Flags,
166 ACPI_WALK_STATE *WalkState,
167 ACPI_NAMESPACE_NODE **RetNode);
168
169
170 /*
171 * nsalloc - Named object allocation/deallocation
172 */
173 ACPI_NAMESPACE_NODE *
174 AcpiNsCreateNode (
175 UINT32 Name);
176
177 void
178 AcpiNsDeleteNode (
179 ACPI_NAMESPACE_NODE *Node);
180
181 void
182 AcpiNsRemoveNode (
183 ACPI_NAMESPACE_NODE *Node);
184
185 void
186 AcpiNsDeleteNamespaceSubtree (
187 ACPI_NAMESPACE_NODE *ParentHandle);
188
189 void
190 AcpiNsDeleteNamespaceByOwner (
191 ACPI_OWNER_ID OwnerId);
192
193 void
194 AcpiNsDetachObject (
195 ACPI_NAMESPACE_NODE *Node);
196
197 void
198 AcpiNsDeleteChildren (
199 ACPI_NAMESPACE_NODE *Parent);
200
201 int
202 AcpiNsCompareNames (
203 char *Name1,
204 char *Name2);
205
206
207 /*
208 * nsconvert - Dynamic object conversion routines
209 */
210 ACPI_STATUS
211 AcpiNsConvertToInteger (
212 ACPI_OPERAND_OBJECT *OriginalObject,
213 ACPI_OPERAND_OBJECT **ReturnObject);
214
215 ACPI_STATUS
216 AcpiNsConvertToString (
217 ACPI_OPERAND_OBJECT *OriginalObject,
218 ACPI_OPERAND_OBJECT **ReturnObject);
219
220 ACPI_STATUS
221 AcpiNsConvertToBuffer (
222 ACPI_OPERAND_OBJECT *OriginalObject,
223 ACPI_OPERAND_OBJECT **ReturnObject);
224
225 ACPI_STATUS
226 AcpiNsConvertToUnicode (
227 ACPI_OPERAND_OBJECT *OriginalObject,
228 ACPI_OPERAND_OBJECT **ReturnObject);
229
230 ACPI_STATUS
231 AcpiNsConvertToResource (
232 ACPI_OPERAND_OBJECT *OriginalObject,
233 ACPI_OPERAND_OBJECT **ReturnObject);
234
235
236 /*
237 * nsdump - Namespace dump/print utilities
238 */
239 void
240 AcpiNsDumpTables (
241 ACPI_HANDLE SearchBase,
242 UINT32 MaxDepth);
243
244 void
245 AcpiNsDumpEntry (
246 ACPI_HANDLE Handle,
247 UINT32 DebugLevel);
248
249 void
250 AcpiNsDumpPathname (
251 ACPI_HANDLE Handle,
252 const char *Msg,
253 UINT32 Level,
254 UINT32 Component);
255
256 void
257 AcpiNsPrintPathname (
258 UINT32 NumSegments,
259 char *Pathname);
260
261 ACPI_STATUS
262 AcpiNsDumpOneObject (
263 ACPI_HANDLE ObjHandle,
264 UINT32 Level,
265 void *Context,
266 void **ReturnValue);
267
268 void
269 AcpiNsDumpObjects (
270 ACPI_OBJECT_TYPE Type,
271 UINT8 DisplayType,
272 UINT32 MaxDepth,
273 ACPI_OWNER_ID OwnerId,
274 ACPI_HANDLE StartHandle);
275
276 void
277 AcpiNsDumpObjectPaths (
278 ACPI_OBJECT_TYPE Type,
279 UINT8 DisplayType,
280 UINT32 MaxDepth,
281 ACPI_OWNER_ID OwnerId,
282 ACPI_HANDLE StartHandle);
283
284
285 /*
286 * nseval - Namespace evaluation functions
287 */
288 ACPI_STATUS
289 AcpiNsEvaluate (
290 ACPI_EVALUATE_INFO *Info);
291
292 void
293 AcpiNsExecModuleCodeList (
294 void);
295
296
297 /*
298 * nsarguments - Argument count/type checking for predefined/reserved names
299 */
300 void
301 AcpiNsCheckArgumentCount (
302 char *Pathname,
303 ACPI_NAMESPACE_NODE *Node,
304 UINT32 UserParamCount,
305 const ACPI_PREDEFINED_INFO *Info);
306
307 void
308 AcpiNsCheckAcpiCompliance (
309 char *Pathname,
310 ACPI_NAMESPACE_NODE *Node,
311 const ACPI_PREDEFINED_INFO *Predefined);
312
313 void
314 AcpiNsCheckArgumentTypes (
315 ACPI_EVALUATE_INFO *Info);
316
317
318 /*
319 * nspredef - Return value checking for predefined/reserved names
320 */
321 ACPI_STATUS
322 AcpiNsCheckReturnValue (
323 ACPI_NAMESPACE_NODE *Node,
324 ACPI_EVALUATE_INFO *Info,
325 UINT32 UserParamCount,
326 ACPI_STATUS ReturnStatus,
327 ACPI_OPERAND_OBJECT **ReturnObject);
328
329 ACPI_STATUS
330 AcpiNsCheckObjectType (
331 ACPI_EVALUATE_INFO *Info,
332 ACPI_OPERAND_OBJECT **ReturnObjectPtr,
333 UINT32 ExpectedBtypes,
334 UINT32 PackageIndex);
335
336
337 /*
338 * nsprepkg - Validation of predefined name packages
339 */
340 ACPI_STATUS
341 AcpiNsCheckPackage (
342 ACPI_EVALUATE_INFO *Info,
343 ACPI_OPERAND_OBJECT **ReturnObjectPtr);
344
345
346 /*
347 * nsnames - Name and Scope manipulation
348 */
349 UINT32
350 AcpiNsOpensScope (
351 ACPI_OBJECT_TYPE Type);
352
353 char *
354 AcpiNsGetExternalPathname (
355 ACPI_NAMESPACE_NODE *Node);
356
357 UINT32
358 AcpiNsBuildNormalizedPath (
359 ACPI_NAMESPACE_NODE *Node,
360 char *FullPath,
361 UINT32 PathSize,
362 BOOLEAN NoTrailing);
363
364 char *
365 AcpiNsGetNormalizedPathname (
366 ACPI_NAMESPACE_NODE *Node,
367 BOOLEAN NoTrailing);
368
369 char *
370 AcpiNsNameOfCurrentScope (
371 ACPI_WALK_STATE *WalkState);
372
373 ACPI_STATUS
374 AcpiNsHandleToPathname (
375 ACPI_HANDLE TargetHandle,
376 ACPI_BUFFER *Buffer,
377 BOOLEAN NoTrailing);
378
379 BOOLEAN
380 AcpiNsPatternMatch (
381 ACPI_NAMESPACE_NODE *ObjNode,
382 char *SearchFor);
383
384 ACPI_STATUS
385 AcpiNsGetNode (
386 ACPI_NAMESPACE_NODE *PrefixNode,
387 const char *ExternalPathname,
388 UINT32 Flags,
389 ACPI_NAMESPACE_NODE **OutNode);
390
391 ACPI_SIZE
392 AcpiNsGetPathnameLength (
393 ACPI_NAMESPACE_NODE *Node);
394
395
396 /*
397 * nsobject - Object management for namespace nodes
398 */
399 ACPI_STATUS
400 AcpiNsAttachObject (
401 ACPI_NAMESPACE_NODE *Node,
402 ACPI_OPERAND_OBJECT *Object,
403 ACPI_OBJECT_TYPE Type);
404
405 ACPI_OPERAND_OBJECT *
406 AcpiNsGetAttachedObject (
407 ACPI_NAMESPACE_NODE *Node);
408
409 ACPI_OPERAND_OBJECT *
410 AcpiNsGetSecondaryObject (
411 ACPI_OPERAND_OBJECT *ObjDesc);
412
413 ACPI_STATUS
414 AcpiNsAttachData (
415 ACPI_NAMESPACE_NODE *Node,
416 ACPI_OBJECT_HANDLER Handler,
417 void *Data);
418
419 ACPI_STATUS
420 AcpiNsDetachData (
421 ACPI_NAMESPACE_NODE *Node,
422 ACPI_OBJECT_HANDLER Handler);
423
424 ACPI_STATUS
425 AcpiNsGetAttachedData (
426 ACPI_NAMESPACE_NODE *Node,
427 ACPI_OBJECT_HANDLER Handler,
428 void **Data);
429
430
431 /*
432 * nsrepair - General return object repair for all
433 * predefined methods/objects
434 */
435 ACPI_STATUS
436 AcpiNsSimpleRepair (
437 ACPI_EVALUATE_INFO *Info,
438 UINT32 ExpectedBtypes,
439 UINT32 PackageIndex,
440 ACPI_OPERAND_OBJECT **ReturnObjectPtr);
441
442 ACPI_STATUS
443 AcpiNsWrapWithPackage (
444 ACPI_EVALUATE_INFO *Info,
445 ACPI_OPERAND_OBJECT *OriginalObject,
446 ACPI_OPERAND_OBJECT **ObjDescPtr);
447
448 ACPI_STATUS
449 AcpiNsRepairNullElement (
450 ACPI_EVALUATE_INFO *Info,
451 UINT32 ExpectedBtypes,
452 UINT32 PackageIndex,
453 ACPI_OPERAND_OBJECT **ReturnObjectPtr);
454
455 void
456 AcpiNsRemoveNullElements (
457 ACPI_EVALUATE_INFO *Info,
458 UINT8 PackageType,
459 ACPI_OPERAND_OBJECT *ObjDesc);
460
461
462 /*
463 * nsrepair2 - Return object repair for specific
464 * predefined methods/objects
465 */
466 ACPI_STATUS
467 AcpiNsComplexRepairs (
468 ACPI_EVALUATE_INFO *Info,
469 ACPI_NAMESPACE_NODE *Node,
470 ACPI_STATUS ValidateStatus,
471 ACPI_OPERAND_OBJECT **ReturnObjectPtr);
472
473
474 /*
475 * nssearch - Namespace searching and entry
476 */
477 ACPI_STATUS
478 AcpiNsSearchAndEnter (
479 UINT32 EntryName,
480 ACPI_WALK_STATE *WalkState,
481 ACPI_NAMESPACE_NODE *Node,
482 ACPI_INTERPRETER_MODE InterpreterMode,
483 ACPI_OBJECT_TYPE Type,
484 UINT32 Flags,
485 ACPI_NAMESPACE_NODE **RetNode);
486
487 ACPI_STATUS
488 AcpiNsSearchOneScope (
489 UINT32 EntryName,
490 ACPI_NAMESPACE_NODE *Node,
491 ACPI_OBJECT_TYPE Type,
492 ACPI_NAMESPACE_NODE **RetNode);
493
494 void
495 AcpiNsInstallNode (
496 ACPI_WALK_STATE *WalkState,
497 ACPI_NAMESPACE_NODE *ParentNode,
498 ACPI_NAMESPACE_NODE *Node,
499 ACPI_OBJECT_TYPE Type);
500
501
502 /*
503 * nsutils - Utility functions
504 */
505 ACPI_OBJECT_TYPE
506 AcpiNsGetType (
507 ACPI_NAMESPACE_NODE *Node);
508
509 UINT32
510 AcpiNsLocal (
511 ACPI_OBJECT_TYPE Type);
512
513 void
514 AcpiNsPrintNodePathname (
515 ACPI_NAMESPACE_NODE *Node,
516 const char *Msg);
517
518 ACPI_STATUS
519 AcpiNsBuildInternalName (
520 ACPI_NAMESTRING_INFO *Info);
521
522 void
523 AcpiNsGetInternalNameLength (
524 ACPI_NAMESTRING_INFO *Info);
525
526 ACPI_STATUS
527 AcpiNsInternalizeName (
528 const char *DottedName,
529 char **ConvertedName);
530
531 ACPI_STATUS
532 AcpiNsExternalizeName (
533 UINT32 InternalNameLength,
534 const char *InternalName,
535 UINT32 *ConvertedNameLength,
536 char **ConvertedName);
537
538 ACPI_NAMESPACE_NODE *
539 AcpiNsValidateHandle (
540 ACPI_HANDLE Handle);
541
542 void
543 AcpiNsTerminate (
544 void);
545
546 #endif /* __ACNAMESP_H__ */
547