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