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