Home | History | Annotate | Line # | Download | only in acpihelp
acpihelp.h revision 1.1.1.9
      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