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