xref: /freebsd/sys/contrib/dev/acpica/include/acapps.h (revision 0b3105a37d7adcadcb720112fed4dc4e8040be99)
1 /******************************************************************************
2  *
3  * Module Name: acapps - common include for ACPI applications/tools
4  *
5  *****************************************************************************/
6 
7 /*
8  * Copyright (C) 2000 - 2015, Intel Corp.
9  * All rights reserved.
10  *
11  * Redistribution and use in source and binary forms, with or without
12  * modification, are permitted provided that the following conditions
13  * are met:
14  * 1. Redistributions of source code must retain the above copyright
15  *    notice, this list of conditions, and the following disclaimer,
16  *    without modification.
17  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18  *    substantially similar to the "NO WARRANTY" disclaimer below
19  *    ("Disclaimer") and any redistribution must be conditioned upon
20  *    including a substantially similar Disclaimer requirement for further
21  *    binary redistribution.
22  * 3. Neither the names of the above-listed copyright holders nor the names
23  *    of any contributors may be used to endorse or promote products derived
24  *    from this software without specific prior written permission.
25  *
26  * Alternatively, this software may be distributed under the terms of the
27  * GNU General Public License ("GPL") version 2 as published by the Free
28  * Software Foundation.
29  *
30  * NO WARRANTY
31  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41  * POSSIBILITY OF SUCH DAMAGES.
42  */
43 
44 #ifndef _ACAPPS
45 #define _ACAPPS
46 
47 
48 #ifdef _MSC_VER                 /* disable some level-4 warnings */
49 #pragma warning(disable:4100)   /* warning C4100: unreferenced formal parameter */
50 #endif
51 
52 /* Common info for tool signons */
53 
54 #define ACPICA_NAME                 "Intel ACPI Component Architecture"
55 #define ACPICA_COPYRIGHT            "Copyright (c) 2000 - 2015 Intel Corporation"
56 
57 #if ACPI_MACHINE_WIDTH == 64
58 #define ACPI_WIDTH          "-64"
59 
60 #elif ACPI_MACHINE_WIDTH == 32
61 #define ACPI_WIDTH          "-32"
62 
63 #else
64 #error unknown ACPI_MACHINE_WIDTH
65 #define ACPI_WIDTH          "-??"
66 
67 #endif
68 
69 /* Macros for signons and file headers */
70 
71 #define ACPI_COMMON_SIGNON(UtilityName) \
72     "\n%s\n%s version %8.8X%s\n%s\n\n", \
73     ACPICA_NAME, \
74     UtilityName, ((UINT32) ACPI_CA_VERSION), ACPI_WIDTH, \
75     ACPICA_COPYRIGHT
76 
77 #define ACPI_COMMON_HEADER(UtilityName, Prefix) \
78     "%s%s\n%s%s version %8.8X%s\n%s%s\n%s\n", \
79     Prefix, ACPICA_NAME, \
80     Prefix, UtilityName, ((UINT32) ACPI_CA_VERSION), ACPI_WIDTH, \
81     Prefix, ACPICA_COPYRIGHT, \
82     Prefix
83 
84 /* Macros for usage messages */
85 
86 #define ACPI_USAGE_HEADER(Usage) \
87     AcpiOsPrintf ("Usage: %s\nOptions:\n", Usage);
88 
89 #define ACPI_USAGE_TEXT(Description) \
90     AcpiOsPrintf (Description);
91 
92 #define ACPI_OPTION(Name, Description) \
93     AcpiOsPrintf ("  %-18s%s\n", Name, Description);
94 
95 
96 #define FILE_SUFFIX_DISASSEMBLY     "dsl"
97 #define ACPI_TABLE_FILE_SUFFIX      ".dat"
98 
99 
100 /*
101  * getopt
102  */
103 int
104 AcpiGetopt(
105     int                     argc,
106     char                    **argv,
107     char                    *opts);
108 
109 int
110 AcpiGetoptArgument (
111     int                     argc,
112     char                    **argv);
113 
114 extern int                  AcpiGbl_Optind;
115 extern int                  AcpiGbl_Opterr;
116 extern int                  AcpiGbl_SubOptChar;
117 extern char                 *AcpiGbl_Optarg;
118 
119 
120 /*
121  * cmfsize - Common get file size function
122  */
123 UINT32
124 CmGetFileSize (
125     ACPI_FILE               File);
126 
127 
128 #ifndef ACPI_DUMP_APP
129 /*
130  * adisasm
131  */
132 ACPI_STATUS
133 AdAmlDisassemble (
134     BOOLEAN                 OutToFile,
135     char                    *Filename,
136     char                    *Prefix,
137     char                    **OutFilename);
138 
139 void
140 AdPrintStatistics (
141     void);
142 
143 ACPI_STATUS
144 AdFindDsdt(
145     UINT8                   **DsdtPtr,
146     UINT32                  *DsdtLength);
147 
148 void
149 AdDumpTables (
150     void);
151 
152 ACPI_STATUS
153 AdGetLocalTables (
154     void);
155 
156 ACPI_STATUS
157 AdParseTable (
158     ACPI_TABLE_HEADER       *Table,
159     ACPI_OWNER_ID           *OwnerId,
160     BOOLEAN                 LoadTable,
161     BOOLEAN                 External);
162 
163 ACPI_STATUS
164 AdDisplayTables (
165     char                    *Filename,
166     ACPI_TABLE_HEADER       *Table);
167 
168 ACPI_STATUS
169 AdDisplayStatistics (
170     void);
171 
172 
173 /*
174  * adwalk
175  */
176 void
177 AcpiDmCrossReferenceNamespace (
178     ACPI_PARSE_OBJECT       *ParseTreeRoot,
179     ACPI_NAMESPACE_NODE     *NamespaceRoot,
180     ACPI_OWNER_ID           OwnerId);
181 
182 void
183 AcpiDmDumpTree (
184     ACPI_PARSE_OBJECT       *Origin);
185 
186 void
187 AcpiDmFindOrphanMethods (
188     ACPI_PARSE_OBJECT       *Origin);
189 
190 void
191 AcpiDmFinishNamespaceLoad (
192     ACPI_PARSE_OBJECT       *ParseTreeRoot,
193     ACPI_NAMESPACE_NODE     *NamespaceRoot,
194     ACPI_OWNER_ID           OwnerId);
195 
196 void
197 AcpiDmConvertResourceIndexes (
198     ACPI_PARSE_OBJECT       *ParseTreeRoot,
199     ACPI_NAMESPACE_NODE     *NamespaceRoot);
200 
201 
202 /*
203  * adfile
204  */
205 ACPI_STATUS
206 AdInitialize (
207     void);
208 
209 char *
210 FlGenerateFilename (
211     char                    *InputFilename,
212     char                    *Suffix);
213 
214 ACPI_STATUS
215 FlSplitInputPathname (
216     char                    *InputPath,
217     char                    **OutDirectoryPath,
218     char                    **OutFilename);
219 
220 char *
221 AdGenerateFilename (
222     char                    *Prefix,
223     char                    *TableId);
224 
225 void
226 AdWriteTable (
227     ACPI_TABLE_HEADER       *Table,
228     UINT32                  Length,
229     char                    *TableName,
230     char                    *OemTableId);
231 #endif
232 
233 #endif /* _ACAPPS */
234