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