xref: /netbsd-src/sys/external/bsd/acpica/dist/tools/acpihelp/acpihelp.h (revision 046a29855e04359424fd074e8313af6b6be8cfb6)
1 /******************************************************************************
2  *
3  * Module Name: acpihelp.h - Include file for AcpiHelp utility
4  *
5  *****************************************************************************/
6 
7 /*
8  * Copyright (C) 2000 - 2023, 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 MERCHANTABILITY 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     AH_DECODE_ASL_EXCEPTION
122 
123 } AH_OPTION_TYPES;
124 
125 typedef struct ah_aml_opcode
126 {
127     UINT16          OpcodeRangeStart;
128     UINT16          OpcodeRangeEnd;
129     char            *OpcodeString;
130     char            *OpcodeName;
131     char            *Type;
132     char            *FixedArguments;
133     char            *VariableArguments;
134     char            *Grammar;
135 
136 } AH_AML_OPCODE;
137 
138 typedef struct ah_aml_type
139 {
140     char            *Name;
141     char            *Description;
142 
143 } AH_AML_TYPE;
144 
145 typedef struct ah_asl_operator
146 {
147     char            *Name;
148     char            *Syntax;
149     char            *Description;
150 
151 } AH_ASL_OPERATOR;
152 
153 typedef struct ah_asl_keyword
154 {
155     char            *Name;
156     char            *Description;
157     char            *KeywordList;
158 
159 } AH_ASL_KEYWORD;
160 
161 typedef struct ah_directive_info
162 {
163     char            *Name;
164     char            *Description;
165 
166 } AH_DIRECTIVE_INFO;
167 
168 
169 /* Externals for various data tables */
170 
171 extern const AH_AML_OPCODE          Gbl_AmlOpcodeInfo[];
172 extern const AH_AML_TYPE            Gbl_AmlTypesInfo[];
173 extern const AH_ASL_OPERATOR        Gbl_AslOperatorInfo[];
174 extern const AH_ASL_KEYWORD         Gbl_AslKeywordInfo[];
175 extern const AH_UUID                Gbl_AcpiUuids[];
176 extern const AH_DIRECTIVE_INFO      Gbl_PreprocessorDirectives[];
177 extern const AH_TABLE               AcpiGbl_SupportedTables[];
178 
179 
180 void
181 AhFindAmlOpcode (
182     char                    *Name);
183 
184 void
185 AhDecodeAmlOpcode (
186     char                    *Name);
187 
188 void
189 AhDecodeException (
190     char                    *Name);
191 
192 void
193 AhDecodeAslException (
194     char                    *Name);
195 
196 void
197 AhFindPredefinedNames (
198     char                    *Name);
199 
200 void
201 AhFindAslAndAmlOperators (
202     char                    *Name);
203 
204 UINT32
205 AhFindAslOperators (
206     char                    *Name);
207 
208 void
209 AhFindAslKeywords (
210     char                    *Name);
211 
212 void
213 AhFindAmlTypes (
214     char                    *Name);
215 
216 void
217 AhDisplayDeviceIds (
218     char                    *Name);
219 
220 void
221 AhDisplayTables (
222     void);
223 
224 const AH_TABLE *
225 AcpiAhGetTableInfo (
226     char                    *Signature);
227 
228 void
229 AhDisplayUuids (
230     void);
231 
232 void
233 AhDisplayDirectives (
234     void);
235 
236 void
237 AhPrintOneField (
238     UINT32                  Indent,
239     UINT32                  CurrentPosition,
240     UINT32                  MaxPosition,
241     const char              *Field);
242 
243 #endif /* __ACPIHELP_H */
244