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