xref: /netbsd-src/sys/external/bsd/acpica/dist/tools/acpihelp/acpihelp.h (revision bdc22b2e01993381dcefeff2bc9b56ca75a4235c)
1 /******************************************************************************
2  *
3  * Module Name: acpihelp.h - Include file for AcpiHelp utility
4  *
5  *****************************************************************************/
6 
7 /*
8  * Copyright (C) 2000 - 2018, 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 __ACPIHELP_H
45 #define __ACPIHELP_H
46 
47 
48 #include "acpi.h"
49 #include "accommon.h"
50 #include "acapps.h"
51 
52 #include <sys/types.h>
53 #ifdef WIN32
54 #include <io.h>
55 #include <direct.h>
56 #endif
57 
58 
59 /*
60  * Global variables. Defined in ahmain.c only, externed in all other files
61  */
62 #undef ACPI_GLOBAL
63 #undef ACPI_INIT_GLOBAL
64 
65 #ifdef DEFINE_AHELP_GLOBALS
66 #define ACPI_GLOBAL(type,name) \
67     extern type name; \
68     type name
69 
70 #define ACPI_INIT_GLOBAL(type,name,value) \
71     type name=value
72 
73 #else
74 #ifndef ACPI_GLOBAL
75 #define ACPI_GLOBAL(type,name) \
76     extern type name
77 #endif
78 
79 #ifndef ACPI_INIT_GLOBAL
80 #define ACPI_INIT_GLOBAL(type,name,value) \
81     extern type name
82 #endif
83 #endif
84 
85 
86 #define AH_BUFFER_LENGTH                128
87 #define AH_LINE_BUFFER_LENGTH           512
88 #define AH_MAX_ASL_LINE_LENGTH          70
89 #define AH_MAX_AML_LINE_LENGTH          100
90 
91 ACPI_GLOBAL (char,                      Gbl_Buffer[AH_BUFFER_LENGTH]);
92 ACPI_GLOBAL (char,                      Gbl_LineBuffer[AH_LINE_BUFFER_LENGTH]);
93 extern const AH_PREDEFINED_NAME         AslPredefinedInfo[];
94 extern const AH_DEVICE_ID               AslDeviceIds[];
95 
96 
97 #define AH_DISPLAY_EXCEPTION(Status, Name) \
98     printf ("%.4X: %s\n", Status, Name)
99 
100 #define AH_DISPLAY_EXCEPTION_TEXT(Status, Exception) \
101     printf ("%.4X: %-28s (%s)\n", Status,\
102     Exception->Name, Exception->Description)
103 
104 
105 typedef enum
106 {
107     AH_DECODE_DEFAULT           = 0,
108     AH_DECODE_ASL,
109     AH_DECODE_ASL_KEYWORD,
110     AH_DECODE_PREDEFINED_NAME,
111     AH_DECODE_AML,
112     AH_DECODE_AML_OPCODE,
113     AH_DECODE_AML_TYPE,
114     AH_DECODE_ASL_AML,
115     AH_DECODE_EXCEPTION,
116 
117     AH_DISPLAY_DEVICE_IDS,
118     AH_DISPLAY_UUIDS,
119     AH_DISPLAY_TABLES,
120     AH_DISPLAY_DIRECTIVES
121 
122 } AH_OPTION_TYPES;
123 
124 typedef struct ah_aml_opcode
125 {
126     UINT16          OpcodeRangeStart;
127     UINT16          OpcodeRangeEnd;
128     char            *OpcodeString;
129     char            *OpcodeName;
130     char            *Type;
131     char            *FixedArguments;
132     char            *VariableArguments;
133     char            *Grammar;
134 
135 } AH_AML_OPCODE;
136 
137 typedef struct ah_aml_type
138 {
139     char            *Name;
140     char            *Description;
141 
142 } AH_AML_TYPE;
143 
144 typedef struct ah_asl_operator
145 {
146     char            *Name;
147     char            *Syntax;
148     char            *Description;
149 
150 } AH_ASL_OPERATOR;
151 
152 typedef struct ah_asl_keyword
153 {
154     char            *Name;
155     char            *Description;
156     char            *KeywordList;
157 
158 } AH_ASL_KEYWORD;
159 
160 typedef struct ah_directive_info
161 {
162     char            *Name;
163     char            *Description;
164 
165 } AH_DIRECTIVE_INFO;
166 
167 
168 /* Externals for various data tables */
169 
170 extern const AH_AML_OPCODE          Gbl_AmlOpcodeInfo[];
171 extern const AH_AML_TYPE            Gbl_AmlTypesInfo[];
172 extern const AH_ASL_OPERATOR        Gbl_AslOperatorInfo[];
173 extern const AH_ASL_KEYWORD         Gbl_AslKeywordInfo[];
174 extern const AH_UUID                Gbl_AcpiUuids[];
175 extern const AH_DIRECTIVE_INFO      Gbl_PreprocessorDirectives[];
176 extern const AH_TABLE               Gbl_AcpiSupportedTables[];
177 
178 
179 void
180 AhFindAmlOpcode (
181     char                    *Name);
182 
183 void
184 AhDecodeAmlOpcode (
185     char                    *Name);
186 
187 void
188 AhDecodeException (
189     char                    *Name);
190 
191 void
192 AhFindPredefinedNames (
193     char                    *Name);
194 
195 void
196 AhFindAslAndAmlOperators (
197     char                    *Name);
198 
199 UINT32
200 AhFindAslOperators (
201     char                    *Name);
202 
203 void
204 AhFindAslKeywords (
205     char                    *Name);
206 
207 void
208 AhFindAmlTypes (
209     char                    *Name);
210 
211 void
212 AhDisplayDeviceIds (
213     char                    *Name);
214 
215 void
216 AhDisplayTables (
217     void);
218 
219 const AH_TABLE *
220 AcpiAhGetTableInfo (
221     char                    *Signature);
222 
223 void
224 AhDisplayUuids (
225     void);
226 
227 void
228 AhDisplayDirectives (
229     void);
230 
231 void
232 AhPrintOneField (
233     UINT32                  Indent,
234     UINT32                  CurrentPosition,
235     UINT32                  MaxPosition,
236     const char              *Field);
237 
238 #endif /* __ACPIHELP_H */
239