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