Home | History | Annotate | Line # | Download | only in include
acexcep.h revision 1.1.1.2.4.2
      1 /******************************************************************************
      2  *
      3  * Name: acexcep.h - Exception codes returned by the ACPI subsystem
      4  *
      5  *****************************************************************************/
      6 
      7 /*
      8  * Copyright (C) 2000 - 2011, 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 __ACEXCEP_H__
     45 #define __ACEXCEP_H__
     46 
     47 
     48 /*
     49  * Exceptions returned by external ACPI interfaces
     50  */
     51 #define AE_CODE_ENVIRONMENTAL           0x0000
     52 #define AE_CODE_PROGRAMMER              0x1000
     53 #define AE_CODE_ACPI_TABLES             0x2000
     54 #define AE_CODE_AML                     0x3000
     55 #define AE_CODE_CONTROL                 0x4000
     56 #define AE_CODE_MASK                    0xF000
     57 
     58 
     59 #define ACPI_SUCCESS(a)                 (!(a))
     60 #define ACPI_FAILURE(a)                 (a)
     61 
     62 
     63 #define AE_OK                           (ACPI_STATUS) 0x0000
     64 
     65 /*
     66  * Environmental exceptions
     67  */
     68 #define AE_ERROR                        (ACPI_STATUS) (0x0001 | AE_CODE_ENVIRONMENTAL)
     69 #define AE_NO_ACPI_TABLES               (ACPI_STATUS) (0x0002 | AE_CODE_ENVIRONMENTAL)
     70 #define AE_NO_NAMESPACE                 (ACPI_STATUS) (0x0003 | AE_CODE_ENVIRONMENTAL)
     71 #define AE_NO_MEMORY                    (ACPI_STATUS) (0x0004 | AE_CODE_ENVIRONMENTAL)
     72 #define AE_NOT_FOUND                    (ACPI_STATUS) (0x0005 | AE_CODE_ENVIRONMENTAL)
     73 #define AE_NOT_EXIST                    (ACPI_STATUS) (0x0006 | AE_CODE_ENVIRONMENTAL)
     74 #define AE_ALREADY_EXISTS               (ACPI_STATUS) (0x0007 | AE_CODE_ENVIRONMENTAL)
     75 #define AE_TYPE                         (ACPI_STATUS) (0x0008 | AE_CODE_ENVIRONMENTAL)
     76 #define AE_NULL_OBJECT                  (ACPI_STATUS) (0x0009 | AE_CODE_ENVIRONMENTAL)
     77 #define AE_NULL_ENTRY                   (ACPI_STATUS) (0x000A | AE_CODE_ENVIRONMENTAL)
     78 #define AE_BUFFER_OVERFLOW              (ACPI_STATUS) (0x000B | AE_CODE_ENVIRONMENTAL)
     79 #define AE_STACK_OVERFLOW               (ACPI_STATUS) (0x000C | AE_CODE_ENVIRONMENTAL)
     80 #define AE_STACK_UNDERFLOW              (ACPI_STATUS) (0x000D | AE_CODE_ENVIRONMENTAL)
     81 #define AE_NOT_IMPLEMENTED              (ACPI_STATUS) (0x000E | AE_CODE_ENVIRONMENTAL)
     82 #define AE_SUPPORT                      (ACPI_STATUS) (0x000F | AE_CODE_ENVIRONMENTAL)
     83 #define AE_LIMIT                        (ACPI_STATUS) (0x0010 | AE_CODE_ENVIRONMENTAL)
     84 #define AE_TIME                         (ACPI_STATUS) (0x0011 | AE_CODE_ENVIRONMENTAL)
     85 #define AE_ACQUIRE_DEADLOCK             (ACPI_STATUS) (0x0012 | AE_CODE_ENVIRONMENTAL)
     86 #define AE_RELEASE_DEADLOCK             (ACPI_STATUS) (0x0013 | AE_CODE_ENVIRONMENTAL)
     87 #define AE_NOT_ACQUIRED                 (ACPI_STATUS) (0x0014 | AE_CODE_ENVIRONMENTAL)
     88 #define AE_ALREADY_ACQUIRED             (ACPI_STATUS) (0x0015 | AE_CODE_ENVIRONMENTAL)
     89 #define AE_NO_HARDWARE_RESPONSE         (ACPI_STATUS) (0x0016 | AE_CODE_ENVIRONMENTAL)
     90 #define AE_NO_GLOBAL_LOCK               (ACPI_STATUS) (0x0017 | AE_CODE_ENVIRONMENTAL)
     91 #define AE_ABORT_METHOD                 (ACPI_STATUS) (0x0018 | AE_CODE_ENVIRONMENTAL)
     92 #define AE_SAME_HANDLER                 (ACPI_STATUS) (0x0019 | AE_CODE_ENVIRONMENTAL)
     93 #define AE_NO_HANDLER                   (ACPI_STATUS) (0x001A | AE_CODE_ENVIRONMENTAL)
     94 #define AE_OWNER_ID_LIMIT               (ACPI_STATUS) (0x001B | AE_CODE_ENVIRONMENTAL)
     95 
     96 #define AE_CODE_ENV_MAX                 0x001B
     97 
     98 
     99 /*
    100  * Programmer exceptions
    101  */
    102 #define AE_BAD_PARAMETER                (ACPI_STATUS) (0x0001 | AE_CODE_PROGRAMMER)
    103 #define AE_BAD_CHARACTER                (ACPI_STATUS) (0x0002 | AE_CODE_PROGRAMMER)
    104 #define AE_BAD_PATHNAME                 (ACPI_STATUS) (0x0003 | AE_CODE_PROGRAMMER)
    105 #define AE_BAD_DATA                     (ACPI_STATUS) (0x0004 | AE_CODE_PROGRAMMER)
    106 #define AE_BAD_HEX_CONSTANT             (ACPI_STATUS) (0x0005 | AE_CODE_PROGRAMMER)
    107 #define AE_BAD_OCTAL_CONSTANT           (ACPI_STATUS) (0x0006 | AE_CODE_PROGRAMMER)
    108 #define AE_BAD_DECIMAL_CONSTANT         (ACPI_STATUS) (0x0007 | AE_CODE_PROGRAMMER)
    109 #define AE_MISSING_ARGUMENTS            (ACPI_STATUS) (0x0008 | AE_CODE_PROGRAMMER)
    110 #define AE_BAD_ADDRESS                  (ACPI_STATUS) (0x0009 | AE_CODE_PROGRAMMER)
    111 
    112 #define AE_CODE_PGM_MAX                 0x0009
    113 
    114 
    115 /*
    116  * Acpi table exceptions
    117  */
    118 #define AE_BAD_SIGNATURE                (ACPI_STATUS) (0x0001 | AE_CODE_ACPI_TABLES)
    119 #define AE_BAD_HEADER                   (ACPI_STATUS) (0x0002 | AE_CODE_ACPI_TABLES)
    120 #define AE_BAD_CHECKSUM                 (ACPI_STATUS) (0x0003 | AE_CODE_ACPI_TABLES)
    121 #define AE_BAD_VALUE                    (ACPI_STATUS) (0x0004 | AE_CODE_ACPI_TABLES)
    122 #define AE_INVALID_TABLE_LENGTH         (ACPI_STATUS) (0x0005 | AE_CODE_ACPI_TABLES)
    123 
    124 #define AE_CODE_TBL_MAX                 0x0005
    125 
    126 
    127 /*
    128  * AML exceptions.  These are caused by problems with
    129  * the actual AML byte stream
    130  */
    131 #define AE_AML_BAD_OPCODE               (ACPI_STATUS) (0x0001 | AE_CODE_AML)
    132 #define AE_AML_NO_OPERAND               (ACPI_STATUS) (0x0002 | AE_CODE_AML)
    133 #define AE_AML_OPERAND_TYPE             (ACPI_STATUS) (0x0003 | AE_CODE_AML)
    134 #define AE_AML_OPERAND_VALUE            (ACPI_STATUS) (0x0004 | AE_CODE_AML)
    135 #define AE_AML_UNINITIALIZED_LOCAL      (ACPI_STATUS) (0x0005 | AE_CODE_AML)
    136 #define AE_AML_UNINITIALIZED_ARG        (ACPI_STATUS) (0x0006 | AE_CODE_AML)
    137 #define AE_AML_UNINITIALIZED_ELEMENT    (ACPI_STATUS) (0x0007 | AE_CODE_AML)
    138 #define AE_AML_NUMERIC_OVERFLOW         (ACPI_STATUS) (0x0008 | AE_CODE_AML)
    139 #define AE_AML_REGION_LIMIT             (ACPI_STATUS) (0x0009 | AE_CODE_AML)
    140 #define AE_AML_BUFFER_LIMIT             (ACPI_STATUS) (0x000A | AE_CODE_AML)
    141 #define AE_AML_PACKAGE_LIMIT            (ACPI_STATUS) (0x000B | AE_CODE_AML)
    142 #define AE_AML_DIVIDE_BY_ZERO           (ACPI_STATUS) (0x000C | AE_CODE_AML)
    143 #define AE_AML_BAD_NAME                 (ACPI_STATUS) (0x000D | AE_CODE_AML)
    144 #define AE_AML_NAME_NOT_FOUND           (ACPI_STATUS) (0x000E | AE_CODE_AML)
    145 #define AE_AML_INTERNAL                 (ACPI_STATUS) (0x000F | AE_CODE_AML)
    146 #define AE_AML_INVALID_SPACE_ID         (ACPI_STATUS) (0x0010 | AE_CODE_AML)
    147 #define AE_AML_STRING_LIMIT             (ACPI_STATUS) (0x0011 | AE_CODE_AML)
    148 #define AE_AML_NO_RETURN_VALUE          (ACPI_STATUS) (0x0012 | AE_CODE_AML)
    149 #define AE_AML_METHOD_LIMIT             (ACPI_STATUS) (0x0013 | AE_CODE_AML)
    150 #define AE_AML_NOT_OWNER                (ACPI_STATUS) (0x0014 | AE_CODE_AML)
    151 #define AE_AML_MUTEX_ORDER              (ACPI_STATUS) (0x0015 | AE_CODE_AML)
    152 #define AE_AML_MUTEX_NOT_ACQUIRED       (ACPI_STATUS) (0x0016 | AE_CODE_AML)
    153 #define AE_AML_INVALID_RESOURCE_TYPE    (ACPI_STATUS) (0x0017 | AE_CODE_AML)
    154 #define AE_AML_INVALID_INDEX            (ACPI_STATUS) (0x0018 | AE_CODE_AML)
    155 #define AE_AML_REGISTER_LIMIT           (ACPI_STATUS) (0x0019 | AE_CODE_AML)
    156 #define AE_AML_NO_WHILE                 (ACPI_STATUS) (0x001A | AE_CODE_AML)
    157 #define AE_AML_ALIGNMENT                (ACPI_STATUS) (0x001B | AE_CODE_AML)
    158 #define AE_AML_NO_RESOURCE_END_TAG      (ACPI_STATUS) (0x001C | AE_CODE_AML)
    159 #define AE_AML_BAD_RESOURCE_VALUE       (ACPI_STATUS) (0x001D | AE_CODE_AML)
    160 #define AE_AML_CIRCULAR_REFERENCE       (ACPI_STATUS) (0x001E | AE_CODE_AML)
    161 #define AE_AML_BAD_RESOURCE_LENGTH      (ACPI_STATUS) (0x001F | AE_CODE_AML)
    162 #define AE_AML_ILLEGAL_ADDRESS          (ACPI_STATUS) (0x0020 | AE_CODE_AML)
    163 #define AE_AML_INFINITE_LOOP            (ACPI_STATUS) (0x0021 | AE_CODE_AML)
    164 
    165 #define AE_CODE_AML_MAX                 0x0021
    166 
    167 
    168 /*
    169  * Internal exceptions used for control
    170  */
    171 #define AE_CTRL_RETURN_VALUE            (ACPI_STATUS) (0x0001 | AE_CODE_CONTROL)
    172 #define AE_CTRL_PENDING                 (ACPI_STATUS) (0x0002 | AE_CODE_CONTROL)
    173 #define AE_CTRL_TERMINATE               (ACPI_STATUS) (0x0003 | AE_CODE_CONTROL)
    174 #define AE_CTRL_TRUE                    (ACPI_STATUS) (0x0004 | AE_CODE_CONTROL)
    175 #define AE_CTRL_FALSE                   (ACPI_STATUS) (0x0005 | AE_CODE_CONTROL)
    176 #define AE_CTRL_DEPTH                   (ACPI_STATUS) (0x0006 | AE_CODE_CONTROL)
    177 #define AE_CTRL_END                     (ACPI_STATUS) (0x0007 | AE_CODE_CONTROL)
    178 #define AE_CTRL_TRANSFER                (ACPI_STATUS) (0x0008 | AE_CODE_CONTROL)
    179 #define AE_CTRL_BREAK                   (ACPI_STATUS) (0x0009 | AE_CODE_CONTROL)
    180 #define AE_CTRL_CONTINUE                (ACPI_STATUS) (0x000A | AE_CODE_CONTROL)
    181 #define AE_CTRL_SKIP                    (ACPI_STATUS) (0x000B | AE_CODE_CONTROL)
    182 #define AE_CTRL_PARSE_CONTINUE          (ACPI_STATUS) (0x000C | AE_CODE_CONTROL)
    183 #define AE_CTRL_PARSE_PENDING           (ACPI_STATUS) (0x000D | AE_CODE_CONTROL)
    184 
    185 #define AE_CODE_CTRL_MAX                0x000D
    186 
    187 
    188 /* Exception strings for AcpiFormatException */
    189 
    190 #ifdef DEFINE_ACPI_GLOBALS
    191 
    192 /*
    193  * String versions of the exception codes above
    194  * These strings must match the corresponding defines exactly
    195  */
    196 char const   *AcpiGbl_ExceptionNames_Env[] =
    197 {
    198     "AE_OK",
    199     "AE_ERROR",
    200     "AE_NO_ACPI_TABLES",
    201     "AE_NO_NAMESPACE",
    202     "AE_NO_MEMORY",
    203     "AE_NOT_FOUND",
    204     "AE_NOT_EXIST",
    205     "AE_ALREADY_EXISTS",
    206     "AE_TYPE",
    207     "AE_NULL_OBJECT",
    208     "AE_NULL_ENTRY",
    209     "AE_BUFFER_OVERFLOW",
    210     "AE_STACK_OVERFLOW",
    211     "AE_STACK_UNDERFLOW",
    212     "AE_NOT_IMPLEMENTED",
    213     "AE_SUPPORT",
    214     "AE_LIMIT",
    215     "AE_TIME",
    216     "AE_ACQUIRE_DEADLOCK",
    217     "AE_RELEASE_DEADLOCK",
    218     "AE_NOT_ACQUIRED",
    219     "AE_ALREADY_ACQUIRED",
    220     "AE_NO_HARDWARE_RESPONSE",
    221     "AE_NO_GLOBAL_LOCK",
    222     "AE_ABORT_METHOD",
    223     "AE_SAME_HANDLER",
    224     "AE_NO_HANDLER",
    225     "AE_OWNER_ID_LIMIT"
    226 };
    227 
    228 char const   *AcpiGbl_ExceptionNames_Pgm[] =
    229 {
    230     NULL,
    231     "AE_BAD_PARAMETER",
    232     "AE_BAD_CHARACTER",
    233     "AE_BAD_PATHNAME",
    234     "AE_BAD_DATA",
    235     "AE_BAD_HEX_CONSTANT",
    236     "AE_BAD_OCTAL_CONSTANT",
    237     "AE_BAD_DECIMAL_CONSTANT",
    238     "AE_MISSING_ARGUMENTS",
    239     "AE_BAD_ADDRESS"
    240 };
    241 
    242 char const   *AcpiGbl_ExceptionNames_Tbl[] =
    243 {
    244     NULL,
    245     "AE_BAD_SIGNATURE",
    246     "AE_BAD_HEADER",
    247     "AE_BAD_CHECKSUM",
    248     "AE_BAD_VALUE",
    249     "AE_INVALID_TABLE_LENGTH"
    250 };
    251 
    252 char const   *AcpiGbl_ExceptionNames_Aml[] =
    253 {
    254     NULL,
    255     "AE_AML_BAD_OPCODE",
    256     "AE_AML_NO_OPERAND",
    257     "AE_AML_OPERAND_TYPE",
    258     "AE_AML_OPERAND_VALUE",
    259     "AE_AML_UNINITIALIZED_LOCAL",
    260     "AE_AML_UNINITIALIZED_ARG",
    261     "AE_AML_UNINITIALIZED_ELEMENT",
    262     "AE_AML_NUMERIC_OVERFLOW",
    263     "AE_AML_REGION_LIMIT",
    264     "AE_AML_BUFFER_LIMIT",
    265     "AE_AML_PACKAGE_LIMIT",
    266     "AE_AML_DIVIDE_BY_ZERO",
    267     "AE_AML_BAD_NAME",
    268     "AE_AML_NAME_NOT_FOUND",
    269     "AE_AML_INTERNAL",
    270     "AE_AML_INVALID_SPACE_ID",
    271     "AE_AML_STRING_LIMIT",
    272     "AE_AML_NO_RETURN_VALUE",
    273     "AE_AML_METHOD_LIMIT",
    274     "AE_AML_NOT_OWNER",
    275     "AE_AML_MUTEX_ORDER",
    276     "AE_AML_MUTEX_NOT_ACQUIRED",
    277     "AE_AML_INVALID_RESOURCE_TYPE",
    278     "AE_AML_INVALID_INDEX",
    279     "AE_AML_REGISTER_LIMIT",
    280     "AE_AML_NO_WHILE",
    281     "AE_AML_ALIGNMENT",
    282     "AE_AML_NO_RESOURCE_END_TAG",
    283     "AE_AML_BAD_RESOURCE_VALUE",
    284     "AE_AML_CIRCULAR_REFERENCE",
    285     "AE_AML_BAD_RESOURCE_LENGTH",
    286     "AE_AML_ILLEGAL_ADDRESS",
    287     "AE_AML_INFINITE_LOOP"
    288 };
    289 
    290 char const   *AcpiGbl_ExceptionNames_Ctrl[] =
    291 {
    292     NULL,
    293     "AE_CTRL_RETURN_VALUE",
    294     "AE_CTRL_PENDING",
    295     "AE_CTRL_TERMINATE",
    296     "AE_CTRL_TRUE",
    297     "AE_CTRL_FALSE",
    298     "AE_CTRL_DEPTH",
    299     "AE_CTRL_END",
    300     "AE_CTRL_TRANSFER",
    301     "AE_CTRL_BREAK",
    302     "AE_CTRL_CONTINUE",
    303     "AE_CTRL_SKIP",
    304     "AE_CTRL_PARSE_CONTINUE",
    305     "AE_CTRL_PARSE_PENDING"
    306 };
    307 
    308 #endif /* ACPI GLOBALS */
    309 
    310 #endif /* __ACEXCEP_H__ */
    311