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