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