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