Deleted Added
full compact
acutils.h (229989) acutils.h (235945)
1/******************************************************************************
2 *
3 * Name: acutils.h -- prototypes for the common (subsystem-wide) procedures
4 *
5 *****************************************************************************/
6
7/*
8 * Copyright (C) 2000 - 2012, 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
48extern const UINT8 AcpiGbl_ResourceAmlSizes[];
49extern const UINT8 AcpiGbl_ResourceAmlSerialBusSizes[];
50
51/* Strings used by the disassembler and debugger resource dump routines */
52
53#if defined(ACPI_DISASSEMBLER) || defined (ACPI_DEBUGGER)
54
55extern const char *AcpiGbl_BmDecode[];
56extern const char *AcpiGbl_ConfigDecode[];
57extern const char *AcpiGbl_ConsumeDecode[];
58extern const char *AcpiGbl_DecDecode[];
59extern const char *AcpiGbl_HeDecode[];
60extern const char *AcpiGbl_IoDecode[];
61extern const char *AcpiGbl_LlDecode[];
62extern const char *AcpiGbl_MaxDecode[];
63extern const char *AcpiGbl_MemDecode[];
64extern const char *AcpiGbl_MinDecode[];
65extern const char *AcpiGbl_MtpDecode[];
66extern const char *AcpiGbl_RngDecode[];
67extern const char *AcpiGbl_RwDecode[];
68extern const char *AcpiGbl_ShrDecode[];
69extern const char *AcpiGbl_SizDecode[];
70extern const char *AcpiGbl_TrsDecode[];
71extern const char *AcpiGbl_TtpDecode[];
72extern const char *AcpiGbl_TypDecode[];
73extern const char *AcpiGbl_PpcDecode[];
74extern const char *AcpiGbl_IorDecode[];
75extern const char *AcpiGbl_DtsDecode[];
76extern const char *AcpiGbl_CtDecode[];
77extern const char *AcpiGbl_SbtDecode[];
78extern const char *AcpiGbl_AmDecode[];
79extern const char *AcpiGbl_SmDecode[];
80extern const char *AcpiGbl_WmDecode[];
81extern const char *AcpiGbl_CphDecode[];
82extern const char *AcpiGbl_CpoDecode[];
83extern const char *AcpiGbl_DpDecode[];
84extern const char *AcpiGbl_EdDecode[];
85extern const char *AcpiGbl_BpbDecode[];
86extern const char *AcpiGbl_SbDecode[];
87extern const char *AcpiGbl_FcDecode[];
88extern const char *AcpiGbl_PtDecode[];
89#endif
90
91/* Types for Resource descriptor entries */
92
93#define ACPI_INVALID_RESOURCE 0
94#define ACPI_FIXED_LENGTH 1
95#define ACPI_VARIABLE_LENGTH 2
96#define ACPI_SMALL_VARIABLE_LENGTH 3
97
98typedef
99ACPI_STATUS (*ACPI_WALK_AML_CALLBACK) (
100 UINT8 *Aml,
101 UINT32 Length,
102 UINT32 Offset,
103 UINT8 ResourceIndex,
104 void *Context);
105
106typedef
107ACPI_STATUS (*ACPI_PKG_CALLBACK) (
108 UINT8 ObjectType,
109 ACPI_OPERAND_OBJECT *SourceObject,
110 ACPI_GENERIC_STATE *State,
111 void *Context);
112
113typedef struct acpi_pkg_info
114{
115 UINT8 *FreeSpace;
116 ACPI_SIZE Length;
117 UINT32 ObjectSpace;
118 UINT32 NumPackages;
119
120} ACPI_PKG_INFO;
121
122#define REF_INCREMENT (UINT16) 0
123#define REF_DECREMENT (UINT16) 1
124#define REF_FORCE_DELETE (UINT16) 2
125
126/* AcpiUtDumpBuffer */
127
128#define DB_BYTE_DISPLAY 1
129#define DB_WORD_DISPLAY 2
130#define DB_DWORD_DISPLAY 4
131#define DB_QWORD_DISPLAY 8
132
133/*
134 * utglobal - Global data structures and procedures
135 */
136ACPI_STATUS
137AcpiUtInitGlobals (
138 void);
139
140#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
141
142char *
143AcpiUtGetMutexName (
144 UINT32 MutexId);
145
146const char *
147AcpiUtGetNotifyName (
148 UINT32 NotifyValue);
149
150#endif
151
152char *
153AcpiUtGetTypeName (
154 ACPI_OBJECT_TYPE Type);
155
156char *
157AcpiUtGetNodeName (
158 void *Object);
159
160char *
161AcpiUtGetDescriptorName (
162 void *Object);
163
164const char *
165AcpiUtGetReferenceName (
166 ACPI_OPERAND_OBJECT *Object);
167
168char *
169AcpiUtGetObjectTypeName (
170 ACPI_OPERAND_OBJECT *ObjDesc);
171
172char *
173AcpiUtGetRegionName (
174 UINT8 SpaceId);
175
176char *
177AcpiUtGetEventName (
178 UINT32 EventId);
179
180char
181AcpiUtHexToAsciiChar (
182 UINT64 Integer,
183 UINT32 Position);
184
185BOOLEAN
186AcpiUtValidObjectType (
187 ACPI_OBJECT_TYPE Type);
188
189
190/*
191 * utinit - miscellaneous initialization and shutdown
192 */
193ACPI_STATUS
194AcpiUtHardwareInitialize (
195 void);
196
197void
198AcpiUtSubsystemShutdown (
199 void);
200
201
202/*
203 * utclib - Local implementations of C library functions
204 */
205#ifndef ACPI_USE_SYSTEM_CLIBRARY
206
207ACPI_SIZE
208AcpiUtStrlen (
209 const char *String);
210
211char *
212AcpiUtStrcpy (
213 char *DstString,
214 const char *SrcString);
215
216char *
217AcpiUtStrncpy (
218 char *DstString,
219 const char *SrcString,
220 ACPI_SIZE Count);
221
222int
223AcpiUtMemcmp (
224 const char *Buffer1,
225 const char *Buffer2,
226 ACPI_SIZE Count);
227
228int
229AcpiUtStrncmp (
230 const char *String1,
231 const char *String2,
232 ACPI_SIZE Count);
233
234int
235AcpiUtStrcmp (
236 const char *String1,
237 const char *String2);
238
239char *
240AcpiUtStrcat (
241 char *DstString,
242 const char *SrcString);
243
244char *
245AcpiUtStrncat (
246 char *DstString,
247 const char *SrcString,
248 ACPI_SIZE Count);
249
250UINT32
251AcpiUtStrtoul (
252 const char *String,
253 char **Terminator,
254 UINT32 Base);
255
256char *
257AcpiUtStrstr (
258 char *String1,
259 char *String2);
260
261void *
262AcpiUtMemcpy (
263 void *Dest,
264 const void *Src,
265 ACPI_SIZE Count);
266
267void *
268AcpiUtMemset (
269 void *Dest,
270 UINT8 Value,
271 ACPI_SIZE Count);
272
273int
274AcpiUtToUpper (
275 int c);
276
277int
278AcpiUtToLower (
279 int c);
280
281extern const UINT8 _acpi_ctype[];
282
283#define _ACPI_XA 0x00 /* extra alphabetic - not supported */
284#define _ACPI_XS 0x40 /* extra space */
285#define _ACPI_BB 0x00 /* BEL, BS, etc. - not supported */
286#define _ACPI_CN 0x20 /* CR, FF, HT, NL, VT */
287#define _ACPI_DI 0x04 /* '0'-'9' */
288#define _ACPI_LO 0x02 /* 'a'-'z' */
289#define _ACPI_PU 0x10 /* punctuation */
290#define _ACPI_SP 0x08 /* space */
291#define _ACPI_UP 0x01 /* 'A'-'Z' */
292#define _ACPI_XD 0x80 /* '0'-'9', 'A'-'F', 'a'-'f' */
293
294#define ACPI_IS_DIGIT(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_DI))
295#define ACPI_IS_SPACE(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_SP))
296#define ACPI_IS_XDIGIT(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_XD))
297#define ACPI_IS_UPPER(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_UP))
298#define ACPI_IS_LOWER(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO))
299#define ACPI_IS_PRINT(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO | _ACPI_UP | _ACPI_DI | _ACPI_SP | _ACPI_PU))
300#define ACPI_IS_ALPHA(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO | _ACPI_UP))
301
302#endif /* !ACPI_USE_SYSTEM_CLIBRARY */
303
304#define ACPI_IS_ASCII(c) ((c) < 0x80)
305
306
307/*
308 * utcopy - Object construction and conversion interfaces
309 */
310ACPI_STATUS
311AcpiUtBuildSimpleObject(
312 ACPI_OPERAND_OBJECT *Obj,
313 ACPI_OBJECT *UserObj,
314 UINT8 *DataSpace,
315 UINT32 *BufferSpaceUsed);
316
317ACPI_STATUS
318AcpiUtBuildPackageObject (
319 ACPI_OPERAND_OBJECT *Obj,
320 UINT8 *Buffer,
321 UINT32 *SpaceUsed);
322
323ACPI_STATUS
324AcpiUtCopyIobjectToEobject (
325 ACPI_OPERAND_OBJECT *Obj,
326 ACPI_BUFFER *RetBuffer);
327
328ACPI_STATUS
329AcpiUtCopyEobjectToIobject (
330 ACPI_OBJECT *Obj,
331 ACPI_OPERAND_OBJECT **InternalObj);
332
333ACPI_STATUS
334AcpiUtCopyISimpleToIsimple (
335 ACPI_OPERAND_OBJECT *SourceObj,
336 ACPI_OPERAND_OBJECT *DestObj);
337
338ACPI_STATUS
339AcpiUtCopyIobjectToIobject (
340 ACPI_OPERAND_OBJECT *SourceDesc,
341 ACPI_OPERAND_OBJECT **DestDesc,
342 ACPI_WALK_STATE *WalkState);
343
344
345/*
346 * utcreate - Object creation
347 */
348ACPI_STATUS
349AcpiUtUpdateObjectReference (
350 ACPI_OPERAND_OBJECT *Object,
351 UINT16 Action);
352
353
354/*
355 * utdebug - Debug interfaces
356 */
357void
358AcpiUtInitStackPtrTrace (
359 void);
360
361void
362AcpiUtTrackStackPtr (
363 void);
364
365void
366AcpiUtTrace (
367 UINT32 LineNumber,
368 const char *FunctionName,
369 const char *ModuleName,
370 UINT32 ComponentId);
371
372void
373AcpiUtTracePtr (
374 UINT32 LineNumber,
375 const char *FunctionName,
376 const char *ModuleName,
377 UINT32 ComponentId,
378 void *Pointer);
379
380void
381AcpiUtTraceU32 (
382 UINT32 LineNumber,
383 const char *FunctionName,
384 const char *ModuleName,
385 UINT32 ComponentId,
386 UINT32 Integer);
387
388void
389AcpiUtTraceStr (
390 UINT32 LineNumber,
391 const char *FunctionName,
392 const char *ModuleName,
393 UINT32 ComponentId,
394 char *String);
395
396void
397AcpiUtExit (
398 UINT32 LineNumber,
399 const char *FunctionName,
400 const char *ModuleName,
401 UINT32 ComponentId);
402
403void
404AcpiUtStatusExit (
405 UINT32 LineNumber,
406 const char *FunctionName,
407 const char *ModuleName,
408 UINT32 ComponentId,
409 ACPI_STATUS Status);
410
411void
412AcpiUtValueExit (
413 UINT32 LineNumber,
414 const char *FunctionName,
415 const char *ModuleName,
416 UINT32 ComponentId,
417 UINT64 Value);
418
419void
420AcpiUtPtrExit (
421 UINT32 LineNumber,
422 const char *FunctionName,
423 const char *ModuleName,
424 UINT32 ComponentId,
425 UINT8 *Ptr);
426
427void
428AcpiUtDumpBuffer (
429 UINT8 *Buffer,
430 UINT32 Count,
431 UINT32 Display,
432 UINT32 componentId);
433
434void
435AcpiUtDumpBuffer2 (
436 UINT8 *Buffer,
437 UINT32 Count,
438 UINT32 Display);
439
440void
441AcpiUtReportError (
442 char *ModuleName,
443 UINT32 LineNumber);
444
445void
446AcpiUtReportInfo (
447 char *ModuleName,
448 UINT32 LineNumber);
449
450void
451AcpiUtReportWarning (
452 char *ModuleName,
453 UINT32 LineNumber);
454
455/*
456 * utdelete - Object deletion and reference counts
457 */
458void
459AcpiUtAddReference (
460 ACPI_OPERAND_OBJECT *Object);
461
462void
463AcpiUtRemoveReference (
464 ACPI_OPERAND_OBJECT *Object);
465
466void
467AcpiUtDeleteInternalPackageObject (
468 ACPI_OPERAND_OBJECT *Object);
469
470void
471AcpiUtDeleteInternalSimpleObject (
472 ACPI_OPERAND_OBJECT *Object);
473
474void
475AcpiUtDeleteInternalObjectList (
476 ACPI_OPERAND_OBJECT **ObjList);
477
478
479/*
480 * uteval - object evaluation
481 */
482ACPI_STATUS
483AcpiUtEvaluateObject (
484 ACPI_NAMESPACE_NODE *PrefixNode,
485 char *Path,
486 UINT32 ExpectedReturnBtypes,
487 ACPI_OPERAND_OBJECT **ReturnDesc);
488
489ACPI_STATUS
490AcpiUtEvaluateNumericObject (
491 char *ObjectName,
492 ACPI_NAMESPACE_NODE *DeviceNode,
493 UINT64 *Value);
494
495ACPI_STATUS
496AcpiUtExecute_STA (
497 ACPI_NAMESPACE_NODE *DeviceNode,
498 UINT32 *StatusFlags);
499
500ACPI_STATUS
501AcpiUtExecutePowerMethods (
502 ACPI_NAMESPACE_NODE *DeviceNode,
503 const char **MethodNames,
504 UINT8 MethodCount,
505 UINT8 *OutValues);
506
507
508/*
509 * utids - device ID support
510 */
511ACPI_STATUS
512AcpiUtExecute_HID (
513 ACPI_NAMESPACE_NODE *DeviceNode,
514 ACPI_DEVICE_ID **ReturnId);
515
516ACPI_STATUS
517AcpiUtExecute_UID (
518 ACPI_NAMESPACE_NODE *DeviceNode,
519 ACPI_DEVICE_ID **ReturnId);
520
521ACPI_STATUS
522AcpiUtExecute_CID (
523 ACPI_NAMESPACE_NODE *DeviceNode,
524 ACPI_DEVICE_ID_LIST **ReturnCidList);
525
526
527/*
528 * utlock - reader/writer locks
529 */
530ACPI_STATUS
531AcpiUtCreateRwLock (
532 ACPI_RW_LOCK *Lock);
533
534void
535AcpiUtDeleteRwLock (
536 ACPI_RW_LOCK *Lock);
537
538ACPI_STATUS
539AcpiUtAcquireReadLock (
540 ACPI_RW_LOCK *Lock);
541
542ACPI_STATUS
543AcpiUtReleaseReadLock (
544 ACPI_RW_LOCK *Lock);
545
546ACPI_STATUS
547AcpiUtAcquireWriteLock (
548 ACPI_RW_LOCK *Lock);
549
550void
551AcpiUtReleaseWriteLock (
552 ACPI_RW_LOCK *Lock);
553
554
555/*
556 * utobject - internal object create/delete/cache routines
557 */
558ACPI_OPERAND_OBJECT *
559AcpiUtCreateInternalObjectDbg (
560 const char *ModuleName,
561 UINT32 LineNumber,
562 UINT32 ComponentId,
563 ACPI_OBJECT_TYPE Type);
564
565void *
566AcpiUtAllocateObjectDescDbg (
567 const char *ModuleName,
568 UINT32 LineNumber,
569 UINT32 ComponentId);
570
571#define AcpiUtCreateInternalObject(t) AcpiUtCreateInternalObjectDbg (_AcpiModuleName,__LINE__,_COMPONENT,t)
572#define AcpiUtAllocateObjectDesc() AcpiUtAllocateObjectDescDbg (_AcpiModuleName,__LINE__,_COMPONENT)
573
574void
575AcpiUtDeleteObjectDesc (
576 ACPI_OPERAND_OBJECT *Object);
577
578BOOLEAN
579AcpiUtValidInternalObject (
580 void *Object);
581
582ACPI_OPERAND_OBJECT *
583AcpiUtCreatePackageObject (
584 UINT32 Count);
585
586ACPI_OPERAND_OBJECT *
587AcpiUtCreateIntegerObject (
588 UINT64 Value);
589
590ACPI_OPERAND_OBJECT *
591AcpiUtCreateBufferObject (
592 ACPI_SIZE BufferSize);
593
594ACPI_OPERAND_OBJECT *
595AcpiUtCreateStringObject (
596 ACPI_SIZE StringSize);
597
598ACPI_STATUS
599AcpiUtGetObjectSize(
600 ACPI_OPERAND_OBJECT *Obj,
601 ACPI_SIZE *ObjLength);
602
603
604/*
605 * utosi - Support for the _OSI predefined control method
606 */
607ACPI_STATUS
608AcpiUtInitializeInterfaces (
609 void);
610
611void
612AcpiUtInterfaceTerminate (
613 void);
614
615ACPI_STATUS
616AcpiUtInstallInterface (
617 ACPI_STRING InterfaceName);
618
619ACPI_STATUS
620AcpiUtRemoveInterface (
621 ACPI_STRING InterfaceName);
622
623ACPI_INTERFACE_INFO *
624AcpiUtGetInterface (
625 ACPI_STRING InterfaceName);
626
627ACPI_STATUS
628AcpiUtOsiImplementation (
629 ACPI_WALK_STATE *WalkState);
630
631
632/*
633 * utstate - Generic state creation/cache routines
634 */
635void
636AcpiUtPushGenericState (
637 ACPI_GENERIC_STATE **ListHead,
638 ACPI_GENERIC_STATE *State);
639
640ACPI_GENERIC_STATE *
641AcpiUtPopGenericState (
642 ACPI_GENERIC_STATE **ListHead);
643
644
645ACPI_GENERIC_STATE *
646AcpiUtCreateGenericState (
647 void);
648
649ACPI_THREAD_STATE *
650AcpiUtCreateThreadState (
651 void);
652
653ACPI_GENERIC_STATE *
654AcpiUtCreateUpdateState (
655 ACPI_OPERAND_OBJECT *Object,
656 UINT16 Action);
657
658ACPI_GENERIC_STATE *
659AcpiUtCreatePkgState (
660 void *InternalObject,
661 void *ExternalObject,
662 UINT16 Index);
663
664ACPI_STATUS
665AcpiUtCreateUpdateStateAndPush (
666 ACPI_OPERAND_OBJECT *Object,
667 UINT16 Action,
668 ACPI_GENERIC_STATE **StateList);
669
670ACPI_STATUS
671AcpiUtCreatePkgStateAndPush (
672 void *InternalObject,
673 void *ExternalObject,
674 UINT16 Index,
675 ACPI_GENERIC_STATE **StateList);
676
677ACPI_GENERIC_STATE *
678AcpiUtCreateControlState (
679 void);
680
681void
682AcpiUtDeleteGenericState (
683 ACPI_GENERIC_STATE *State);
684
685
686/*
687 * utmath
688 */
689ACPI_STATUS
690AcpiUtDivide (
691 UINT64 InDividend,
692 UINT64 InDivisor,
693 UINT64 *OutQuotient,
694 UINT64 *OutRemainder);
695
696ACPI_STATUS
697AcpiUtShortDivide (
698 UINT64 InDividend,
699 UINT32 Divisor,
700 UINT64 *OutQuotient,
701 UINT32 *OutRemainder);
702
703/*
704 * utmisc
705 */
1/******************************************************************************
2 *
3 * Name: acutils.h -- prototypes for the common (subsystem-wide) procedures
4 *
5 *****************************************************************************/
6
7/*
8 * Copyright (C) 2000 - 2012, 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
48extern const UINT8 AcpiGbl_ResourceAmlSizes[];
49extern const UINT8 AcpiGbl_ResourceAmlSerialBusSizes[];
50
51/* Strings used by the disassembler and debugger resource dump routines */
52
53#if defined(ACPI_DISASSEMBLER) || defined (ACPI_DEBUGGER)
54
55extern const char *AcpiGbl_BmDecode[];
56extern const char *AcpiGbl_ConfigDecode[];
57extern const char *AcpiGbl_ConsumeDecode[];
58extern const char *AcpiGbl_DecDecode[];
59extern const char *AcpiGbl_HeDecode[];
60extern const char *AcpiGbl_IoDecode[];
61extern const char *AcpiGbl_LlDecode[];
62extern const char *AcpiGbl_MaxDecode[];
63extern const char *AcpiGbl_MemDecode[];
64extern const char *AcpiGbl_MinDecode[];
65extern const char *AcpiGbl_MtpDecode[];
66extern const char *AcpiGbl_RngDecode[];
67extern const char *AcpiGbl_RwDecode[];
68extern const char *AcpiGbl_ShrDecode[];
69extern const char *AcpiGbl_SizDecode[];
70extern const char *AcpiGbl_TrsDecode[];
71extern const char *AcpiGbl_TtpDecode[];
72extern const char *AcpiGbl_TypDecode[];
73extern const char *AcpiGbl_PpcDecode[];
74extern const char *AcpiGbl_IorDecode[];
75extern const char *AcpiGbl_DtsDecode[];
76extern const char *AcpiGbl_CtDecode[];
77extern const char *AcpiGbl_SbtDecode[];
78extern const char *AcpiGbl_AmDecode[];
79extern const char *AcpiGbl_SmDecode[];
80extern const char *AcpiGbl_WmDecode[];
81extern const char *AcpiGbl_CphDecode[];
82extern const char *AcpiGbl_CpoDecode[];
83extern const char *AcpiGbl_DpDecode[];
84extern const char *AcpiGbl_EdDecode[];
85extern const char *AcpiGbl_BpbDecode[];
86extern const char *AcpiGbl_SbDecode[];
87extern const char *AcpiGbl_FcDecode[];
88extern const char *AcpiGbl_PtDecode[];
89#endif
90
91/* Types for Resource descriptor entries */
92
93#define ACPI_INVALID_RESOURCE 0
94#define ACPI_FIXED_LENGTH 1
95#define ACPI_VARIABLE_LENGTH 2
96#define ACPI_SMALL_VARIABLE_LENGTH 3
97
98typedef
99ACPI_STATUS (*ACPI_WALK_AML_CALLBACK) (
100 UINT8 *Aml,
101 UINT32 Length,
102 UINT32 Offset,
103 UINT8 ResourceIndex,
104 void *Context);
105
106typedef
107ACPI_STATUS (*ACPI_PKG_CALLBACK) (
108 UINT8 ObjectType,
109 ACPI_OPERAND_OBJECT *SourceObject,
110 ACPI_GENERIC_STATE *State,
111 void *Context);
112
113typedef struct acpi_pkg_info
114{
115 UINT8 *FreeSpace;
116 ACPI_SIZE Length;
117 UINT32 ObjectSpace;
118 UINT32 NumPackages;
119
120} ACPI_PKG_INFO;
121
122#define REF_INCREMENT (UINT16) 0
123#define REF_DECREMENT (UINT16) 1
124#define REF_FORCE_DELETE (UINT16) 2
125
126/* AcpiUtDumpBuffer */
127
128#define DB_BYTE_DISPLAY 1
129#define DB_WORD_DISPLAY 2
130#define DB_DWORD_DISPLAY 4
131#define DB_QWORD_DISPLAY 8
132
133/*
134 * utglobal - Global data structures and procedures
135 */
136ACPI_STATUS
137AcpiUtInitGlobals (
138 void);
139
140#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER)
141
142char *
143AcpiUtGetMutexName (
144 UINT32 MutexId);
145
146const char *
147AcpiUtGetNotifyName (
148 UINT32 NotifyValue);
149
150#endif
151
152char *
153AcpiUtGetTypeName (
154 ACPI_OBJECT_TYPE Type);
155
156char *
157AcpiUtGetNodeName (
158 void *Object);
159
160char *
161AcpiUtGetDescriptorName (
162 void *Object);
163
164const char *
165AcpiUtGetReferenceName (
166 ACPI_OPERAND_OBJECT *Object);
167
168char *
169AcpiUtGetObjectTypeName (
170 ACPI_OPERAND_OBJECT *ObjDesc);
171
172char *
173AcpiUtGetRegionName (
174 UINT8 SpaceId);
175
176char *
177AcpiUtGetEventName (
178 UINT32 EventId);
179
180char
181AcpiUtHexToAsciiChar (
182 UINT64 Integer,
183 UINT32 Position);
184
185BOOLEAN
186AcpiUtValidObjectType (
187 ACPI_OBJECT_TYPE Type);
188
189
190/*
191 * utinit - miscellaneous initialization and shutdown
192 */
193ACPI_STATUS
194AcpiUtHardwareInitialize (
195 void);
196
197void
198AcpiUtSubsystemShutdown (
199 void);
200
201
202/*
203 * utclib - Local implementations of C library functions
204 */
205#ifndef ACPI_USE_SYSTEM_CLIBRARY
206
207ACPI_SIZE
208AcpiUtStrlen (
209 const char *String);
210
211char *
212AcpiUtStrcpy (
213 char *DstString,
214 const char *SrcString);
215
216char *
217AcpiUtStrncpy (
218 char *DstString,
219 const char *SrcString,
220 ACPI_SIZE Count);
221
222int
223AcpiUtMemcmp (
224 const char *Buffer1,
225 const char *Buffer2,
226 ACPI_SIZE Count);
227
228int
229AcpiUtStrncmp (
230 const char *String1,
231 const char *String2,
232 ACPI_SIZE Count);
233
234int
235AcpiUtStrcmp (
236 const char *String1,
237 const char *String2);
238
239char *
240AcpiUtStrcat (
241 char *DstString,
242 const char *SrcString);
243
244char *
245AcpiUtStrncat (
246 char *DstString,
247 const char *SrcString,
248 ACPI_SIZE Count);
249
250UINT32
251AcpiUtStrtoul (
252 const char *String,
253 char **Terminator,
254 UINT32 Base);
255
256char *
257AcpiUtStrstr (
258 char *String1,
259 char *String2);
260
261void *
262AcpiUtMemcpy (
263 void *Dest,
264 const void *Src,
265 ACPI_SIZE Count);
266
267void *
268AcpiUtMemset (
269 void *Dest,
270 UINT8 Value,
271 ACPI_SIZE Count);
272
273int
274AcpiUtToUpper (
275 int c);
276
277int
278AcpiUtToLower (
279 int c);
280
281extern const UINT8 _acpi_ctype[];
282
283#define _ACPI_XA 0x00 /* extra alphabetic - not supported */
284#define _ACPI_XS 0x40 /* extra space */
285#define _ACPI_BB 0x00 /* BEL, BS, etc. - not supported */
286#define _ACPI_CN 0x20 /* CR, FF, HT, NL, VT */
287#define _ACPI_DI 0x04 /* '0'-'9' */
288#define _ACPI_LO 0x02 /* 'a'-'z' */
289#define _ACPI_PU 0x10 /* punctuation */
290#define _ACPI_SP 0x08 /* space */
291#define _ACPI_UP 0x01 /* 'A'-'Z' */
292#define _ACPI_XD 0x80 /* '0'-'9', 'A'-'F', 'a'-'f' */
293
294#define ACPI_IS_DIGIT(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_DI))
295#define ACPI_IS_SPACE(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_SP))
296#define ACPI_IS_XDIGIT(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_XD))
297#define ACPI_IS_UPPER(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_UP))
298#define ACPI_IS_LOWER(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO))
299#define ACPI_IS_PRINT(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO | _ACPI_UP | _ACPI_DI | _ACPI_SP | _ACPI_PU))
300#define ACPI_IS_ALPHA(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO | _ACPI_UP))
301
302#endif /* !ACPI_USE_SYSTEM_CLIBRARY */
303
304#define ACPI_IS_ASCII(c) ((c) < 0x80)
305
306
307/*
308 * utcopy - Object construction and conversion interfaces
309 */
310ACPI_STATUS
311AcpiUtBuildSimpleObject(
312 ACPI_OPERAND_OBJECT *Obj,
313 ACPI_OBJECT *UserObj,
314 UINT8 *DataSpace,
315 UINT32 *BufferSpaceUsed);
316
317ACPI_STATUS
318AcpiUtBuildPackageObject (
319 ACPI_OPERAND_OBJECT *Obj,
320 UINT8 *Buffer,
321 UINT32 *SpaceUsed);
322
323ACPI_STATUS
324AcpiUtCopyIobjectToEobject (
325 ACPI_OPERAND_OBJECT *Obj,
326 ACPI_BUFFER *RetBuffer);
327
328ACPI_STATUS
329AcpiUtCopyEobjectToIobject (
330 ACPI_OBJECT *Obj,
331 ACPI_OPERAND_OBJECT **InternalObj);
332
333ACPI_STATUS
334AcpiUtCopyISimpleToIsimple (
335 ACPI_OPERAND_OBJECT *SourceObj,
336 ACPI_OPERAND_OBJECT *DestObj);
337
338ACPI_STATUS
339AcpiUtCopyIobjectToIobject (
340 ACPI_OPERAND_OBJECT *SourceDesc,
341 ACPI_OPERAND_OBJECT **DestDesc,
342 ACPI_WALK_STATE *WalkState);
343
344
345/*
346 * utcreate - Object creation
347 */
348ACPI_STATUS
349AcpiUtUpdateObjectReference (
350 ACPI_OPERAND_OBJECT *Object,
351 UINT16 Action);
352
353
354/*
355 * utdebug - Debug interfaces
356 */
357void
358AcpiUtInitStackPtrTrace (
359 void);
360
361void
362AcpiUtTrackStackPtr (
363 void);
364
365void
366AcpiUtTrace (
367 UINT32 LineNumber,
368 const char *FunctionName,
369 const char *ModuleName,
370 UINT32 ComponentId);
371
372void
373AcpiUtTracePtr (
374 UINT32 LineNumber,
375 const char *FunctionName,
376 const char *ModuleName,
377 UINT32 ComponentId,
378 void *Pointer);
379
380void
381AcpiUtTraceU32 (
382 UINT32 LineNumber,
383 const char *FunctionName,
384 const char *ModuleName,
385 UINT32 ComponentId,
386 UINT32 Integer);
387
388void
389AcpiUtTraceStr (
390 UINT32 LineNumber,
391 const char *FunctionName,
392 const char *ModuleName,
393 UINT32 ComponentId,
394 char *String);
395
396void
397AcpiUtExit (
398 UINT32 LineNumber,
399 const char *FunctionName,
400 const char *ModuleName,
401 UINT32 ComponentId);
402
403void
404AcpiUtStatusExit (
405 UINT32 LineNumber,
406 const char *FunctionName,
407 const char *ModuleName,
408 UINT32 ComponentId,
409 ACPI_STATUS Status);
410
411void
412AcpiUtValueExit (
413 UINT32 LineNumber,
414 const char *FunctionName,
415 const char *ModuleName,
416 UINT32 ComponentId,
417 UINT64 Value);
418
419void
420AcpiUtPtrExit (
421 UINT32 LineNumber,
422 const char *FunctionName,
423 const char *ModuleName,
424 UINT32 ComponentId,
425 UINT8 *Ptr);
426
427void
428AcpiUtDumpBuffer (
429 UINT8 *Buffer,
430 UINT32 Count,
431 UINT32 Display,
432 UINT32 componentId);
433
434void
435AcpiUtDumpBuffer2 (
436 UINT8 *Buffer,
437 UINT32 Count,
438 UINT32 Display);
439
440void
441AcpiUtReportError (
442 char *ModuleName,
443 UINT32 LineNumber);
444
445void
446AcpiUtReportInfo (
447 char *ModuleName,
448 UINT32 LineNumber);
449
450void
451AcpiUtReportWarning (
452 char *ModuleName,
453 UINT32 LineNumber);
454
455/*
456 * utdelete - Object deletion and reference counts
457 */
458void
459AcpiUtAddReference (
460 ACPI_OPERAND_OBJECT *Object);
461
462void
463AcpiUtRemoveReference (
464 ACPI_OPERAND_OBJECT *Object);
465
466void
467AcpiUtDeleteInternalPackageObject (
468 ACPI_OPERAND_OBJECT *Object);
469
470void
471AcpiUtDeleteInternalSimpleObject (
472 ACPI_OPERAND_OBJECT *Object);
473
474void
475AcpiUtDeleteInternalObjectList (
476 ACPI_OPERAND_OBJECT **ObjList);
477
478
479/*
480 * uteval - object evaluation
481 */
482ACPI_STATUS
483AcpiUtEvaluateObject (
484 ACPI_NAMESPACE_NODE *PrefixNode,
485 char *Path,
486 UINT32 ExpectedReturnBtypes,
487 ACPI_OPERAND_OBJECT **ReturnDesc);
488
489ACPI_STATUS
490AcpiUtEvaluateNumericObject (
491 char *ObjectName,
492 ACPI_NAMESPACE_NODE *DeviceNode,
493 UINT64 *Value);
494
495ACPI_STATUS
496AcpiUtExecute_STA (
497 ACPI_NAMESPACE_NODE *DeviceNode,
498 UINT32 *StatusFlags);
499
500ACPI_STATUS
501AcpiUtExecutePowerMethods (
502 ACPI_NAMESPACE_NODE *DeviceNode,
503 const char **MethodNames,
504 UINT8 MethodCount,
505 UINT8 *OutValues);
506
507
508/*
509 * utids - device ID support
510 */
511ACPI_STATUS
512AcpiUtExecute_HID (
513 ACPI_NAMESPACE_NODE *DeviceNode,
514 ACPI_DEVICE_ID **ReturnId);
515
516ACPI_STATUS
517AcpiUtExecute_UID (
518 ACPI_NAMESPACE_NODE *DeviceNode,
519 ACPI_DEVICE_ID **ReturnId);
520
521ACPI_STATUS
522AcpiUtExecute_CID (
523 ACPI_NAMESPACE_NODE *DeviceNode,
524 ACPI_DEVICE_ID_LIST **ReturnCidList);
525
526
527/*
528 * utlock - reader/writer locks
529 */
530ACPI_STATUS
531AcpiUtCreateRwLock (
532 ACPI_RW_LOCK *Lock);
533
534void
535AcpiUtDeleteRwLock (
536 ACPI_RW_LOCK *Lock);
537
538ACPI_STATUS
539AcpiUtAcquireReadLock (
540 ACPI_RW_LOCK *Lock);
541
542ACPI_STATUS
543AcpiUtReleaseReadLock (
544 ACPI_RW_LOCK *Lock);
545
546ACPI_STATUS
547AcpiUtAcquireWriteLock (
548 ACPI_RW_LOCK *Lock);
549
550void
551AcpiUtReleaseWriteLock (
552 ACPI_RW_LOCK *Lock);
553
554
555/*
556 * utobject - internal object create/delete/cache routines
557 */
558ACPI_OPERAND_OBJECT *
559AcpiUtCreateInternalObjectDbg (
560 const char *ModuleName,
561 UINT32 LineNumber,
562 UINT32 ComponentId,
563 ACPI_OBJECT_TYPE Type);
564
565void *
566AcpiUtAllocateObjectDescDbg (
567 const char *ModuleName,
568 UINT32 LineNumber,
569 UINT32 ComponentId);
570
571#define AcpiUtCreateInternalObject(t) AcpiUtCreateInternalObjectDbg (_AcpiModuleName,__LINE__,_COMPONENT,t)
572#define AcpiUtAllocateObjectDesc() AcpiUtAllocateObjectDescDbg (_AcpiModuleName,__LINE__,_COMPONENT)
573
574void
575AcpiUtDeleteObjectDesc (
576 ACPI_OPERAND_OBJECT *Object);
577
578BOOLEAN
579AcpiUtValidInternalObject (
580 void *Object);
581
582ACPI_OPERAND_OBJECT *
583AcpiUtCreatePackageObject (
584 UINT32 Count);
585
586ACPI_OPERAND_OBJECT *
587AcpiUtCreateIntegerObject (
588 UINT64 Value);
589
590ACPI_OPERAND_OBJECT *
591AcpiUtCreateBufferObject (
592 ACPI_SIZE BufferSize);
593
594ACPI_OPERAND_OBJECT *
595AcpiUtCreateStringObject (
596 ACPI_SIZE StringSize);
597
598ACPI_STATUS
599AcpiUtGetObjectSize(
600 ACPI_OPERAND_OBJECT *Obj,
601 ACPI_SIZE *ObjLength);
602
603
604/*
605 * utosi - Support for the _OSI predefined control method
606 */
607ACPI_STATUS
608AcpiUtInitializeInterfaces (
609 void);
610
611void
612AcpiUtInterfaceTerminate (
613 void);
614
615ACPI_STATUS
616AcpiUtInstallInterface (
617 ACPI_STRING InterfaceName);
618
619ACPI_STATUS
620AcpiUtRemoveInterface (
621 ACPI_STRING InterfaceName);
622
623ACPI_INTERFACE_INFO *
624AcpiUtGetInterface (
625 ACPI_STRING InterfaceName);
626
627ACPI_STATUS
628AcpiUtOsiImplementation (
629 ACPI_WALK_STATE *WalkState);
630
631
632/*
633 * utstate - Generic state creation/cache routines
634 */
635void
636AcpiUtPushGenericState (
637 ACPI_GENERIC_STATE **ListHead,
638 ACPI_GENERIC_STATE *State);
639
640ACPI_GENERIC_STATE *
641AcpiUtPopGenericState (
642 ACPI_GENERIC_STATE **ListHead);
643
644
645ACPI_GENERIC_STATE *
646AcpiUtCreateGenericState (
647 void);
648
649ACPI_THREAD_STATE *
650AcpiUtCreateThreadState (
651 void);
652
653ACPI_GENERIC_STATE *
654AcpiUtCreateUpdateState (
655 ACPI_OPERAND_OBJECT *Object,
656 UINT16 Action);
657
658ACPI_GENERIC_STATE *
659AcpiUtCreatePkgState (
660 void *InternalObject,
661 void *ExternalObject,
662 UINT16 Index);
663
664ACPI_STATUS
665AcpiUtCreateUpdateStateAndPush (
666 ACPI_OPERAND_OBJECT *Object,
667 UINT16 Action,
668 ACPI_GENERIC_STATE **StateList);
669
670ACPI_STATUS
671AcpiUtCreatePkgStateAndPush (
672 void *InternalObject,
673 void *ExternalObject,
674 UINT16 Index,
675 ACPI_GENERIC_STATE **StateList);
676
677ACPI_GENERIC_STATE *
678AcpiUtCreateControlState (
679 void);
680
681void
682AcpiUtDeleteGenericState (
683 ACPI_GENERIC_STATE *State);
684
685
686/*
687 * utmath
688 */
689ACPI_STATUS
690AcpiUtDivide (
691 UINT64 InDividend,
692 UINT64 InDivisor,
693 UINT64 *OutQuotient,
694 UINT64 *OutRemainder);
695
696ACPI_STATUS
697AcpiUtShortDivide (
698 UINT64 InDividend,
699 UINT32 Divisor,
700 UINT64 *OutQuotient,
701 UINT32 *OutRemainder);
702
703/*
704 * utmisc
705 */
706void
707UtConvertBackslashes (
708 char *Pathname);
709
706const char *
707AcpiUtValidateException (
708 ACPI_STATUS Status);
709
710BOOLEAN
711AcpiUtIsPciRootBridge (
712 char *Id);
713
714BOOLEAN
715AcpiUtIsAmlTable (
716 ACPI_TABLE_HEADER *Table);
717
718ACPI_STATUS
719AcpiUtAllocateOwnerId (
720 ACPI_OWNER_ID *OwnerId);
721
722void
723AcpiUtReleaseOwnerId (
724 ACPI_OWNER_ID *OwnerId);
725
726ACPI_STATUS
727AcpiUtWalkPackageTree (
728 ACPI_OPERAND_OBJECT *SourceObject,
729 void *TargetObject,
730 ACPI_PKG_CALLBACK WalkCallback,
731 void *Context);
732
733void
734AcpiUtStrupr (
735 char *SrcString);
736
737void
738AcpiUtStrlwr (
739 char *SrcString);
740
741int
742AcpiUtStricmp (
743 char *String1,
744 char *String2);
745
746void
747AcpiUtPrintString (
748 char *String,
749 UINT8 MaxLength);
750
751BOOLEAN
752AcpiUtValidAcpiName (
753 UINT32 Name);
754
755void
756AcpiUtRepairName (
757 char *Name);
758
759BOOLEAN
760AcpiUtValidAcpiChar (
761 char Character,
762 UINT32 Position);
763
764ACPI_STATUS
765AcpiUtStrtoul64 (
766 char *String,
767 UINT32 Base,
768 UINT64 *RetInteger);
769
770/* Values for Base above (16=Hex, 10=Decimal) */
771
772#define ACPI_ANY_BASE 0
773
774UINT32
775AcpiUtDwordByteSwap (
776 UINT32 Value);
777
778void
779AcpiUtSetIntegerWidth (
780 UINT8 Revision);
781
782#ifdef ACPI_DEBUG_OUTPUT
783void
784AcpiUtDisplayInitPathname (
785 UINT8 Type,
786 ACPI_NAMESPACE_NODE *ObjHandle,
787 char *Path);
788#endif
789
790
791/*
792 * utresrc
793 */
794ACPI_STATUS
795AcpiUtWalkAmlResources (
796 UINT8 *Aml,
797 ACPI_SIZE AmlLength,
798 ACPI_WALK_AML_CALLBACK UserFunction,
799 void *Context);
800
801ACPI_STATUS
802AcpiUtValidateResource (
803 void *Aml,
804 UINT8 *ReturnIndex);
805
806UINT32
807AcpiUtGetDescriptorLength (
808 void *Aml);
809
810UINT16
811AcpiUtGetResourceLength (
812 void *Aml);
813
814UINT8
815AcpiUtGetResourceHeaderLength (
816 void *Aml);
817
818UINT8
819AcpiUtGetResourceType (
820 void *Aml);
821
822ACPI_STATUS
823AcpiUtGetResourceEndTag (
824 ACPI_OPERAND_OBJECT *ObjDesc,
825 UINT8 **EndTag);
826
827
828/*
829 * utmutex - mutex support
830 */
831ACPI_STATUS
832AcpiUtMutexInitialize (
833 void);
834
835void
836AcpiUtMutexTerminate (
837 void);
838
839ACPI_STATUS
840AcpiUtAcquireMutex (
841 ACPI_MUTEX_HANDLE MutexId);
842
843ACPI_STATUS
844AcpiUtReleaseMutex (
845 ACPI_MUTEX_HANDLE MutexId);
846
847
848/*
849 * utalloc - memory allocation and object caching
850 */
851ACPI_STATUS
852AcpiUtCreateCaches (
853 void);
854
855ACPI_STATUS
856AcpiUtDeleteCaches (
857 void);
858
859ACPI_STATUS
860AcpiUtValidateBuffer (
861 ACPI_BUFFER *Buffer);
862
863ACPI_STATUS
864AcpiUtInitializeBuffer (
865 ACPI_BUFFER *Buffer,
866 ACPI_SIZE RequiredLength);
867
868void *
869AcpiUtAllocate (
870 ACPI_SIZE Size,
871 UINT32 Component,
872 const char *Module,
873 UINT32 Line);
874
875void *
876AcpiUtAllocateZeroed (
877 ACPI_SIZE Size,
878 UINT32 Component,
879 const char *Module,
880 UINT32 Line);
881
882#ifdef ACPI_DBG_TRACK_ALLOCATIONS
883void *
884AcpiUtAllocateAndTrack (
885 ACPI_SIZE Size,
886 UINT32 Component,
887 const char *Module,
888 UINT32 Line);
889
890void *
891AcpiUtAllocateZeroedAndTrack (
892 ACPI_SIZE Size,
893 UINT32 Component,
894 const char *Module,
895 UINT32 Line);
896
897void
898AcpiUtFreeAndTrack (
899 void *Address,
900 UINT32 Component,
901 const char *Module,
902 UINT32 Line);
903
904void
905AcpiUtDumpAllocationInfo (
906 void);
907
908void
909AcpiUtDumpAllocations (
910 UINT32 Component,
911 const char *Module);
912
913ACPI_STATUS
914AcpiUtCreateList (
915 char *ListName,
916 UINT16 ObjectSize,
917 ACPI_MEMORY_LIST **ReturnCache);
918
919#endif /* ACPI_DBG_TRACK_ALLOCATIONS */
920
921/*
922 * utaddress - address range check
923 */
924ACPI_STATUS
925AcpiUtAddAddressRange (
926 ACPI_ADR_SPACE_TYPE SpaceId,
927 ACPI_PHYSICAL_ADDRESS Address,
928 UINT32 Length,
929 ACPI_NAMESPACE_NODE *RegionNode);
930
931void
932AcpiUtRemoveAddressRange (
933 ACPI_ADR_SPACE_TYPE SpaceId,
934 ACPI_NAMESPACE_NODE *RegionNode);
935
936UINT32
937AcpiUtCheckAddressRange (
938 ACPI_ADR_SPACE_TYPE SpaceId,
939 ACPI_PHYSICAL_ADDRESS Address,
940 UINT32 Length,
941 BOOLEAN Warn);
942
943void
944AcpiUtDeleteAddressLists (
945 void);
946
947/*
948 * utxferror - various error/warning output functions
949 */
950void ACPI_INTERNAL_VAR_XFACE
951AcpiUtPredefinedWarning (
952 const char *ModuleName,
953 UINT32 LineNumber,
954 char *Pathname,
955 UINT8 NodeFlags,
956 const char *Format,
957 ...);
958
959void ACPI_INTERNAL_VAR_XFACE
960AcpiUtPredefinedInfo (
961 const char *ModuleName,
962 UINT32 LineNumber,
963 char *Pathname,
964 UINT8 NodeFlags,
965 const char *Format,
966 ...);
967
968void
969AcpiUtNamespaceError (
970 const char *ModuleName,
971 UINT32 LineNumber,
972 const char *InternalName,
973 ACPI_STATUS LookupStatus);
974
975void
976AcpiUtMethodError (
977 const char *ModuleName,
978 UINT32 LineNumber,
979 const char *Message,
980 ACPI_NAMESPACE_NODE *Node,
981 const char *Path,
982 ACPI_STATUS LookupStatus);
983
984#endif /* _ACUTILS_H */
710const char *
711AcpiUtValidateException (
712 ACPI_STATUS Status);
713
714BOOLEAN
715AcpiUtIsPciRootBridge (
716 char *Id);
717
718BOOLEAN
719AcpiUtIsAmlTable (
720 ACPI_TABLE_HEADER *Table);
721
722ACPI_STATUS
723AcpiUtAllocateOwnerId (
724 ACPI_OWNER_ID *OwnerId);
725
726void
727AcpiUtReleaseOwnerId (
728 ACPI_OWNER_ID *OwnerId);
729
730ACPI_STATUS
731AcpiUtWalkPackageTree (
732 ACPI_OPERAND_OBJECT *SourceObject,
733 void *TargetObject,
734 ACPI_PKG_CALLBACK WalkCallback,
735 void *Context);
736
737void
738AcpiUtStrupr (
739 char *SrcString);
740
741void
742AcpiUtStrlwr (
743 char *SrcString);
744
745int
746AcpiUtStricmp (
747 char *String1,
748 char *String2);
749
750void
751AcpiUtPrintString (
752 char *String,
753 UINT8 MaxLength);
754
755BOOLEAN
756AcpiUtValidAcpiName (
757 UINT32 Name);
758
759void
760AcpiUtRepairName (
761 char *Name);
762
763BOOLEAN
764AcpiUtValidAcpiChar (
765 char Character,
766 UINT32 Position);
767
768ACPI_STATUS
769AcpiUtStrtoul64 (
770 char *String,
771 UINT32 Base,
772 UINT64 *RetInteger);
773
774/* Values for Base above (16=Hex, 10=Decimal) */
775
776#define ACPI_ANY_BASE 0
777
778UINT32
779AcpiUtDwordByteSwap (
780 UINT32 Value);
781
782void
783AcpiUtSetIntegerWidth (
784 UINT8 Revision);
785
786#ifdef ACPI_DEBUG_OUTPUT
787void
788AcpiUtDisplayInitPathname (
789 UINT8 Type,
790 ACPI_NAMESPACE_NODE *ObjHandle,
791 char *Path);
792#endif
793
794
795/*
796 * utresrc
797 */
798ACPI_STATUS
799AcpiUtWalkAmlResources (
800 UINT8 *Aml,
801 ACPI_SIZE AmlLength,
802 ACPI_WALK_AML_CALLBACK UserFunction,
803 void *Context);
804
805ACPI_STATUS
806AcpiUtValidateResource (
807 void *Aml,
808 UINT8 *ReturnIndex);
809
810UINT32
811AcpiUtGetDescriptorLength (
812 void *Aml);
813
814UINT16
815AcpiUtGetResourceLength (
816 void *Aml);
817
818UINT8
819AcpiUtGetResourceHeaderLength (
820 void *Aml);
821
822UINT8
823AcpiUtGetResourceType (
824 void *Aml);
825
826ACPI_STATUS
827AcpiUtGetResourceEndTag (
828 ACPI_OPERAND_OBJECT *ObjDesc,
829 UINT8 **EndTag);
830
831
832/*
833 * utmutex - mutex support
834 */
835ACPI_STATUS
836AcpiUtMutexInitialize (
837 void);
838
839void
840AcpiUtMutexTerminate (
841 void);
842
843ACPI_STATUS
844AcpiUtAcquireMutex (
845 ACPI_MUTEX_HANDLE MutexId);
846
847ACPI_STATUS
848AcpiUtReleaseMutex (
849 ACPI_MUTEX_HANDLE MutexId);
850
851
852/*
853 * utalloc - memory allocation and object caching
854 */
855ACPI_STATUS
856AcpiUtCreateCaches (
857 void);
858
859ACPI_STATUS
860AcpiUtDeleteCaches (
861 void);
862
863ACPI_STATUS
864AcpiUtValidateBuffer (
865 ACPI_BUFFER *Buffer);
866
867ACPI_STATUS
868AcpiUtInitializeBuffer (
869 ACPI_BUFFER *Buffer,
870 ACPI_SIZE RequiredLength);
871
872void *
873AcpiUtAllocate (
874 ACPI_SIZE Size,
875 UINT32 Component,
876 const char *Module,
877 UINT32 Line);
878
879void *
880AcpiUtAllocateZeroed (
881 ACPI_SIZE Size,
882 UINT32 Component,
883 const char *Module,
884 UINT32 Line);
885
886#ifdef ACPI_DBG_TRACK_ALLOCATIONS
887void *
888AcpiUtAllocateAndTrack (
889 ACPI_SIZE Size,
890 UINT32 Component,
891 const char *Module,
892 UINT32 Line);
893
894void *
895AcpiUtAllocateZeroedAndTrack (
896 ACPI_SIZE Size,
897 UINT32 Component,
898 const char *Module,
899 UINT32 Line);
900
901void
902AcpiUtFreeAndTrack (
903 void *Address,
904 UINT32 Component,
905 const char *Module,
906 UINT32 Line);
907
908void
909AcpiUtDumpAllocationInfo (
910 void);
911
912void
913AcpiUtDumpAllocations (
914 UINT32 Component,
915 const char *Module);
916
917ACPI_STATUS
918AcpiUtCreateList (
919 char *ListName,
920 UINT16 ObjectSize,
921 ACPI_MEMORY_LIST **ReturnCache);
922
923#endif /* ACPI_DBG_TRACK_ALLOCATIONS */
924
925/*
926 * utaddress - address range check
927 */
928ACPI_STATUS
929AcpiUtAddAddressRange (
930 ACPI_ADR_SPACE_TYPE SpaceId,
931 ACPI_PHYSICAL_ADDRESS Address,
932 UINT32 Length,
933 ACPI_NAMESPACE_NODE *RegionNode);
934
935void
936AcpiUtRemoveAddressRange (
937 ACPI_ADR_SPACE_TYPE SpaceId,
938 ACPI_NAMESPACE_NODE *RegionNode);
939
940UINT32
941AcpiUtCheckAddressRange (
942 ACPI_ADR_SPACE_TYPE SpaceId,
943 ACPI_PHYSICAL_ADDRESS Address,
944 UINT32 Length,
945 BOOLEAN Warn);
946
947void
948AcpiUtDeleteAddressLists (
949 void);
950
951/*
952 * utxferror - various error/warning output functions
953 */
954void ACPI_INTERNAL_VAR_XFACE
955AcpiUtPredefinedWarning (
956 const char *ModuleName,
957 UINT32 LineNumber,
958 char *Pathname,
959 UINT8 NodeFlags,
960 const char *Format,
961 ...);
962
963void ACPI_INTERNAL_VAR_XFACE
964AcpiUtPredefinedInfo (
965 const char *ModuleName,
966 UINT32 LineNumber,
967 char *Pathname,
968 UINT8 NodeFlags,
969 const char *Format,
970 ...);
971
972void
973AcpiUtNamespaceError (
974 const char *ModuleName,
975 UINT32 LineNumber,
976 const char *InternalName,
977 ACPI_STATUS LookupStatus);
978
979void
980AcpiUtMethodError (
981 const char *ModuleName,
982 UINT32 LineNumber,
983 const char *Message,
984 ACPI_NAMESPACE_NODE *Node,
985 const char *Path,
986 ACPI_STATUS LookupStatus);
987
988#endif /* _ACUTILS_H */