xref: /freebsd/sys/contrib/dev/acpica/include/acapps.h (revision 61673a1f781503dd82dc73d9ce1be256ee50b345)
1a9f12690SJung-uk Kim /******************************************************************************
2a9f12690SJung-uk Kim  *
3a9f12690SJung-uk Kim  * Module Name: acapps - common include for ACPI applications/tools
4a9f12690SJung-uk Kim  *
5a9f12690SJung-uk Kim  *****************************************************************************/
6a9f12690SJung-uk Kim 
7d244b227SJung-uk Kim /*
8*61673a1fSJung-uk Kim  * Copyright (C) 2000 - 2017, Intel Corp.
9a9f12690SJung-uk Kim  * All rights reserved.
10a9f12690SJung-uk Kim  *
11d244b227SJung-uk Kim  * Redistribution and use in source and binary forms, with or without
12d244b227SJung-uk Kim  * modification, are permitted provided that the following conditions
13d244b227SJung-uk Kim  * are met:
14d244b227SJung-uk Kim  * 1. Redistributions of source code must retain the above copyright
15d244b227SJung-uk Kim  *    notice, this list of conditions, and the following disclaimer,
16d244b227SJung-uk Kim  *    without modification.
17d244b227SJung-uk Kim  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18d244b227SJung-uk Kim  *    substantially similar to the "NO WARRANTY" disclaimer below
19d244b227SJung-uk Kim  *    ("Disclaimer") and any redistribution must be conditioned upon
20d244b227SJung-uk Kim  *    including a substantially similar Disclaimer requirement for further
21d244b227SJung-uk Kim  *    binary redistribution.
22d244b227SJung-uk Kim  * 3. Neither the names of the above-listed copyright holders nor the names
23d244b227SJung-uk Kim  *    of any contributors may be used to endorse or promote products derived
24d244b227SJung-uk Kim  *    from this software without specific prior written permission.
25a9f12690SJung-uk Kim  *
26d244b227SJung-uk Kim  * Alternatively, this software may be distributed under the terms of the
27d244b227SJung-uk Kim  * GNU General Public License ("GPL") version 2 as published by the Free
28d244b227SJung-uk Kim  * Software Foundation.
29a9f12690SJung-uk Kim  *
30d244b227SJung-uk Kim  * NO WARRANTY
31d244b227SJung-uk Kim  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32d244b227SJung-uk Kim  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33d244b227SJung-uk Kim  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34d244b227SJung-uk Kim  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35d244b227SJung-uk Kim  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36d244b227SJung-uk Kim  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37d244b227SJung-uk Kim  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38d244b227SJung-uk Kim  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39d244b227SJung-uk Kim  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40d244b227SJung-uk Kim  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41d244b227SJung-uk Kim  * POSSIBILITY OF SUCH DAMAGES.
42d244b227SJung-uk Kim  */
43a9f12690SJung-uk Kim 
44a9f12690SJung-uk Kim #ifndef _ACAPPS
45a9f12690SJung-uk Kim #define _ACAPPS
46a9f12690SJung-uk Kim 
47493deb39SJung-uk Kim #ifdef ACPI_USE_STANDARD_HEADERS
48493deb39SJung-uk Kim #include <sys/stat.h>
49493deb39SJung-uk Kim #endif /* ACPI_USE_STANDARD_HEADERS */
50a9f12690SJung-uk Kim 
513c1812acSJung-uk Kim /* Common info for tool signons */
523c1812acSJung-uk Kim 
533c1812acSJung-uk Kim #define ACPICA_NAME                 "Intel ACPI Component Architecture"
54*61673a1fSJung-uk Kim #define ACPICA_COPYRIGHT            "Copyright (c) 2000 - 2017 Intel Corporation"
553c1812acSJung-uk Kim 
563c1812acSJung-uk Kim #if ACPI_MACHINE_WIDTH == 64
57*61673a1fSJung-uk Kim #define ACPI_WIDTH          " (64-bit version)"
583c1812acSJung-uk Kim 
593c1812acSJung-uk Kim #elif ACPI_MACHINE_WIDTH == 32
60*61673a1fSJung-uk Kim #define ACPI_WIDTH          " (32-bit version)"
613c1812acSJung-uk Kim 
623c1812acSJung-uk Kim #else
633c1812acSJung-uk Kim #error unknown ACPI_MACHINE_WIDTH
64*61673a1fSJung-uk Kim #define ACPI_WIDTH          " (unknown bit width, not 32 or 64)"
653c1812acSJung-uk Kim 
663c1812acSJung-uk Kim #endif
673c1812acSJung-uk Kim 
683c1812acSJung-uk Kim /* Macros for signons and file headers */
693c1812acSJung-uk Kim 
703c1812acSJung-uk Kim #define ACPI_COMMON_SIGNON(UtilityName) \
71*61673a1fSJung-uk Kim     "\n%s\n%s version %8.8X\n%s\n\n", \
723c1812acSJung-uk Kim     ACPICA_NAME, \
73*61673a1fSJung-uk Kim     UtilityName, ((UINT32) ACPI_CA_VERSION), \
743c1812acSJung-uk Kim     ACPICA_COPYRIGHT
753c1812acSJung-uk Kim 
763c1812acSJung-uk Kim #define ACPI_COMMON_HEADER(UtilityName, Prefix) \
773c1812acSJung-uk Kim     "%s%s\n%s%s version %8.8X%s\n%s%s\n%s\n", \
783c1812acSJung-uk Kim     Prefix, ACPICA_NAME, \
793c1812acSJung-uk Kim     Prefix, UtilityName, ((UINT32) ACPI_CA_VERSION), ACPI_WIDTH, \
803c1812acSJung-uk Kim     Prefix, ACPICA_COPYRIGHT, \
813c1812acSJung-uk Kim     Prefix
823c1812acSJung-uk Kim 
833f0275a0SJung-uk Kim /* Macros for usage messages */
843f0275a0SJung-uk Kim 
853f0275a0SJung-uk Kim #define ACPI_USAGE_HEADER(Usage) \
86493deb39SJung-uk Kim     printf ("Usage: %s\nOptions:\n", Usage);
87313a0c13SJung-uk Kim 
88313a0c13SJung-uk Kim #define ACPI_USAGE_TEXT(Description) \
89493deb39SJung-uk Kim     printf (Description);
903f0275a0SJung-uk Kim 
913f0275a0SJung-uk Kim #define ACPI_OPTION(Name, Description) \
92493deb39SJung-uk Kim     printf ("  %-20s%s\n", Name, Description);
933f0275a0SJung-uk Kim 
943f0275a0SJung-uk Kim 
95f8146b88SJung-uk Kim /* Check for unexpected exceptions */
96f8146b88SJung-uk Kim 
97f8146b88SJung-uk Kim #define ACPI_CHECK_STATUS(Name, Status, Expected) \
98f8146b88SJung-uk Kim     if (Status != Expected) \
99f8146b88SJung-uk Kim     { \
100f8146b88SJung-uk Kim         AcpiOsPrintf ("Unexpected %s from %s (%s-%d)\n", \
101f8146b88SJung-uk Kim             AcpiFormatException (Status), #Name, _AcpiModuleName, __LINE__); \
102f8146b88SJung-uk Kim     }
103f8146b88SJung-uk Kim 
104f8146b88SJung-uk Kim /* Check for unexpected non-AE_OK errors */
105f8146b88SJung-uk Kim 
106f8146b88SJung-uk Kim 
107f8146b88SJung-uk Kim #define ACPI_CHECK_OK(Name, Status)   ACPI_CHECK_STATUS (Name, Status, AE_OK);
108f8146b88SJung-uk Kim 
109a9f12690SJung-uk Kim #define FILE_SUFFIX_DISASSEMBLY     "dsl"
110f8146b88SJung-uk Kim #define FILE_SUFFIX_BINARY_TABLE    ".dat" /* Needs the dot */
111f8146b88SJung-uk Kim 
112f8146b88SJung-uk Kim 
113f8146b88SJung-uk Kim /* acfileio */
114f8146b88SJung-uk Kim 
115f8146b88SJung-uk Kim ACPI_STATUS
116f8146b88SJung-uk Kim AcGetAllTablesFromFile (
117f8146b88SJung-uk Kim     char                    *Filename,
118f8146b88SJung-uk Kim     UINT8                   GetOnlyAmlTables,
119f8146b88SJung-uk Kim     ACPI_NEW_TABLE_DESC     **ReturnListHead);
120f8146b88SJung-uk Kim 
121f8146b88SJung-uk Kim BOOLEAN
122f8146b88SJung-uk Kim AcIsFileBinary (
123f8146b88SJung-uk Kim     FILE                    *File);
124f8146b88SJung-uk Kim 
125f8146b88SJung-uk Kim ACPI_STATUS
126f8146b88SJung-uk Kim AcValidateTableHeader (
127f8146b88SJung-uk Kim     FILE                    *File,
128f8146b88SJung-uk Kim     long                    TableOffset);
129f8146b88SJung-uk Kim 
130f8146b88SJung-uk Kim 
131f8146b88SJung-uk Kim /* Values for GetOnlyAmlTables */
132f8146b88SJung-uk Kim 
133f8146b88SJung-uk Kim #define ACPI_GET_ONLY_AML_TABLES    TRUE
134f8146b88SJung-uk Kim #define ACPI_GET_ALL_TABLES         FALSE
135a9f12690SJung-uk Kim 
136a9f12690SJung-uk Kim 
137f556842eSJung-uk Kim /*
138f556842eSJung-uk Kim  * getopt
139f556842eSJung-uk Kim  */
140a9f12690SJung-uk Kim int
141a9f12690SJung-uk Kim AcpiGetopt(
142a9f12690SJung-uk Kim     int                     argc,
143a9f12690SJung-uk Kim     char                    **argv,
144a9f12690SJung-uk Kim     char                    *opts);
145a9f12690SJung-uk Kim 
146a9d8d09cSJung-uk Kim int
147a9d8d09cSJung-uk Kim AcpiGetoptArgument (
148a9d8d09cSJung-uk Kim     int                     argc,
149a9d8d09cSJung-uk Kim     char                    **argv);
150a9d8d09cSJung-uk Kim 
151f556842eSJung-uk Kim extern int                  AcpiGbl_Optind;
1529a179dd8SJung-uk Kim extern int                  AcpiGbl_Opterr;
153a9d8d09cSJung-uk Kim extern int                  AcpiGbl_SubOptChar;
154f556842eSJung-uk Kim extern char                 *AcpiGbl_Optarg;
155f556842eSJung-uk Kim 
156f556842eSJung-uk Kim 
157313a0c13SJung-uk Kim /*
158313a0c13SJung-uk Kim  * cmfsize - Common get file size function
159313a0c13SJung-uk Kim  */
160313a0c13SJung-uk Kim UINT32
161313a0c13SJung-uk Kim CmGetFileSize (
162313a0c13SJung-uk Kim     ACPI_FILE               File);
163313a0c13SJung-uk Kim 
164313a0c13SJung-uk Kim 
165a9f12690SJung-uk Kim /*
166a9f12690SJung-uk Kim  * adwalk
167a9f12690SJung-uk Kim  */
168a9f12690SJung-uk Kim void
169a9f12690SJung-uk Kim AcpiDmCrossReferenceNamespace (
170a9f12690SJung-uk Kim     ACPI_PARSE_OBJECT       *ParseTreeRoot,
171a9f12690SJung-uk Kim     ACPI_NAMESPACE_NODE     *NamespaceRoot,
172a9f12690SJung-uk Kim     ACPI_OWNER_ID           OwnerId);
173a9f12690SJung-uk Kim 
174a9f12690SJung-uk Kim void
175a9f12690SJung-uk Kim AcpiDmDumpTree (
176a9f12690SJung-uk Kim     ACPI_PARSE_OBJECT       *Origin);
177a9f12690SJung-uk Kim 
178a9f12690SJung-uk Kim void
179a9f12690SJung-uk Kim AcpiDmFindOrphanMethods (
180a9f12690SJung-uk Kim     ACPI_PARSE_OBJECT       *Origin);
181a9f12690SJung-uk Kim 
182a9f12690SJung-uk Kim void
183a9f12690SJung-uk Kim AcpiDmFinishNamespaceLoad (
184a9f12690SJung-uk Kim     ACPI_PARSE_OBJECT       *ParseTreeRoot,
185a9f12690SJung-uk Kim     ACPI_NAMESPACE_NODE     *NamespaceRoot,
186a9f12690SJung-uk Kim     ACPI_OWNER_ID           OwnerId);
187a9f12690SJung-uk Kim 
188a9f12690SJung-uk Kim void
189a9f12690SJung-uk Kim AcpiDmConvertResourceIndexes (
190a9f12690SJung-uk Kim     ACPI_PARSE_OBJECT       *ParseTreeRoot,
191a9f12690SJung-uk Kim     ACPI_NAMESPACE_NODE     *NamespaceRoot);
192a9f12690SJung-uk Kim 
193f556842eSJung-uk Kim 
194a9f12690SJung-uk Kim /*
195a9f12690SJung-uk Kim  * adfile
196a9f12690SJung-uk Kim  */
197a9f12690SJung-uk Kim ACPI_STATUS
198a9f12690SJung-uk Kim AdInitialize (
199a9f12690SJung-uk Kim     void);
200a9f12690SJung-uk Kim 
201a9f12690SJung-uk Kim char *
202a9f12690SJung-uk Kim FlGenerateFilename (
203a9f12690SJung-uk Kim     char                    *InputFilename,
204a9f12690SJung-uk Kim     char                    *Suffix);
205a9f12690SJung-uk Kim 
206a9f12690SJung-uk Kim ACPI_STATUS
207a9f12690SJung-uk Kim FlSplitInputPathname (
208a9f12690SJung-uk Kim     char                    *InputPath,
209a9f12690SJung-uk Kim     char                    **OutDirectoryPath,
210a9f12690SJung-uk Kim     char                    **OutFilename);
211a9f12690SJung-uk Kim 
212a9f12690SJung-uk Kim char *
213a9f12690SJung-uk Kim AdGenerateFilename (
214a9f12690SJung-uk Kim     char                    *Prefix,
215a9f12690SJung-uk Kim     char                    *TableId);
216a9f12690SJung-uk Kim 
217a9f12690SJung-uk Kim void
218a9f12690SJung-uk Kim AdWriteTable (
219a9f12690SJung-uk Kim     ACPI_TABLE_HEADER       *Table,
220a9f12690SJung-uk Kim     UINT32                  Length,
221a9f12690SJung-uk Kim     char                    *TableName,
222a9f12690SJung-uk Kim     char                    *OemTableId);
223a9f12690SJung-uk Kim 
224a9f12690SJung-uk Kim #endif /* _ACAPPS */
225