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