a9c7d2212f458cc1eb23ac762172457a4fc9d3dd
[dragonfly.git] / sys / contrib / dev / acpica / source / include / acnamesp.h
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__ */