cbbf7c5093e46c573b101a8d292888e95f7e32de
[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 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 const 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 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 char *Path,
464 UINT32 ExpectedReturnBtypes,
465 ACPI_OPERAND_OBJECT **ReturnDesc);
466
467 ACPI_STATUS
468 AcpiUtEvaluateNumericObject (
469 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 * utids - device ID support
488 */
489 ACPI_STATUS
490 AcpiUtExecute_HID (
491 ACPI_NAMESPACE_NODE *DeviceNode,
492 ACPI_PNP_DEVICE_ID **ReturnId);
493
494 ACPI_STATUS
495 AcpiUtExecute_UID (
496 ACPI_NAMESPACE_NODE *DeviceNode,
497 ACPI_PNP_DEVICE_ID **ReturnId);
498
499 ACPI_STATUS
500 AcpiUtExecute_CID (
501 ACPI_NAMESPACE_NODE *DeviceNode,
502 ACPI_PNP_DEVICE_ID_LIST **ReturnCidList);
503
504 ACPI_STATUS
505 AcpiUtExecute_CLS (
506 ACPI_NAMESPACE_NODE *DeviceNode,
507 ACPI_PNP_DEVICE_ID **ReturnId);
508
509
510 /*
511 * utlock - reader/writer locks
512 */
513 ACPI_STATUS
514 AcpiUtCreateRwLock (
515 ACPI_RW_LOCK *Lock);
516
517 void
518 AcpiUtDeleteRwLock (
519 ACPI_RW_LOCK *Lock);
520
521 ACPI_STATUS
522 AcpiUtAcquireReadLock (
523 ACPI_RW_LOCK *Lock);
524
525 ACPI_STATUS
526 AcpiUtReleaseReadLock (
527 ACPI_RW_LOCK *Lock);
528
529 ACPI_STATUS
530 AcpiUtAcquireWriteLock (
531 ACPI_RW_LOCK *Lock);
532
533 void
534 AcpiUtReleaseWriteLock (
535 ACPI_RW_LOCK *Lock);
536
537
538 /*
539 * utobject - internal object create/delete/cache routines
540 */
541 ACPI_OPERAND_OBJECT *
542 AcpiUtCreateInternalObjectDbg (
543 const char *ModuleName,
544 UINT32 LineNumber,
545 UINT32 ComponentId,
546 ACPI_OBJECT_TYPE Type);
547
548 void *
549 AcpiUtAllocateObjectDescDbg (
550 const char *ModuleName,
551 UINT32 LineNumber,
552 UINT32 ComponentId);
553
554 #define AcpiUtCreateInternalObject(t) AcpiUtCreateInternalObjectDbg (_AcpiModuleName,__LINE__,_COMPONENT,t)
555 #define AcpiUtAllocateObjectDesc() AcpiUtAllocateObjectDescDbg (_AcpiModuleName,__LINE__,_COMPONENT)
556
557 void
558 AcpiUtDeleteObjectDesc (
559 ACPI_OPERAND_OBJECT *Object);
560
561 BOOLEAN
562 AcpiUtValidInternalObject (
563 void *Object);
564
565 ACPI_OPERAND_OBJECT *
566 AcpiUtCreatePackageObject (
567 UINT32 Count);
568
569 ACPI_OPERAND_OBJECT *
570 AcpiUtCreateIntegerObject (
571 UINT64 Value);
572
573 ACPI_OPERAND_OBJECT *
574 AcpiUtCreateBufferObject (
575 ACPI_SIZE BufferSize);
576
577 ACPI_OPERAND_OBJECT *
578 AcpiUtCreateStringObject (
579 ACPI_SIZE StringSize);
580
581 ACPI_STATUS
582 AcpiUtGetObjectSize(
583 ACPI_OPERAND_OBJECT *Obj,
584 ACPI_SIZE *ObjLength);
585
586
587 /*
588 * utosi - Support for the _OSI predefined control method
589 */
590 ACPI_STATUS
591 AcpiUtInitializeInterfaces (
592 void);
593
594 ACPI_STATUS
595 AcpiUtInterfaceTerminate (
596 void);
597
598 ACPI_STATUS
599 AcpiUtInstallInterface (
600 ACPI_STRING InterfaceName);
601
602 ACPI_STATUS
603 AcpiUtRemoveInterface (
604 ACPI_STRING InterfaceName);
605
606 ACPI_STATUS
607 AcpiUtUpdateInterfaces (
608 UINT8 Action);
609
610 ACPI_INTERFACE_INFO *
611 AcpiUtGetInterface (
612 ACPI_STRING InterfaceName);
613
614 ACPI_STATUS
615 AcpiUtOsiImplementation (
616 ACPI_WALK_STATE *WalkState);
617
618
619 /*
620 * utpredef - support for predefined names
621 */
622 const ACPI_PREDEFINED_INFO *
623 AcpiUtGetNextPredefinedMethod (
624 const ACPI_PREDEFINED_INFO *ThisName);
625
626 const ACPI_PREDEFINED_INFO *
627 AcpiUtMatchPredefinedMethod (
628 char *Name);
629
630 void
631 AcpiUtGetExpectedReturnTypes (
632 char *Buffer,
633 UINT32 ExpectedBtypes);
634
635 #if (defined ACPI_ASL_COMPILER || defined ACPI_HELP_APP)
636 const ACPI_PREDEFINED_INFO *
637 AcpiUtMatchResourceName (
638 char *Name);
639
640 void
641 AcpiUtDisplayPredefinedMethod (
642 char *Buffer,
643 const ACPI_PREDEFINED_INFO *ThisName,
644 BOOLEAN MultiLine);
645
646 UINT32
647 AcpiUtGetResourceBitWidth (
648 char *Buffer,
649 UINT16 Types);
650 #endif
651
652
653 /*
654 * utstate - Generic state creation/cache routines
655 */
656 void
657 AcpiUtPushGenericState (
658 ACPI_GENERIC_STATE **ListHead,
659 ACPI_GENERIC_STATE *State);
660
661 ACPI_GENERIC_STATE *
662 AcpiUtPopGenericState (
663 ACPI_GENERIC_STATE **ListHead);
664
665
666 ACPI_GENERIC_STATE *
667 AcpiUtCreateGenericState (
668 void);
669
670 ACPI_THREAD_STATE *
671 AcpiUtCreateThreadState (
672 void);
673
674 ACPI_GENERIC_STATE *
675 AcpiUtCreateUpdateState (
676 ACPI_OPERAND_OBJECT *Object,
677 UINT16 Action);
678
679 ACPI_GENERIC_STATE *
680 AcpiUtCreatePkgState (
681 void *InternalObject,
682 void *ExternalObject,
683 UINT16 Index);
684
685 ACPI_STATUS
686 AcpiUtCreateUpdateStateAndPush (
687 ACPI_OPERAND_OBJECT *Object,
688 UINT16 Action,
689 ACPI_GENERIC_STATE **StateList);
690
691 ACPI_GENERIC_STATE *
692 AcpiUtCreateControlState (
693 void);
694
695 void
696 AcpiUtDeleteGenericState (
697 ACPI_GENERIC_STATE *State);
698
699
700 /*
701 * utmath
702 */
703 ACPI_STATUS
704 AcpiUtDivide (
705 UINT64 InDividend,
706 UINT64 InDivisor,
707 UINT64 *OutQuotient,
708 UINT64 *OutRemainder);
709
710 ACPI_STATUS
711 AcpiUtShortDivide (
712 UINT64 InDividend,
713 UINT32 Divisor,
714 UINT64 *OutQuotient,
715 UINT32 *OutRemainder);
716
717
718 /*
719 * utmisc
720 */
721 const ACPI_EXCEPTION_INFO *
722 AcpiUtValidateException (
723 ACPI_STATUS Status);
724
725 BOOLEAN
726 AcpiUtIsPciRootBridge (
727 char *Id);
728
729 #if (defined ACPI_ASL_COMPILER || defined ACPI_EXEC_APP || defined ACPI_NAMES_APP)
730 BOOLEAN
731 AcpiUtIsAmlTable (
732 ACPI_TABLE_HEADER *Table);
733 #endif
734
735 ACPI_STATUS
736 AcpiUtWalkPackageTree (
737 ACPI_OPERAND_OBJECT *SourceObject,
738 void *TargetObject,
739 ACPI_PKG_CALLBACK WalkCallback,
740 void *Context);
741
742 /* Values for Base above (16=Hex, 10=Decimal) */
743
744 #define ACPI_ANY_BASE 0
745
746
747 UINT32
748 AcpiUtDwordByteSwap (
749 UINT32 Value);
750
751 void
752 AcpiUtSetIntegerWidth (
753 UINT8 Revision);
754
755 #ifdef ACPI_DEBUG_OUTPUT
756 void
757 AcpiUtDisplayInitPathname (
758 UINT8 Type,
759 ACPI_NAMESPACE_NODE *ObjHandle,
760 char *Path);
761 #endif
762
763
764 /*
765 * utownerid - Support for Table/Method Owner IDs
766 */
767 ACPI_STATUS
768 AcpiUtAllocateOwnerId (
769 ACPI_OWNER_ID *OwnerId);
770
771 void
772 AcpiUtReleaseOwnerId (
773 ACPI_OWNER_ID *OwnerId);
774
775
776 /*
777 * utresrc
778 */
779 ACPI_STATUS
780 AcpiUtWalkAmlResources (
781 ACPI_WALK_STATE *WalkState,
782 UINT8 *Aml,
783 ACPI_SIZE AmlLength,
784 ACPI_WALK_AML_CALLBACK UserFunction,
785 void **Context);
786
787 ACPI_STATUS
788 AcpiUtValidateResource (
789 ACPI_WALK_STATE *WalkState,
790 void *Aml,
791 UINT8 *ReturnIndex);
792
793 UINT32
794 AcpiUtGetDescriptorLength (
795 void *Aml);
796
797 UINT16
798 AcpiUtGetResourceLength (
799 void *Aml);
800
801 UINT8
802 AcpiUtGetResourceHeaderLength (
803 void *Aml);
804
805 UINT8
806 AcpiUtGetResourceType (
807 void *Aml);
808
809 ACPI_STATUS
810 AcpiUtGetResourceEndTag (
811 ACPI_OPERAND_OBJECT *ObjDesc,
812 UINT8 **EndTag);
813
814
815 /*
816 * utstring - String and character utilities
817 */
818 void
819 AcpiUtPrintString (
820 char *String,
821 UINT16 MaxLength);
822
823 #if defined ACPI_ASL_COMPILER || defined ACPI_EXEC_APP
824 void
825 UtConvertBackslashes (
826 char *Pathname);
827 #endif
828
829 BOOLEAN
830 AcpiUtValidAcpiName (
831 char *Name);
832
833 BOOLEAN
834 AcpiUtValidAcpiChar (
835 char Character,
836 UINT32 Position);
837
838 void
839 AcpiUtRepairName (
840 char *Name);
841
842 #if defined (ACPI_DEBUGGER) || defined (ACPI_APPLICATION)
843 BOOLEAN
844 AcpiUtSafeStrcpy (
845 char *Dest,
846 ACPI_SIZE DestSize,
847 char *Source);
848
849 BOOLEAN
850 AcpiUtSafeStrcat (
851 char *Dest,
852 ACPI_SIZE DestSize,
853 char *Source);
854
855 BOOLEAN
856 AcpiUtSafeStrncat (
857 char *Dest,
858 ACPI_SIZE DestSize,
859 char *Source,
860 ACPI_SIZE MaxTransferLength);
861 #endif
862
863
864 /*
865 * utmutex - mutex support
866 */
867 ACPI_STATUS
868 AcpiUtMutexInitialize (
869 void);
870
871 void
872 AcpiUtMutexTerminate (
873 void);
874
875 ACPI_STATUS
876 AcpiUtAcquireMutex (
877 ACPI_MUTEX_HANDLE MutexId);
878
879 ACPI_STATUS
880 AcpiUtReleaseMutex (
881 ACPI_MUTEX_HANDLE MutexId);
882
883
884 /*
885 * utalloc - memory allocation and object caching
886 */
887 ACPI_STATUS
888 AcpiUtCreateCaches (
889 void);
890
891 ACPI_STATUS
892 AcpiUtDeleteCaches (
893 void);
894
895 ACPI_STATUS
896 AcpiUtValidateBuffer (
897 ACPI_BUFFER *Buffer);
898
899 ACPI_STATUS
900 AcpiUtInitializeBuffer (
901 ACPI_BUFFER *Buffer,
902 ACPI_SIZE RequiredLength);
903
904 #ifdef ACPI_DBG_TRACK_ALLOCATIONS
905 void *
906 AcpiUtAllocateAndTrack (
907 ACPI_SIZE Size,
908 UINT32 Component,
909 const char *Module,
910 UINT32 Line);
911
912 void *
913 AcpiUtAllocateZeroedAndTrack (
914 ACPI_SIZE Size,
915 UINT32 Component,
916 const char *Module,
917 UINT32 Line);
918
919 void
920 AcpiUtFreeAndTrack (
921 void *Address,
922 UINT32 Component,
923 const char *Module,
924 UINT32 Line);
925
926 void
927 AcpiUtDumpAllocationInfo (
928 void);
929
930 void
931 AcpiUtDumpAllocations (
932 UINT32 Component,
933 const char *Module);
934
935 ACPI_STATUS
936 AcpiUtCreateList (
937 char *ListName,
938 UINT16 ObjectSize,
939 ACPI_MEMORY_LIST **ReturnCache);
940
941 #endif /* ACPI_DBG_TRACK_ALLOCATIONS */
942
943
944 /*
945 * utaddress - address range check
946 */
947 ACPI_STATUS
948 AcpiUtAddAddressRange (
949 ACPI_ADR_SPACE_TYPE SpaceId,
950 ACPI_PHYSICAL_ADDRESS Address,
951 UINT32 Length,
952 ACPI_NAMESPACE_NODE *RegionNode);
953
954 void
955 AcpiUtRemoveAddressRange (
956 ACPI_ADR_SPACE_TYPE SpaceId,
957 ACPI_NAMESPACE_NODE *RegionNode);
958
959 UINT32
960 AcpiUtCheckAddressRange (
961 ACPI_ADR_SPACE_TYPE SpaceId,
962 ACPI_PHYSICAL_ADDRESS Address,
963 UINT32 Length,
964 BOOLEAN Warn);
965
966 void
967 AcpiUtDeleteAddressLists (
968 void);
969
970
971 /*
972 * utxferror - various error/warning output functions
973 */
974 void ACPI_INTERNAL_VAR_XFACE
975 AcpiUtPredefinedWarning (
976 const char *ModuleName,
977 UINT32 LineNumber,
978 char *Pathname,
979 UINT8 NodeFlags,
980 const char *Format,
981 ...);
982
983 void ACPI_INTERNAL_VAR_XFACE
984 AcpiUtPredefinedInfo (
985 const char *ModuleName,
986 UINT32 LineNumber,
987 char *Pathname,
988 UINT8 NodeFlags,
989 const char *Format,
990 ...);
991
992 void ACPI_INTERNAL_VAR_XFACE
993 AcpiUtPredefinedBiosError (
994 const char *ModuleName,
995 UINT32 LineNumber,
996 char *Pathname,
997 UINT8 NodeFlags,
998 const char *Format,
999 ...);
1000
1001 void
1002 AcpiUtNamespaceError (
1003 const char *ModuleName,
1004 UINT32 LineNumber,
1005 const char *InternalName,
1006 ACPI_STATUS LookupStatus);
1007
1008 void
1009 AcpiUtMethodError (
1010 const char *ModuleName,
1011 UINT32 LineNumber,
1012 const char *Message,
1013 ACPI_NAMESPACE_NODE *Node,
1014 const char *Path,
1015 ACPI_STATUS LookupStatus);
1016
1017
1018 /*
1019 * Utility functions for ACPI names and IDs
1020 */
1021 const AH_PREDEFINED_NAME *
1022 AcpiAhMatchPredefinedName (
1023 char *Nameseg);
1024
1025 const AH_DEVICE_ID *
1026 AcpiAhMatchHardwareId (
1027 char *Hid);
1028
1029 const char *
1030 AcpiAhMatchUuid (
1031 UINT8 *Data);
1032
1033
1034 /*
1035 * utprint - printf/vprintf output functions
1036 */
1037 const char *
1038 AcpiUtScanNumber (
1039 const char *String,
1040 UINT64 *NumberPtr);
1041
1042 const char *
1043 AcpiUtPrintNumber (
1044 char *String,
1045 UINT64 Number);
1046
1047 int
1048 AcpiUtVsnprintf (
1049 char *String,
1050 ACPI_SIZE Size,
1051 const char *Format,
1052 va_list Args);
1053
1054 int
1055 AcpiUtSnprintf (
1056 char *String,
1057 ACPI_SIZE Size,
1058 const char *Format,
1059 ...);
1060
1061 #ifdef ACPI_APPLICATION
1062 int
1063 AcpiUtFileVprintf (
1064 ACPI_FILE File,
1065 const char *Format,
1066 va_list Args);
1067
1068 int
1069 AcpiUtFilePrintf (
1070 ACPI_FILE File,
1071 const char *Format,
1072 ...);
1073 #endif
1074
1075
1076 /*
1077 * utuuid -- UUID support functions
1078 */
1079 #if (defined ACPI_ASL_COMPILER || defined ACPI_EXEC_APP || defined ACPI_HELP_APP)
1080 void
1081 AcpiUtConvertStringToUuid (
1082 char *InString,
1083 UINT8 *UuidBuffer);
1084 #endif
1085
1086 #endif /* _ACUTILS_H */