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