Home | History | Annotate | Line # | Download | only in include
acparser.h revision 1.1.1.13.4.1
      1           1.1    jruoho /******************************************************************************
      2           1.1    jruoho  *
      3           1.1    jruoho  * Module Name: acparser.h - AML Parser subcomponent prototypes and defines
      4           1.1    jruoho  *
      5           1.1    jruoho  *****************************************************************************/
      6           1.1    jruoho 
      7       1.1.1.2    jruoho /*
      8  1.1.1.13.4.1   thorpej  * Copyright (C) 2000 - 2021, Intel Corp.
      9           1.1    jruoho  * All rights reserved.
     10           1.1    jruoho  *
     11       1.1.1.2    jruoho  * Redistribution and use in source and binary forms, with or without
     12       1.1.1.2    jruoho  * modification, are permitted provided that the following conditions
     13       1.1.1.2    jruoho  * are met:
     14       1.1.1.2    jruoho  * 1. Redistributions of source code must retain the above copyright
     15       1.1.1.2    jruoho  *    notice, this list of conditions, and the following disclaimer,
     16       1.1.1.2    jruoho  *    without modification.
     17       1.1.1.2    jruoho  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
     18       1.1.1.2    jruoho  *    substantially similar to the "NO WARRANTY" disclaimer below
     19       1.1.1.2    jruoho  *    ("Disclaimer") and any redistribution must be conditioned upon
     20       1.1.1.2    jruoho  *    including a substantially similar Disclaimer requirement for further
     21       1.1.1.2    jruoho  *    binary redistribution.
     22       1.1.1.2    jruoho  * 3. Neither the names of the above-listed copyright holders nor the names
     23       1.1.1.2    jruoho  *    of any contributors may be used to endorse or promote products derived
     24       1.1.1.2    jruoho  *    from this software without specific prior written permission.
     25       1.1.1.2    jruoho  *
     26       1.1.1.2    jruoho  * Alternatively, this software may be distributed under the terms of the
     27       1.1.1.2    jruoho  * GNU General Public License ("GPL") version 2 as published by the Free
     28       1.1.1.2    jruoho  * Software Foundation.
     29       1.1.1.2    jruoho  *
     30       1.1.1.2    jruoho  * NO WARRANTY
     31       1.1.1.2    jruoho  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     32       1.1.1.2    jruoho  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     33  1.1.1.13.4.1   thorpej  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
     34       1.1.1.2    jruoho  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     35       1.1.1.2    jruoho  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     36       1.1.1.2    jruoho  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     37       1.1.1.2    jruoho  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     38       1.1.1.2    jruoho  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
     39       1.1.1.2    jruoho  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
     40       1.1.1.2    jruoho  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     41       1.1.1.2    jruoho  * POSSIBILITY OF SUCH DAMAGES.
     42       1.1.1.2    jruoho  */
     43           1.1    jruoho 
     44           1.1    jruoho #ifndef __ACPARSER_H__
     45           1.1    jruoho #define __ACPARSER_H__
     46           1.1    jruoho 
     47           1.1    jruoho 
     48           1.1    jruoho #define OP_HAS_RETURN_VALUE             1
     49           1.1    jruoho 
     50           1.1    jruoho /* Variable number of arguments. This field must be 32 bits */
     51           1.1    jruoho 
     52           1.1    jruoho #define ACPI_VAR_ARGS                   ACPI_UINT32_MAX
     53           1.1    jruoho 
     54           1.1    jruoho 
     55           1.1    jruoho #define ACPI_PARSE_DELETE_TREE          0x0001
     56           1.1    jruoho #define ACPI_PARSE_NO_TREE_DELETE       0x0000
     57           1.1    jruoho #define ACPI_PARSE_TREE_MASK            0x0001
     58           1.1    jruoho 
     59           1.1    jruoho #define ACPI_PARSE_LOAD_PASS1           0x0010
     60           1.1    jruoho #define ACPI_PARSE_LOAD_PASS2           0x0020
     61           1.1    jruoho #define ACPI_PARSE_EXECUTE              0x0030
     62           1.1    jruoho #define ACPI_PARSE_MODE_MASK            0x0030
     63           1.1    jruoho 
     64           1.1    jruoho #define ACPI_PARSE_DEFERRED_OP          0x0100
     65           1.1    jruoho #define ACPI_PARSE_DISASSEMBLE          0x0200
     66           1.1    jruoho 
     67           1.1    jruoho #define ACPI_PARSE_MODULE_LEVEL         0x0400
     68           1.1    jruoho 
     69           1.1    jruoho /******************************************************************************
     70           1.1    jruoho  *
     71           1.1    jruoho  * Parser interfaces
     72           1.1    jruoho  *
     73           1.1    jruoho  *****************************************************************************/
     74           1.1    jruoho 
     75       1.1.1.6  christos extern const UINT8      AcpiGbl_ShortOpIndex[];
     76       1.1.1.6  christos extern const UINT8      AcpiGbl_LongOpIndex[];
     77       1.1.1.6  christos 
     78           1.1    jruoho 
     79           1.1    jruoho /*
     80           1.1    jruoho  * psxface - Parser external interfaces
     81           1.1    jruoho  */
     82           1.1    jruoho ACPI_STATUS
     83           1.1    jruoho AcpiPsExecuteMethod (
     84           1.1    jruoho     ACPI_EVALUATE_INFO      *Info);
     85           1.1    jruoho 
     86       1.1.1.9  christos ACPI_STATUS
     87       1.1.1.9  christos AcpiPsExecuteTable (
     88       1.1.1.9  christos     ACPI_EVALUATE_INFO      *Info);
     89       1.1.1.9  christos 
     90           1.1    jruoho 
     91           1.1    jruoho /*
     92           1.1    jruoho  * psargs - Parse AML opcode arguments
     93           1.1    jruoho  */
     94           1.1    jruoho UINT8 *
     95           1.1    jruoho AcpiPsGetNextPackageEnd (
     96           1.1    jruoho     ACPI_PARSE_STATE        *ParserState);
     97           1.1    jruoho 
     98           1.1    jruoho char *
     99           1.1    jruoho AcpiPsGetNextNamestring (
    100           1.1    jruoho     ACPI_PARSE_STATE        *ParserState);
    101           1.1    jruoho 
    102           1.1    jruoho void
    103           1.1    jruoho AcpiPsGetNextSimpleArg (
    104           1.1    jruoho     ACPI_PARSE_STATE        *ParserState,
    105           1.1    jruoho     UINT32                  ArgType,
    106           1.1    jruoho     ACPI_PARSE_OBJECT       *Arg);
    107           1.1    jruoho 
    108           1.1    jruoho ACPI_STATUS
    109           1.1    jruoho AcpiPsGetNextNamepath (
    110           1.1    jruoho     ACPI_WALK_STATE         *WalkState,
    111           1.1    jruoho     ACPI_PARSE_STATE        *ParserState,
    112           1.1    jruoho     ACPI_PARSE_OBJECT       *Arg,
    113       1.1.1.7  christos     BOOLEAN                 PossibleMethodCall);
    114       1.1.1.7  christos 
    115       1.1.1.7  christos /* Values for BOOLEAN above */
    116       1.1.1.7  christos 
    117       1.1.1.7  christos #define ACPI_NOT_METHOD_CALL            FALSE
    118       1.1.1.7  christos #define ACPI_POSSIBLE_METHOD_CALL       TRUE
    119           1.1    jruoho 
    120           1.1    jruoho ACPI_STATUS
    121           1.1    jruoho AcpiPsGetNextArg (
    122           1.1    jruoho     ACPI_WALK_STATE         *WalkState,
    123           1.1    jruoho     ACPI_PARSE_STATE        *ParserState,
    124           1.1    jruoho     UINT32                  ArgType,
    125           1.1    jruoho     ACPI_PARSE_OBJECT       **ReturnArg);
    126           1.1    jruoho 
    127           1.1    jruoho 
    128           1.1    jruoho /*
    129           1.1    jruoho  * psfind
    130           1.1    jruoho  */
    131           1.1    jruoho ACPI_PARSE_OBJECT *
    132           1.1    jruoho AcpiPsFindName (
    133           1.1    jruoho     ACPI_PARSE_OBJECT       *Scope,
    134           1.1    jruoho     UINT32                  Name,
    135           1.1    jruoho     UINT32                  Opcode);
    136           1.1    jruoho 
    137           1.1    jruoho ACPI_PARSE_OBJECT*
    138           1.1    jruoho AcpiPsGetParent (
    139           1.1    jruoho     ACPI_PARSE_OBJECT       *Op);
    140           1.1    jruoho 
    141           1.1    jruoho 
    142           1.1    jruoho /*
    143       1.1.1.3  christos  * psobject - support for parse object processing
    144       1.1.1.3  christos  */
    145       1.1.1.3  christos ACPI_STATUS
    146       1.1.1.3  christos AcpiPsBuildNamedOp (
    147       1.1.1.3  christos     ACPI_WALK_STATE         *WalkState,
    148       1.1.1.3  christos     UINT8                   *AmlOpStart,
    149       1.1.1.3  christos     ACPI_PARSE_OBJECT       *UnnamedOp,
    150       1.1.1.3  christos     ACPI_PARSE_OBJECT       **Op);
    151       1.1.1.3  christos 
    152       1.1.1.3  christos ACPI_STATUS
    153       1.1.1.3  christos AcpiPsCreateOp (
    154       1.1.1.3  christos     ACPI_WALK_STATE         *WalkState,
    155       1.1.1.3  christos     UINT8                   *AmlOpStart,
    156       1.1.1.3  christos     ACPI_PARSE_OBJECT       **NewOp);
    157       1.1.1.3  christos 
    158       1.1.1.3  christos ACPI_STATUS
    159       1.1.1.3  christos AcpiPsCompleteOp (
    160       1.1.1.3  christos     ACPI_WALK_STATE         *WalkState,
    161       1.1.1.3  christos     ACPI_PARSE_OBJECT       **Op,
    162       1.1.1.3  christos     ACPI_STATUS             Status);
    163       1.1.1.3  christos 
    164       1.1.1.3  christos ACPI_STATUS
    165       1.1.1.3  christos AcpiPsCompleteFinalOp (
    166       1.1.1.3  christos     ACPI_WALK_STATE         *WalkState,
    167       1.1.1.3  christos     ACPI_PARSE_OBJECT       *Op,
    168       1.1.1.3  christos     ACPI_STATUS             Status);
    169       1.1.1.3  christos 
    170       1.1.1.3  christos 
    171       1.1.1.3  christos /*
    172       1.1.1.3  christos  * psopinfo - AML Opcode information
    173           1.1    jruoho  */
    174           1.1    jruoho const ACPI_OPCODE_INFO *
    175           1.1    jruoho AcpiPsGetOpcodeInfo (
    176           1.1    jruoho     UINT16                  Opcode);
    177           1.1    jruoho 
    178       1.1.1.8  christos const char *
    179           1.1    jruoho AcpiPsGetOpcodeName (
    180           1.1    jruoho     UINT16                  Opcode);
    181           1.1    jruoho 
    182           1.1    jruoho UINT8
    183           1.1    jruoho AcpiPsGetArgumentCount (
    184           1.1    jruoho     UINT32                  OpType);
    185           1.1    jruoho 
    186           1.1    jruoho 
    187           1.1    jruoho /*
    188           1.1    jruoho  * psparse - top level parsing routines
    189           1.1    jruoho  */
    190           1.1    jruoho ACPI_STATUS
    191           1.1    jruoho AcpiPsParseAml (
    192           1.1    jruoho     ACPI_WALK_STATE         *WalkState);
    193           1.1    jruoho 
    194           1.1    jruoho UINT32
    195           1.1    jruoho AcpiPsGetOpcodeSize (
    196           1.1    jruoho     UINT32                  Opcode);
    197           1.1    jruoho 
    198           1.1    jruoho UINT16
    199           1.1    jruoho AcpiPsPeekOpcode (
    200           1.1    jruoho     ACPI_PARSE_STATE        *state);
    201           1.1    jruoho 
    202           1.1    jruoho ACPI_STATUS
    203           1.1    jruoho AcpiPsCompleteThisOp (
    204           1.1    jruoho     ACPI_WALK_STATE         *WalkState,
    205           1.1    jruoho     ACPI_PARSE_OBJECT       *Op);
    206           1.1    jruoho 
    207           1.1    jruoho ACPI_STATUS
    208           1.1    jruoho AcpiPsNextParseState (
    209           1.1    jruoho     ACPI_WALK_STATE         *WalkState,
    210           1.1    jruoho     ACPI_PARSE_OBJECT       *Op,
    211           1.1    jruoho     ACPI_STATUS             CallbackStatus);
    212           1.1    jruoho 
    213           1.1    jruoho 
    214           1.1    jruoho /*
    215           1.1    jruoho  * psloop - main parse loop
    216           1.1    jruoho  */
    217           1.1    jruoho ACPI_STATUS
    218           1.1    jruoho AcpiPsParseLoop (
    219           1.1    jruoho     ACPI_WALK_STATE         *WalkState);
    220           1.1    jruoho 
    221           1.1    jruoho 
    222           1.1    jruoho /*
    223           1.1    jruoho  * psscope - Scope stack management routines
    224           1.1    jruoho  */
    225           1.1    jruoho ACPI_STATUS
    226           1.1    jruoho AcpiPsInitScope (
    227           1.1    jruoho     ACPI_PARSE_STATE        *ParserState,
    228           1.1    jruoho     ACPI_PARSE_OBJECT       *Root);
    229           1.1    jruoho 
    230           1.1    jruoho ACPI_PARSE_OBJECT *
    231           1.1    jruoho AcpiPsGetParentScope (
    232           1.1    jruoho     ACPI_PARSE_STATE        *state);
    233           1.1    jruoho 
    234           1.1    jruoho BOOLEAN
    235           1.1    jruoho AcpiPsHasCompletedScope (
    236           1.1    jruoho     ACPI_PARSE_STATE        *ParserState);
    237           1.1    jruoho 
    238           1.1    jruoho void
    239           1.1    jruoho AcpiPsPopScope (
    240           1.1    jruoho     ACPI_PARSE_STATE        *ParserState,
    241           1.1    jruoho     ACPI_PARSE_OBJECT       **Op,
    242           1.1    jruoho     UINT32                  *ArgList,
    243           1.1    jruoho     UINT32                  *ArgCount);
    244           1.1    jruoho 
    245           1.1    jruoho ACPI_STATUS
    246           1.1    jruoho AcpiPsPushScope (
    247           1.1    jruoho     ACPI_PARSE_STATE        *ParserState,
    248           1.1    jruoho     ACPI_PARSE_OBJECT       *Op,
    249           1.1    jruoho     UINT32                  RemainingArgs,
    250           1.1    jruoho     UINT32                  ArgCount);
    251           1.1    jruoho 
    252           1.1    jruoho void
    253           1.1    jruoho AcpiPsCleanupScope (
    254           1.1    jruoho     ACPI_PARSE_STATE        *state);
    255           1.1    jruoho 
    256           1.1    jruoho 
    257           1.1    jruoho /*
    258           1.1    jruoho  * pstree - parse tree manipulation routines
    259           1.1    jruoho  */
    260           1.1    jruoho void
    261           1.1    jruoho AcpiPsAppendArg(
    262           1.1    jruoho     ACPI_PARSE_OBJECT       *op,
    263           1.1    jruoho     ACPI_PARSE_OBJECT       *arg);
    264           1.1    jruoho 
    265           1.1    jruoho ACPI_PARSE_OBJECT*
    266           1.1    jruoho AcpiPsFind (
    267           1.1    jruoho     ACPI_PARSE_OBJECT       *Scope,
    268           1.1    jruoho     char                    *Path,
    269           1.1    jruoho     UINT16                  Opcode,
    270           1.1    jruoho     UINT32                  Create);
    271           1.1    jruoho 
    272           1.1    jruoho ACPI_PARSE_OBJECT *
    273           1.1    jruoho AcpiPsGetArg(
    274           1.1    jruoho     ACPI_PARSE_OBJECT       *op,
    275           1.1    jruoho     UINT32                   argn);
    276           1.1    jruoho 
    277           1.1    jruoho ACPI_PARSE_OBJECT *
    278           1.1    jruoho AcpiPsGetDepthNext (
    279           1.1    jruoho     ACPI_PARSE_OBJECT       *Origin,
    280           1.1    jruoho     ACPI_PARSE_OBJECT       *Op);
    281           1.1    jruoho 
    282           1.1    jruoho 
    283           1.1    jruoho /*
    284           1.1    jruoho  * pswalk - parse tree walk routines
    285           1.1    jruoho  */
    286           1.1    jruoho ACPI_STATUS
    287           1.1    jruoho AcpiPsWalkParsedAml (
    288           1.1    jruoho     ACPI_PARSE_OBJECT       *StartOp,
    289           1.1    jruoho     ACPI_PARSE_OBJECT       *EndOp,
    290           1.1    jruoho     ACPI_OPERAND_OBJECT     *MthDesc,
    291           1.1    jruoho     ACPI_NAMESPACE_NODE     *StartNode,
    292           1.1    jruoho     ACPI_OPERAND_OBJECT     **Params,
    293           1.1    jruoho     ACPI_OPERAND_OBJECT     **CallerReturnDesc,
    294           1.1    jruoho     ACPI_OWNER_ID           OwnerId,
    295           1.1    jruoho     ACPI_PARSE_DOWNWARDS    DescendingCallback,
    296           1.1    jruoho     ACPI_PARSE_UPWARDS      AscendingCallback);
    297           1.1    jruoho 
    298           1.1    jruoho ACPI_STATUS
    299           1.1    jruoho AcpiPsGetNextWalkOp (
    300           1.1    jruoho     ACPI_WALK_STATE         *WalkState,
    301           1.1    jruoho     ACPI_PARSE_OBJECT       *Op,
    302           1.1    jruoho     ACPI_PARSE_UPWARDS      AscendingCallback);
    303           1.1    jruoho 
    304           1.1    jruoho ACPI_STATUS
    305           1.1    jruoho AcpiPsDeleteCompletedOp (
    306           1.1    jruoho     ACPI_WALK_STATE         *WalkState);
    307           1.1    jruoho 
    308           1.1    jruoho void
    309           1.1    jruoho AcpiPsDeleteParseTree (
    310           1.1    jruoho     ACPI_PARSE_OBJECT       *root);
    311           1.1    jruoho 
    312           1.1    jruoho 
    313           1.1    jruoho /*
    314           1.1    jruoho  * psutils - parser utilities
    315           1.1    jruoho  */
    316           1.1    jruoho ACPI_PARSE_OBJECT *
    317           1.1    jruoho AcpiPsCreateScopeOp (
    318       1.1.1.6  christos     UINT8                   *Aml);
    319           1.1    jruoho 
    320           1.1    jruoho void
    321           1.1    jruoho AcpiPsInitOp (
    322           1.1    jruoho     ACPI_PARSE_OBJECT       *op,
    323           1.1    jruoho     UINT16                  opcode);
    324           1.1    jruoho 
    325           1.1    jruoho ACPI_PARSE_OBJECT *
    326           1.1    jruoho AcpiPsAllocOp (
    327       1.1.1.6  christos     UINT16                  Opcode,
    328       1.1.1.6  christos     UINT8                   *Aml);
    329           1.1    jruoho 
    330           1.1    jruoho void
    331           1.1    jruoho AcpiPsFreeOp (
    332           1.1    jruoho     ACPI_PARSE_OBJECT       *Op);
    333           1.1    jruoho 
    334           1.1    jruoho BOOLEAN
    335           1.1    jruoho AcpiPsIsLeadingChar (
    336           1.1    jruoho     UINT32                  c);
    337           1.1    jruoho 
    338           1.1    jruoho UINT32
    339           1.1    jruoho AcpiPsGetName(
    340           1.1    jruoho     ACPI_PARSE_OBJECT       *op);
    341           1.1    jruoho 
    342           1.1    jruoho void
    343           1.1    jruoho AcpiPsSetName(
    344           1.1    jruoho     ACPI_PARSE_OBJECT       *op,
    345           1.1    jruoho     UINT32                  name);
    346           1.1    jruoho 
    347           1.1    jruoho 
    348           1.1    jruoho /*
    349           1.1    jruoho  * psdump - display parser tree
    350           1.1    jruoho  */
    351           1.1    jruoho UINT32
    352           1.1    jruoho AcpiPsSprintPath (
    353           1.1    jruoho     char                    *BufferStart,
    354           1.1    jruoho     UINT32                  BufferSize,
    355           1.1    jruoho     ACPI_PARSE_OBJECT       *Op);
    356           1.1    jruoho 
    357           1.1    jruoho UINT32
    358           1.1    jruoho AcpiPsSprintOp (
    359           1.1    jruoho     char                    *BufferStart,
    360           1.1    jruoho     UINT32                  BufferSize,
    361           1.1    jruoho     ACPI_PARSE_OBJECT       *Op);
    362           1.1    jruoho 
    363           1.1    jruoho void
    364           1.1    jruoho AcpiPsShow (
    365           1.1    jruoho     ACPI_PARSE_OBJECT       *op);
    366           1.1    jruoho 
    367           1.1    jruoho 
    368           1.1    jruoho #endif /* __ACPARSER_H__ */
    369