xref: /dflybsd-src/sys/contrib/dev/acpica/source/include/acutils.h (revision 2ffe9f16c64a590bc6653e0284f95075c1319abb)
1 /******************************************************************************
2  *
3  * Name: acutils.h -- prototypes for the common (subsystem-wide) procedures
4  *
5  *****************************************************************************/
6 
7 /*
8  * Copyright (C) 2000 - 2016, 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 _ACUTILS_H
45 #define _ACUTILS_H
46 
47 
48 extern const UINT8                      AcpiGbl_ResourceAmlSizes[];
49 extern const UINT8                      AcpiGbl_ResourceAmlSerialBusSizes[];
50 
51 /* Strings used by the disassembler and debugger resource dump routines */
52 
53 #if defined(ACPI_DEBUG_OUTPUT) || defined (ACPI_DISASSEMBLER) || defined (ACPI_DEBUGGER)
54 
55 extern const char                       *AcpiGbl_BmDecode[];
56 extern const char                       *AcpiGbl_ConfigDecode[];
57 extern const char                       *AcpiGbl_ConsumeDecode[];
58 extern const char                       *AcpiGbl_DecDecode[];
59 extern const char                       *AcpiGbl_HeDecode[];
60 extern const char                       *AcpiGbl_IoDecode[];
61 extern const char                       *AcpiGbl_LlDecode[];
62 extern const char                       *AcpiGbl_MaxDecode[];
63 extern const char                       *AcpiGbl_MemDecode[];
64 extern const char                       *AcpiGbl_MinDecode[];
65 extern const char                       *AcpiGbl_MtpDecode[];
66 extern const char                       *AcpiGbl_RngDecode[];
67 extern const char                       *AcpiGbl_RwDecode[];
68 extern const char                       *AcpiGbl_ShrDecode[];
69 extern const char                       *AcpiGbl_SizDecode[];
70 extern const char                       *AcpiGbl_TrsDecode[];
71 extern const char                       *AcpiGbl_TtpDecode[];
72 extern const char                       *AcpiGbl_TypDecode[];
73 extern const char                       *AcpiGbl_PpcDecode[];
74 extern const char                       *AcpiGbl_IorDecode[];
75 extern const char                       *AcpiGbl_DtsDecode[];
76 extern const char                       *AcpiGbl_CtDecode[];
77 extern const char                       *AcpiGbl_SbtDecode[];
78 extern const char                       *AcpiGbl_AmDecode[];
79 extern const char                       *AcpiGbl_SmDecode[];
80 extern const char                       *AcpiGbl_WmDecode[];
81 extern const char                       *AcpiGbl_CphDecode[];
82 extern const char                       *AcpiGbl_CpoDecode[];
83 extern const char                       *AcpiGbl_DpDecode[];
84 extern const char                       *AcpiGbl_EdDecode[];
85 extern const char                       *AcpiGbl_BpbDecode[];
86 extern const char                       *AcpiGbl_SbDecode[];
87 extern const char                       *AcpiGbl_FcDecode[];
88 extern const char                       *AcpiGbl_PtDecode[];
89 #endif
90 
91 /*
92  * For the iASL compiler case, the output is redirected to stderr so that
93  * any of the various ACPI errors and warnings do not appear in the output
94  * files, for either the compiler or disassembler portions of the tool.
95  */
96 #ifdef ACPI_ASL_COMPILER
97 
98 #include <stdio.h>
99 
100 #define ACPI_MSG_REDIRECT_BEGIN \
101     FILE                    *OutputFile = AcpiGbl_OutputFile; \
102     AcpiOsRedirectOutput (stderr);
103 
104 #define ACPI_MSG_REDIRECT_END \
105     AcpiOsRedirectOutput (OutputFile);
106 
107 #else
108 /*
109  * non-iASL case - no redirection, nothing to do
110  */
111 #define ACPI_MSG_REDIRECT_BEGIN
112 #define ACPI_MSG_REDIRECT_END
113 #endif
114 
115 /*
116  * Common error message prefixes
117  */
118 #define ACPI_MSG_ERROR          "ACPI Error: "
119 #define ACPI_MSG_EXCEPTION      "ACPI Exception: "
120 #define ACPI_MSG_WARNING        "ACPI Warning: "
121 #define ACPI_MSG_INFO           "ACPI: "
122 
123 #define ACPI_MSG_BIOS_ERROR     "ACPI BIOS Error (bug): "
124 #define ACPI_MSG_BIOS_WARNING   "ACPI BIOS Warning (bug): "
125 
126 /*
127  * Common message suffix
128  */
129 #define ACPI_MSG_SUFFIX \
130     AcpiOsPrintf (" (%8.8X/%s-%u)\n", ACPI_CA_VERSION, ModuleName, LineNumber)
131 
132 
133 /* Types for Resource descriptor entries */
134 
135 #define ACPI_INVALID_RESOURCE           0
136 #define ACPI_FIXED_LENGTH               1
137 #define ACPI_VARIABLE_LENGTH            2
138 #define ACPI_SMALL_VARIABLE_LENGTH      3
139 
140 typedef
141 ACPI_STATUS (*ACPI_WALK_AML_CALLBACK) (
142     UINT8                   *Aml,
143     UINT32                  Length,
144     UINT32                  Offset,
145     UINT8                   ResourceIndex,
146     void                    **Context);
147 
148 typedef
149 ACPI_STATUS (*ACPI_PKG_CALLBACK) (
150     UINT8                   ObjectType,
151     ACPI_OPERAND_OBJECT     *SourceObject,
152     ACPI_GENERIC_STATE      *State,
153     void                    *Context);
154 
155 typedef struct acpi_pkg_info
156 {
157     UINT8                   *FreeSpace;
158     ACPI_SIZE               Length;
159     UINT32                  ObjectSpace;
160     UINT32                  NumPackages;
161 
162 } ACPI_PKG_INFO;
163 
164 /* Object reference counts */
165 
166 #define REF_INCREMENT       (UINT16) 0
167 #define REF_DECREMENT       (UINT16) 1
168 
169 /* AcpiUtDumpBuffer */
170 
171 #define DB_BYTE_DISPLAY     1
172 #define DB_WORD_DISPLAY     2
173 #define DB_DWORD_DISPLAY    4
174 #define DB_QWORD_DISPLAY    8
175 
176 
177 /*
178  * utnonansi - Non-ANSI C library functions
179  */
180 void
181 AcpiUtStrupr (
182     char                    *SrcString);
183 
184 void
185 AcpiUtStrlwr (
186     char                    *SrcString);
187 
188 int
189 AcpiUtStricmp (
190     char                    *String1,
191     char                    *String2);
192 
193 ACPI_STATUS
194 AcpiUtStrtoul64 (
195     char                    *String,
196     UINT32                  Base,
197     UINT32                  MaxIntegerByteWidth,
198     UINT64                  *RetInteger);
199 
200 /* Values for MaxIntegerByteWidth above */
201 
202 #define ACPI_MAX32_BYTE_WIDTH       4
203 #define ACPI_MAX64_BYTE_WIDTH       8
204 
205 
206 /*
207  * utglobal - Global data structures and procedures
208  */
209 ACPI_STATUS
210 AcpiUtInitGlobals (
211     void);
212 
213 #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
214 
215 const char *
216 AcpiUtGetMutexName (
217     UINT32                  MutexId);
218 
219 const char *
220 AcpiUtGetNotifyName (
221     UINT32                  NotifyValue,
222     ACPI_OBJECT_TYPE        Type);
223 #endif
224 
225 const char *
226 AcpiUtGetTypeName (
227     ACPI_OBJECT_TYPE        Type);
228 
229 const char *
230 AcpiUtGetNodeName (
231     void                    *Object);
232 
233 const char *
234 AcpiUtGetDescriptorName (
235     void                    *Object);
236 
237 const char *
238 AcpiUtGetReferenceName (
239     ACPI_OPERAND_OBJECT     *Object);
240 
241 const char *
242 AcpiUtGetObjectTypeName (
243     ACPI_OPERAND_OBJECT     *ObjDesc);
244 
245 const char *
246 AcpiUtGetRegionName (
247     UINT8                   SpaceId);
248 
249 const char *
250 AcpiUtGetEventName (
251     UINT32                  EventId);
252 
253 char
254 AcpiUtHexToAsciiChar (
255     UINT64                  Integer,
256     UINT32                  Position);
257 
258 UINT8
259 AcpiUtAsciiCharToHex (
260     int                     HexChar);
261 
262 BOOLEAN
263 AcpiUtValidObjectType (
264     ACPI_OBJECT_TYPE        Type);
265 
266 
267 /*
268  * utinit - miscellaneous initialization and shutdown
269  */
270 ACPI_STATUS
271 AcpiUtHardwareInitialize (
272     void);
273 
274 void
275 AcpiUtSubsystemShutdown (
276     void);
277 
278 
279 /*
280  * utcopy - Object construction and conversion interfaces
281  */
282 ACPI_STATUS
283 AcpiUtBuildSimpleObject(
284     ACPI_OPERAND_OBJECT     *Obj,
285     ACPI_OBJECT             *UserObj,
286     UINT8                   *DataSpace,
287     UINT32                  *BufferSpaceUsed);
288 
289 ACPI_STATUS
290 AcpiUtBuildPackageObject (
291     ACPI_OPERAND_OBJECT     *Obj,
292     UINT8                   *Buffer,
293     UINT32                  *SpaceUsed);
294 
295 ACPI_STATUS
296 AcpiUtCopyIobjectToEobject (
297     ACPI_OPERAND_OBJECT     *Obj,
298     ACPI_BUFFER             *RetBuffer);
299 
300 ACPI_STATUS
301 AcpiUtCopyEobjectToIobject (
302     ACPI_OBJECT             *Obj,
303     ACPI_OPERAND_OBJECT     **InternalObj);
304 
305 ACPI_STATUS
306 AcpiUtCopyISimpleToIsimple (
307     ACPI_OPERAND_OBJECT     *SourceObj,
308     ACPI_OPERAND_OBJECT     *DestObj);
309 
310 ACPI_STATUS
311 AcpiUtCopyIobjectToIobject (
312     ACPI_OPERAND_OBJECT     *SourceDesc,
313     ACPI_OPERAND_OBJECT     **DestDesc,
314     ACPI_WALK_STATE         *WalkState);
315 
316 
317 /*
318  * utcreate - Object creation
319  */
320 ACPI_STATUS
321 AcpiUtUpdateObjectReference (
322     ACPI_OPERAND_OBJECT     *Object,
323     UINT16                  Action);
324 
325 
326 /*
327  * utdebug - Debug interfaces
328  */
329 void
330 AcpiUtInitStackPtrTrace (
331     void);
332 
333 void
334 AcpiUtTrackStackPtr (
335     void);
336 
337 void
338 AcpiUtTrace (
339     UINT32                  LineNumber,
340     const char              *FunctionName,
341     const char              *ModuleName,
342     UINT32                  ComponentId);
343 
344 void
345 AcpiUtTracePtr (
346     UINT32                  LineNumber,
347     const char              *FunctionName,
348     const char              *ModuleName,
349     UINT32                  ComponentId,
350     const void              *Pointer);
351 
352 void
353 AcpiUtTraceU32 (
354     UINT32                  LineNumber,
355     const char              *FunctionName,
356     const char              *ModuleName,
357     UINT32                  ComponentId,
358     UINT32                  Integer);
359 
360 void
361 AcpiUtTraceStr (
362     UINT32                  LineNumber,
363     const char              *FunctionName,
364     const char              *ModuleName,
365     UINT32                  ComponentId,
366     const char              *String);
367 
368 void
369 AcpiUtExit (
370     UINT32                  LineNumber,
371     const char              *FunctionName,
372     const char              *ModuleName,
373     UINT32                  ComponentId);
374 
375 void
376 AcpiUtStatusExit (
377     UINT32                  LineNumber,
378     const char              *FunctionName,
379     const char              *ModuleName,
380     UINT32                  ComponentId,
381     ACPI_STATUS             Status);
382 
383 void
384 AcpiUtValueExit (
385     UINT32                  LineNumber,
386     const char              *FunctionName,
387     const char              *ModuleName,
388     UINT32                  ComponentId,
389     UINT64                  Value);
390 
391 void
392 AcpiUtPtrExit (
393     UINT32                  LineNumber,
394     const char              *FunctionName,
395     const char              *ModuleName,
396     UINT32                  ComponentId,
397     UINT8                   *Ptr);
398 
399 void
400 AcpiUtDebugDumpBuffer (
401     UINT8                   *Buffer,
402     UINT32                  Count,
403     UINT32                  Display,
404     UINT32                  ComponentId);
405 
406 void
407 AcpiUtDumpBuffer (
408     UINT8                   *Buffer,
409     UINT32                  Count,
410     UINT32                  Display,
411     UINT32                  Offset);
412 
413 #ifdef ACPI_APPLICATION
414 void
415 AcpiUtDumpBufferToFile (
416     ACPI_FILE               File,
417     UINT8                   *Buffer,
418     UINT32                  Count,
419     UINT32                  Display,
420     UINT32                  BaseOffset);
421 #endif
422 
423 void
424 AcpiUtReportError (
425     char                    *ModuleName,
426     UINT32                  LineNumber);
427 
428 void
429 AcpiUtReportInfo (
430     char                    *ModuleName,
431     UINT32                  LineNumber);
432 
433 void
434 AcpiUtReportWarning (
435     char                    *ModuleName,
436     UINT32                  LineNumber);
437 
438 
439 /*
440  * utdelete - Object deletion and reference counts
441  */
442 void
443 AcpiUtAddReference (
444     ACPI_OPERAND_OBJECT     *Object);
445 
446 void
447 AcpiUtRemoveReference (
448     ACPI_OPERAND_OBJECT     *Object);
449 
450 void
451 AcpiUtDeleteInternalPackageObject (
452     ACPI_OPERAND_OBJECT     *Object);
453 
454 void
455 AcpiUtDeleteInternalSimpleObject (
456     ACPI_OPERAND_OBJECT     *Object);
457 
458 void
459 AcpiUtDeleteInternalObjectList (
460     ACPI_OPERAND_OBJECT     **ObjList);
461 
462 
463 /*
464  * uteval - object evaluation
465  */
466 ACPI_STATUS
467 AcpiUtEvaluateObject (
468     ACPI_NAMESPACE_NODE     *PrefixNode,
469     const char              *Path,
470     UINT32                  ExpectedReturnBtypes,
471     ACPI_OPERAND_OBJECT     **ReturnDesc);
472 
473 ACPI_STATUS
474 AcpiUtEvaluateNumericObject (
475     const char              *ObjectName,
476     ACPI_NAMESPACE_NODE     *DeviceNode,
477     UINT64                  *Value);
478 
479 ACPI_STATUS
480 AcpiUtExecute_STA (
481     ACPI_NAMESPACE_NODE     *DeviceNode,
482     UINT32                  *StatusFlags);
483 
484 ACPI_STATUS
485 AcpiUtExecutePowerMethods (
486     ACPI_NAMESPACE_NODE     *DeviceNode,
487     const char              **MethodNames,
488     UINT8                   MethodCount,
489     UINT8                   *OutValues);
490 
491 
492 /*
493  * utids - device ID support
494  */
495 ACPI_STATUS
496 AcpiUtExecute_HID (
497     ACPI_NAMESPACE_NODE     *DeviceNode,
498     ACPI_PNP_DEVICE_ID      **ReturnId);
499 
500 ACPI_STATUS
501 AcpiUtExecute_UID (
502     ACPI_NAMESPACE_NODE     *DeviceNode,
503     ACPI_PNP_DEVICE_ID      **ReturnId);
504 
505 ACPI_STATUS
506 AcpiUtExecute_CID (
507     ACPI_NAMESPACE_NODE     *DeviceNode,
508     ACPI_PNP_DEVICE_ID_LIST **ReturnCidList);
509 
510 ACPI_STATUS
511 AcpiUtExecute_CLS (
512     ACPI_NAMESPACE_NODE     *DeviceNode,
513     ACPI_PNP_DEVICE_ID      **ReturnId);
514 
515 
516 /*
517  * utlock - reader/writer locks
518  */
519 ACPI_STATUS
520 AcpiUtCreateRwLock (
521     ACPI_RW_LOCK            *Lock);
522 
523 void
524 AcpiUtDeleteRwLock (
525     ACPI_RW_LOCK            *Lock);
526 
527 ACPI_STATUS
528 AcpiUtAcquireReadLock (
529     ACPI_RW_LOCK            *Lock);
530 
531 ACPI_STATUS
532 AcpiUtReleaseReadLock (
533     ACPI_RW_LOCK            *Lock);
534 
535 ACPI_STATUS
536 AcpiUtAcquireWriteLock (
537     ACPI_RW_LOCK            *Lock);
538 
539 void
540 AcpiUtReleaseWriteLock (
541     ACPI_RW_LOCK            *Lock);
542 
543 
544 /*
545  * utobject - internal object create/delete/cache routines
546  */
547 ACPI_OPERAND_OBJECT  *
548 AcpiUtCreateInternalObjectDbg (
549     const char              *ModuleName,
550     UINT32                  LineNumber,
551     UINT32                  ComponentId,
552     ACPI_OBJECT_TYPE        Type);
553 
554 void *
555 AcpiUtAllocateObjectDescDbg (
556     const char              *ModuleName,
557     UINT32                  LineNumber,
558     UINT32                  ComponentId);
559 
560 #define AcpiUtCreateInternalObject(t)   AcpiUtCreateInternalObjectDbg (_AcpiModuleName,__LINE__,_COMPONENT,t)
561 #define AcpiUtAllocateObjectDesc()      AcpiUtAllocateObjectDescDbg (_AcpiModuleName,__LINE__,_COMPONENT)
562 
563 void
564 AcpiUtDeleteObjectDesc (
565     ACPI_OPERAND_OBJECT     *Object);
566 
567 BOOLEAN
568 AcpiUtValidInternalObject (
569     void                    *Object);
570 
571 ACPI_OPERAND_OBJECT *
572 AcpiUtCreatePackageObject (
573     UINT32                  Count);
574 
575 ACPI_OPERAND_OBJECT *
576 AcpiUtCreateIntegerObject (
577     UINT64                  Value);
578 
579 ACPI_OPERAND_OBJECT *
580 AcpiUtCreateBufferObject (
581     ACPI_SIZE               BufferSize);
582 
583 ACPI_OPERAND_OBJECT *
584 AcpiUtCreateStringObject (
585     ACPI_SIZE               StringSize);
586 
587 ACPI_STATUS
588 AcpiUtGetObjectSize(
589     ACPI_OPERAND_OBJECT     *Obj,
590     ACPI_SIZE               *ObjLength);
591 
592 
593 /*
594  * utosi - Support for the _OSI predefined control method
595  */
596 ACPI_STATUS
597 AcpiUtInitializeInterfaces (
598     void);
599 
600 ACPI_STATUS
601 AcpiUtInterfaceTerminate (
602     void);
603 
604 ACPI_STATUS
605 AcpiUtInstallInterface (
606     ACPI_STRING             InterfaceName);
607 
608 ACPI_STATUS
609 AcpiUtRemoveInterface (
610     ACPI_STRING             InterfaceName);
611 
612 ACPI_STATUS
613 AcpiUtUpdateInterfaces (
614     UINT8                   Action);
615 
616 ACPI_INTERFACE_INFO *
617 AcpiUtGetInterface (
618     ACPI_STRING             InterfaceName);
619 
620 ACPI_STATUS
621 AcpiUtOsiImplementation (
622     ACPI_WALK_STATE         *WalkState);
623 
624 
625 /*
626  * utpredef - support for predefined names
627  */
628 const ACPI_PREDEFINED_INFO *
629 AcpiUtGetNextPredefinedMethod (
630     const ACPI_PREDEFINED_INFO  *ThisName);
631 
632 const ACPI_PREDEFINED_INFO *
633 AcpiUtMatchPredefinedMethod (
634     char                        *Name);
635 
636 void
637 AcpiUtGetExpectedReturnTypes (
638     char                    *Buffer,
639     UINT32                  ExpectedBtypes);
640 
641 #if (defined ACPI_ASL_COMPILER || defined ACPI_HELP_APP)
642 const ACPI_PREDEFINED_INFO *
643 AcpiUtMatchResourceName (
644     char                        *Name);
645 
646 void
647 AcpiUtDisplayPredefinedMethod (
648     char                        *Buffer,
649     const ACPI_PREDEFINED_INFO  *ThisName,
650     BOOLEAN                     MultiLine);
651 
652 UINT32
653 AcpiUtGetResourceBitWidth (
654     char                    *Buffer,
655     UINT16                  Types);
656 #endif
657 
658 
659 /*
660  * utstate - Generic state creation/cache routines
661  */
662 void
663 AcpiUtPushGenericState (
664     ACPI_GENERIC_STATE      **ListHead,
665     ACPI_GENERIC_STATE      *State);
666 
667 ACPI_GENERIC_STATE *
668 AcpiUtPopGenericState (
669     ACPI_GENERIC_STATE      **ListHead);
670 
671 
672 ACPI_GENERIC_STATE *
673 AcpiUtCreateGenericState (
674     void);
675 
676 ACPI_THREAD_STATE *
677 AcpiUtCreateThreadState (
678     void);
679 
680 ACPI_GENERIC_STATE *
681 AcpiUtCreateUpdateState (
682     ACPI_OPERAND_OBJECT     *Object,
683     UINT16                  Action);
684 
685 ACPI_GENERIC_STATE *
686 AcpiUtCreatePkgState (
687     void                    *InternalObject,
688     void                    *ExternalObject,
689     UINT16                  Index);
690 
691 ACPI_STATUS
692 AcpiUtCreateUpdateStateAndPush (
693     ACPI_OPERAND_OBJECT     *Object,
694     UINT16                  Action,
695     ACPI_GENERIC_STATE      **StateList);
696 
697 ACPI_GENERIC_STATE *
698 AcpiUtCreateControlState (
699     void);
700 
701 void
702 AcpiUtDeleteGenericState (
703     ACPI_GENERIC_STATE      *State);
704 
705 
706 /*
707  * utmath
708  */
709 ACPI_STATUS
710 AcpiUtDivide (
711     UINT64                  InDividend,
712     UINT64                  InDivisor,
713     UINT64                  *OutQuotient,
714     UINT64                  *OutRemainder);
715 
716 ACPI_STATUS
717 AcpiUtShortDivide (
718     UINT64                  InDividend,
719     UINT32                  Divisor,
720     UINT64                  *OutQuotient,
721     UINT32                  *OutRemainder);
722 
723 
724 /*
725  * utmisc
726  */
727 const ACPI_EXCEPTION_INFO *
728 AcpiUtValidateException (
729     ACPI_STATUS             Status);
730 
731 BOOLEAN
732 AcpiUtIsPciRootBridge (
733     char                    *Id);
734 
735 #if (defined ACPI_ASL_COMPILER || defined ACPI_EXEC_APP || defined ACPI_NAMES_APP)
736 BOOLEAN
737 AcpiUtIsAmlTable (
738     ACPI_TABLE_HEADER       *Table);
739 #endif
740 
741 ACPI_STATUS
742 AcpiUtWalkPackageTree (
743     ACPI_OPERAND_OBJECT     *SourceObject,
744     void                    *TargetObject,
745     ACPI_PKG_CALLBACK       WalkCallback,
746     void                    *Context);
747 
748 /* Values for Base above (16=Hex, 10=Decimal) */
749 
750 #define ACPI_ANY_BASE        0
751 
752 
753 UINT32
754 AcpiUtDwordByteSwap (
755     UINT32                  Value);
756 
757 void
758 AcpiUtSetIntegerWidth (
759     UINT8                   Revision);
760 
761 #ifdef ACPI_DEBUG_OUTPUT
762 void
763 AcpiUtDisplayInitPathname (
764     UINT8                   Type,
765     ACPI_NAMESPACE_NODE     *ObjHandle,
766     const char              *Path);
767 #endif
768 
769 
770 /*
771  * utownerid - Support for Table/Method Owner IDs
772  */
773 ACPI_STATUS
774 AcpiUtAllocateOwnerId (
775     ACPI_OWNER_ID           *OwnerId);
776 
777 void
778 AcpiUtReleaseOwnerId (
779     ACPI_OWNER_ID           *OwnerId);
780 
781 
782 /*
783  * utresrc
784  */
785 ACPI_STATUS
786 AcpiUtWalkAmlResources (
787     ACPI_WALK_STATE         *WalkState,
788     UINT8                   *Aml,
789     ACPI_SIZE               AmlLength,
790     ACPI_WALK_AML_CALLBACK  UserFunction,
791     void                    **Context);
792 
793 ACPI_STATUS
794 AcpiUtValidateResource (
795     ACPI_WALK_STATE         *WalkState,
796     void                    *Aml,
797     UINT8                   *ReturnIndex);
798 
799 UINT32
800 AcpiUtGetDescriptorLength (
801     void                    *Aml);
802 
803 UINT16
804 AcpiUtGetResourceLength (
805     void                    *Aml);
806 
807 UINT8
808 AcpiUtGetResourceHeaderLength (
809     void                    *Aml);
810 
811 UINT8
812 AcpiUtGetResourceType (
813     void                    *Aml);
814 
815 ACPI_STATUS
816 AcpiUtGetResourceEndTag (
817     ACPI_OPERAND_OBJECT     *ObjDesc,
818     UINT8                   **EndTag);
819 
820 
821 /*
822  * utstring - String and character utilities
823  */
824 void
825 AcpiUtPrintString (
826     char                    *String,
827     UINT16                  MaxLength);
828 
829 #if defined ACPI_ASL_COMPILER || defined ACPI_EXEC_APP
830 void
831 UtConvertBackslashes (
832     char                    *Pathname);
833 #endif
834 
835 BOOLEAN
836 AcpiUtValidAcpiName (
837     char                    *Name);
838 
839 BOOLEAN
840 AcpiUtValidAcpiChar (
841     char                    Character,
842     UINT32                  Position);
843 
844 void
845 AcpiUtRepairName (
846     char                    *Name);
847 
848 #if defined (ACPI_DEBUGGER) || defined (ACPI_APPLICATION)
849 BOOLEAN
850 AcpiUtSafeStrcpy (
851     char                    *Dest,
852     ACPI_SIZE               DestSize,
853     char                    *Source);
854 
855 BOOLEAN
856 AcpiUtSafeStrcat (
857     char                    *Dest,
858     ACPI_SIZE               DestSize,
859     char                    *Source);
860 
861 BOOLEAN
862 AcpiUtSafeStrncat (
863     char                    *Dest,
864     ACPI_SIZE               DestSize,
865     char                    *Source,
866     ACPI_SIZE               MaxTransferLength);
867 #endif
868 
869 
870 /*
871  * utmutex - mutex support
872  */
873 ACPI_STATUS
874 AcpiUtMutexInitialize (
875     void);
876 
877 void
878 AcpiUtMutexTerminate (
879     void);
880 
881 ACPI_STATUS
882 AcpiUtAcquireMutex (
883     ACPI_MUTEX_HANDLE       MutexId);
884 
885 ACPI_STATUS
886 AcpiUtReleaseMutex (
887     ACPI_MUTEX_HANDLE       MutexId);
888 
889 
890 /*
891  * utalloc - memory allocation and object caching
892  */
893 ACPI_STATUS
894 AcpiUtCreateCaches (
895     void);
896 
897 ACPI_STATUS
898 AcpiUtDeleteCaches (
899     void);
900 
901 ACPI_STATUS
902 AcpiUtValidateBuffer (
903     ACPI_BUFFER             *Buffer);
904 
905 ACPI_STATUS
906 AcpiUtInitializeBuffer (
907     ACPI_BUFFER             *Buffer,
908     ACPI_SIZE               RequiredLength);
909 
910 #ifdef ACPI_DBG_TRACK_ALLOCATIONS
911 void *
912 AcpiUtAllocateAndTrack (
913     ACPI_SIZE               Size,
914     UINT32                  Component,
915     const char              *Module,
916     UINT32                  Line);
917 
918 void *
919 AcpiUtAllocateZeroedAndTrack (
920     ACPI_SIZE               Size,
921     UINT32                  Component,
922     const char              *Module,
923     UINT32                  Line);
924 
925 void
926 AcpiUtFreeAndTrack (
927     void                    *Address,
928     UINT32                  Component,
929     const char              *Module,
930     UINT32                  Line);
931 
932 void
933 AcpiUtDumpAllocationInfo (
934     void);
935 
936 void
937 AcpiUtDumpAllocations (
938     UINT32                  Component,
939     const char              *Module);
940 
941 ACPI_STATUS
942 AcpiUtCreateList (
943     const char              *ListName,
944     UINT16                  ObjectSize,
945     ACPI_MEMORY_LIST        **ReturnCache);
946 
947 #endif /* ACPI_DBG_TRACK_ALLOCATIONS */
948 
949 
950 /*
951  * utaddress - address range check
952  */
953 ACPI_STATUS
954 AcpiUtAddAddressRange (
955     ACPI_ADR_SPACE_TYPE     SpaceId,
956     ACPI_PHYSICAL_ADDRESS   Address,
957     UINT32                  Length,
958     ACPI_NAMESPACE_NODE     *RegionNode);
959 
960 void
961 AcpiUtRemoveAddressRange (
962     ACPI_ADR_SPACE_TYPE     SpaceId,
963     ACPI_NAMESPACE_NODE     *RegionNode);
964 
965 UINT32
966 AcpiUtCheckAddressRange (
967     ACPI_ADR_SPACE_TYPE     SpaceId,
968     ACPI_PHYSICAL_ADDRESS   Address,
969     UINT32                  Length,
970     BOOLEAN                 Warn);
971 
972 void
973 AcpiUtDeleteAddressLists (
974     void);
975 
976 
977 /*
978  * utxferror - various error/warning output functions
979  */
980 void ACPI_INTERNAL_VAR_XFACE
981 AcpiUtPredefinedWarning (
982     const char              *ModuleName,
983     UINT32                  LineNumber,
984     char                    *Pathname,
985     UINT8                   NodeFlags,
986     const char              *Format,
987     ...);
988 
989 void ACPI_INTERNAL_VAR_XFACE
990 AcpiUtPredefinedInfo (
991     const char              *ModuleName,
992     UINT32                  LineNumber,
993     char                    *Pathname,
994     UINT8                   NodeFlags,
995     const char              *Format,
996     ...);
997 
998 void ACPI_INTERNAL_VAR_XFACE
999 AcpiUtPredefinedBiosError (
1000     const char              *ModuleName,
1001     UINT32                  LineNumber,
1002     char                    *Pathname,
1003     UINT8                   NodeFlags,
1004     const char              *Format,
1005     ...);
1006 
1007 void
1008 AcpiUtNamespaceError (
1009     const char              *ModuleName,
1010     UINT32                  LineNumber,
1011     const char              *InternalName,
1012     ACPI_STATUS             LookupStatus);
1013 
1014 void
1015 AcpiUtMethodError (
1016     const char              *ModuleName,
1017     UINT32                  LineNumber,
1018     const char              *Message,
1019     ACPI_NAMESPACE_NODE     *Node,
1020     const char              *Path,
1021     ACPI_STATUS             LookupStatus);
1022 
1023 
1024 /*
1025  * Utility functions for ACPI names and IDs
1026  */
1027 const AH_PREDEFINED_NAME *
1028 AcpiAhMatchPredefinedName (
1029     char                    *Nameseg);
1030 
1031 const AH_DEVICE_ID *
1032 AcpiAhMatchHardwareId (
1033     char                    *Hid);
1034 
1035 const char *
1036 AcpiAhMatchUuid (
1037     UINT8                   *Data);
1038 
1039 
1040 /*
1041  * utprint - printf/vprintf output functions
1042  */
1043 const char *
1044 AcpiUtScanNumber (
1045     const char              *String,
1046     UINT64                  *NumberPtr);
1047 
1048 const char *
1049 AcpiUtPrintNumber (
1050     char                    *String,
1051     UINT64                  Number);
1052 
1053 int
1054 AcpiUtVsnprintf (
1055     char                    *String,
1056     ACPI_SIZE               Size,
1057     const char              *Format,
1058     va_list                 Args);
1059 
1060 int
1061 AcpiUtSnprintf (
1062     char                    *String,
1063     ACPI_SIZE               Size,
1064     const char              *Format,
1065     ...);
1066 
1067 #ifdef ACPI_APPLICATION
1068 int
1069 AcpiUtFileVprintf (
1070     ACPI_FILE               File,
1071     const char              *Format,
1072     va_list                 Args);
1073 
1074 int
1075 AcpiUtFilePrintf (
1076     ACPI_FILE               File,
1077     const char              *Format,
1078     ...);
1079 #endif
1080 
1081 
1082 /*
1083  * utuuid -- UUID support functions
1084  */
1085 #if (defined ACPI_ASL_COMPILER || defined ACPI_DISASSEMBLER || defined ACPI_EXEC_APP || defined ACPI_HELP_APP || defined KLD_MODULE)
1086 void
1087 AcpiUtConvertStringToUuid (
1088     char                    *InString,
1089     UINT8                   *UuidBuffer);
1090 #endif
1091 
1092 #endif /* _ACUTILS_H */
1093