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