Home | History | Annotate | Line # | Download | only in include
acnamesp.h revision 1.14
      1 /******************************************************************************
      2  *
      3  * Name: acnamesp.h - Namespace subcomponent prototypes and defines
      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 __ACNAMESP_H__
     45 #define __ACNAMESP_H__
     46 
     47 
     48 /* To search the entire name space, pass this as SearchBase */
     49 
     50 #define ACPI_NS_ALL                 ((ACPI_HANDLE)0)
     51 
     52 /*
     53  * Elements of AcpiNsProperties are bit significant
     54  * and should be one-to-one with values of ACPI_OBJECT_TYPE
     55  */
     56 #define ACPI_NS_NORMAL              0
     57 #define ACPI_NS_NEWSCOPE            1   /* a definition of this type opens a name scope */
     58 #define ACPI_NS_LOCAL               2   /* suppress search of enclosing scopes */
     59 
     60 /* Flags for AcpiNsLookup, AcpiNsSearchAndEnter */
     61 
     62 #define ACPI_NS_NO_UPSEARCH         0
     63 #define ACPI_NS_SEARCH_PARENT       0x0001
     64 #define ACPI_NS_DONT_OPEN_SCOPE     0x0002
     65 #define ACPI_NS_NO_PEER_SEARCH      0x0004
     66 #define ACPI_NS_ERROR_IF_FOUND      0x0008
     67 #define ACPI_NS_PREFIX_IS_SCOPE     0x0010
     68 #define ACPI_NS_EXTERNAL            0x0020
     69 #define ACPI_NS_TEMPORARY           0x0040
     70 #define ACPI_NS_OVERRIDE_IF_FOUND   0x0080
     71 #define ACPI_NS_EARLY_INIT          0x0100
     72 
     73 /* Flags for AcpiNsWalkNamespace */
     74 
     75 #define ACPI_NS_WALK_NO_UNLOCK      0
     76 #define ACPI_NS_WALK_UNLOCK         0x01
     77 #define ACPI_NS_WALK_TEMP_NODES     0x02
     78 
     79 /* Object is not a package element */
     80 
     81 #define ACPI_NOT_PACKAGE_ELEMENT    ACPI_UINT32_MAX
     82 #define ACPI_ALL_PACKAGE_ELEMENTS   (ACPI_UINT32_MAX-1)
     83 
     84 /* Always emit warning message, not dependent on node flags */
     85 
     86 #define ACPI_WARN_ALWAYS            0
     87 
     88 
     89 /*
     90  * nsinit - Namespace initialization
     91  */
     92 ACPI_STATUS
     93 AcpiNsInitializeObjects (
     94     void);
     95 
     96 ACPI_STATUS
     97 AcpiNsInitializeDevices (
     98     UINT32                  Flags);
     99 
    100 ACPI_STATUS
    101 AcpiNsInitOnePackage (
    102     ACPI_HANDLE             ObjHandle,
    103     UINT32                  Level,
    104     void                    *Context,
    105     void                    **ReturnValue);
    106 
    107 /*
    108  * nsload -  Namespace loading
    109  */
    110 ACPI_STATUS
    111 AcpiNsLoadNamespace (
    112     void);
    113 
    114 ACPI_STATUS
    115 AcpiNsLoadTable (
    116     UINT32                  TableIndex,
    117     ACPI_NAMESPACE_NODE     *Node);
    118 
    119 
    120 /*
    121  * nswalk - walk the namespace
    122  */
    123 ACPI_STATUS
    124 AcpiNsWalkNamespace (
    125     ACPI_OBJECT_TYPE        Type,
    126     ACPI_HANDLE             StartObject,
    127     UINT32                  MaxDepth,
    128     UINT32                  Flags,
    129     ACPI_WALK_CALLBACK      DescendingCallback,
    130     ACPI_WALK_CALLBACK      AscendingCallback,
    131     void                    *Context,
    132     void                    **ReturnValue);
    133 
    134 ACPI_NAMESPACE_NODE *
    135 AcpiNsGetNextNode (
    136     ACPI_NAMESPACE_NODE     *Parent,
    137     ACPI_NAMESPACE_NODE     *Child);
    138 
    139 ACPI_NAMESPACE_NODE *
    140 AcpiNsGetNextNodeTyped (
    141     ACPI_OBJECT_TYPE        Type,
    142     ACPI_NAMESPACE_NODE     *Parent,
    143     ACPI_NAMESPACE_NODE     *Child);
    144 
    145 /*
    146  * nsparse - table parsing
    147  */
    148 ACPI_STATUS
    149 AcpiNsParseTable (
    150     UINT32                  TableIndex,
    151     ACPI_NAMESPACE_NODE     *StartNode);
    152 
    153 ACPI_STATUS
    154 AcpiNsExecuteTable (
    155     UINT32                  TableIndex,
    156     ACPI_NAMESPACE_NODE     *StartNode);
    157 
    158 ACPI_STATUS
    159 AcpiNsOneCompleteParse (
    160     UINT32                  PassNumber,
    161     UINT32                  TableIndex,
    162     ACPI_NAMESPACE_NODE     *StartNode);
    163 
    164 
    165 /*
    166  * nsaccess - Top-level namespace access
    167  */
    168 ACPI_STATUS
    169 AcpiNsRootInitialize (
    170     void);
    171 
    172 ACPI_STATUS
    173 AcpiNsLookup (
    174     ACPI_GENERIC_STATE      *ScopeInfo,
    175     char                    *Name,
    176     ACPI_OBJECT_TYPE        Type,
    177     ACPI_INTERPRETER_MODE   InterpreterMode,
    178     UINT32                  Flags,
    179     ACPI_WALK_STATE         *WalkState,
    180     ACPI_NAMESPACE_NODE     **RetNode);
    181 
    182 
    183 /*
    184  * nsalloc - Named object allocation/deallocation
    185  */
    186 ACPI_NAMESPACE_NODE *
    187 AcpiNsCreateNode (
    188     UINT32                  Name);
    189 
    190 void
    191 AcpiNsDeleteNode (
    192     ACPI_NAMESPACE_NODE     *Node);
    193 
    194 void
    195 AcpiNsRemoveNode (
    196     ACPI_NAMESPACE_NODE     *Node);
    197 
    198 void
    199 AcpiNsDeleteNamespaceSubtree (
    200     ACPI_NAMESPACE_NODE     *ParentHandle);
    201 
    202 void
    203 AcpiNsDeleteNamespaceByOwner (
    204     ACPI_OWNER_ID           OwnerId);
    205 
    206 void
    207 AcpiNsDetachObject (
    208     ACPI_NAMESPACE_NODE     *Node);
    209 
    210 void
    211 AcpiNsDeleteChildren (
    212     ACPI_NAMESPACE_NODE     *Parent);
    213 
    214 int
    215 AcpiNsCompareNames (
    216     char                    *Name1,
    217     char                    *Name2);
    218 
    219 
    220 /*
    221  * nsconvert - Dynamic object conversion routines
    222  */
    223 ACPI_STATUS
    224 AcpiNsConvertToInteger (
    225     ACPI_OPERAND_OBJECT     *OriginalObject,
    226     ACPI_OPERAND_OBJECT     **ReturnObject);
    227 
    228 ACPI_STATUS
    229 AcpiNsConvertToString (
    230     ACPI_OPERAND_OBJECT     *OriginalObject,
    231     ACPI_OPERAND_OBJECT     **ReturnObject);
    232 
    233 ACPI_STATUS
    234 AcpiNsConvertToBuffer (
    235     ACPI_OPERAND_OBJECT     *OriginalObject,
    236     ACPI_OPERAND_OBJECT     **ReturnObject);
    237 
    238 ACPI_STATUS
    239 AcpiNsConvertToUnicode (
    240     ACPI_NAMESPACE_NODE     *Scope,
    241     ACPI_OPERAND_OBJECT     *OriginalObject,
    242     ACPI_OPERAND_OBJECT     **ReturnObject);
    243 
    244 ACPI_STATUS
    245 AcpiNsConvertToResource (
    246     ACPI_NAMESPACE_NODE     *Scope,
    247     ACPI_OPERAND_OBJECT     *OriginalObject,
    248     ACPI_OPERAND_OBJECT     **ReturnObject);
    249 
    250 ACPI_STATUS
    251 AcpiNsConvertToReference (
    252     ACPI_NAMESPACE_NODE     *Scope,
    253     ACPI_OPERAND_OBJECT     *OriginalObject,
    254     ACPI_OPERAND_OBJECT     **ReturnObject);
    255 
    256 
    257 /*
    258  * nsdump - Namespace dump/print utilities
    259  */
    260 void
    261 AcpiNsDumpTables (
    262     ACPI_HANDLE             SearchBase,
    263     UINT32                  MaxDepth);
    264 
    265 void
    266 AcpiNsDumpEntry (
    267     ACPI_HANDLE             Handle,
    268     UINT32                  DebugLevel);
    269 
    270 void
    271 AcpiNsDumpPathname (
    272     ACPI_HANDLE             Handle,
    273     const char              *Msg,
    274     UINT32                  Level,
    275     UINT32                  Component);
    276 
    277 void
    278 AcpiNsPrintPathname (
    279     UINT32                  NumSegments,
    280     const char              *Pathname);
    281 
    282 ACPI_STATUS
    283 AcpiNsDumpOneObject (
    284     ACPI_HANDLE             ObjHandle,
    285     UINT32                  Level,
    286     void                    *Context,
    287     void                    **ReturnValue);
    288 
    289 void
    290 AcpiNsDumpObjects (
    291     ACPI_OBJECT_TYPE        Type,
    292     UINT8                   DisplayType,
    293     UINT32                  MaxDepth,
    294     ACPI_OWNER_ID           OwnerId,
    295     ACPI_HANDLE             StartHandle);
    296 
    297 void
    298 AcpiNsDumpObjectPaths (
    299     ACPI_OBJECT_TYPE        Type,
    300     UINT8                   DisplayType,
    301     UINT32                  MaxDepth,
    302     ACPI_OWNER_ID           OwnerId,
    303     ACPI_HANDLE             StartHandle);
    304 
    305 
    306 /*
    307  * nseval - Namespace evaluation functions
    308  */
    309 ACPI_STATUS
    310 AcpiNsEvaluate (
    311     ACPI_EVALUATE_INFO      *Info);
    312 
    313 void
    314 AcpiNsExecModuleCodeList (
    315     void);
    316 
    317 
    318 /*
    319  * nsarguments - Argument count/type checking for predefined/reserved names
    320  */
    321 void
    322 AcpiNsCheckArgumentCount (
    323     char                        *Pathname,
    324     ACPI_NAMESPACE_NODE         *Node,
    325     UINT32                      UserParamCount,
    326     const ACPI_PREDEFINED_INFO  *Info);
    327 
    328 void
    329 AcpiNsCheckAcpiCompliance (
    330     char                        *Pathname,
    331     ACPI_NAMESPACE_NODE         *Node,
    332     const ACPI_PREDEFINED_INFO  *Predefined);
    333 
    334 void
    335 AcpiNsCheckArgumentTypes (
    336     ACPI_EVALUATE_INFO          *Info);
    337 
    338 
    339 /*
    340  * nspredef - Return value checking for predefined/reserved names
    341  */
    342 ACPI_STATUS
    343 AcpiNsCheckReturnValue (
    344     ACPI_NAMESPACE_NODE         *Node,
    345     ACPI_EVALUATE_INFO          *Info,
    346     UINT32                      UserParamCount,
    347     ACPI_STATUS                 ReturnStatus,
    348     ACPI_OPERAND_OBJECT         **ReturnObject);
    349 
    350 ACPI_STATUS
    351 AcpiNsCheckObjectType (
    352     ACPI_EVALUATE_INFO          *Info,
    353     ACPI_OPERAND_OBJECT         **ReturnObjectPtr,
    354     UINT32                      ExpectedBtypes,
    355     UINT32                      PackageIndex);
    356 
    357 
    358 /*
    359  * nsprepkg - Validation of predefined name packages
    360  */
    361 ACPI_STATUS
    362 AcpiNsCheckPackage (
    363     ACPI_EVALUATE_INFO          *Info,
    364     ACPI_OPERAND_OBJECT         **ReturnObjectPtr);
    365 
    366 
    367 /*
    368  * nsnames - Name and Scope manipulation
    369  */
    370 UINT32
    371 AcpiNsOpensScope (
    372     ACPI_OBJECT_TYPE        Type);
    373 
    374 char *
    375 AcpiNsGetExternalPathname (
    376     ACPI_NAMESPACE_NODE     *Node);
    377 
    378 UINT32
    379 AcpiNsBuildNormalizedPath (
    380     ACPI_NAMESPACE_NODE     *Node,
    381     char                    *FullPath,
    382     UINT32                  PathSize,
    383     BOOLEAN                 NoTrailing);
    384 
    385 char *
    386 AcpiNsGetNormalizedPathname (
    387     ACPI_NAMESPACE_NODE     *Node,
    388     BOOLEAN                 NoTrailing);
    389 
    390 char *
    391 AcpiNsBuildPrefixedPathname (
    392     ACPI_GENERIC_STATE      *PrefixScope,
    393     const char              *InternalPath);
    394 
    395 char *
    396 AcpiNsNameOfCurrentScope (
    397     ACPI_WALK_STATE         *WalkState);
    398 
    399 ACPI_STATUS
    400 AcpiNsHandleToName (
    401     ACPI_HANDLE             TargetHandle,
    402     ACPI_BUFFER             *Buffer);
    403 
    404 ACPI_STATUS
    405 AcpiNsHandleToPathname (
    406     ACPI_HANDLE             TargetHandle,
    407     ACPI_BUFFER             *Buffer,
    408     BOOLEAN                 NoTrailing);
    409 
    410 BOOLEAN
    411 AcpiNsPatternMatch (
    412     ACPI_NAMESPACE_NODE     *ObjNode,
    413     char                    *SearchFor);
    414 
    415 ACPI_STATUS
    416 AcpiNsGetNodeUnlocked (
    417     ACPI_NAMESPACE_NODE     *PrefixNode,
    418     const char              *ExternalPathname,
    419     UINT32                  Flags,
    420     ACPI_NAMESPACE_NODE     **OutNode);
    421 
    422 ACPI_STATUS
    423 AcpiNsGetNode (
    424     ACPI_NAMESPACE_NODE     *PrefixNode,
    425     const char              *ExternalPathname,
    426     UINT32                  Flags,
    427     ACPI_NAMESPACE_NODE     **OutNode);
    428 
    429 ACPI_SIZE
    430 AcpiNsGetPathnameLength (
    431     ACPI_NAMESPACE_NODE     *Node);
    432 
    433 
    434 /*
    435  * nsobject - Object management for namespace nodes
    436  */
    437 ACPI_STATUS
    438 AcpiNsAttachObject (
    439     ACPI_NAMESPACE_NODE     *Node,
    440     ACPI_OPERAND_OBJECT     *Object,
    441     ACPI_OBJECT_TYPE        Type);
    442 
    443 ACPI_OPERAND_OBJECT *
    444 AcpiNsGetAttachedObject (
    445     ACPI_NAMESPACE_NODE     *Node);
    446 
    447 ACPI_OPERAND_OBJECT *
    448 AcpiNsGetSecondaryObject (
    449     ACPI_OPERAND_OBJECT     *ObjDesc);
    450 
    451 ACPI_STATUS
    452 AcpiNsAttachData (
    453     ACPI_NAMESPACE_NODE     *Node,
    454     ACPI_OBJECT_HANDLER     Handler,
    455     void                    *Data);
    456 
    457 ACPI_STATUS
    458 AcpiNsDetachData (
    459     ACPI_NAMESPACE_NODE     *Node,
    460     ACPI_OBJECT_HANDLER     Handler);
    461 
    462 ACPI_STATUS
    463 AcpiNsGetAttachedData (
    464     ACPI_NAMESPACE_NODE     *Node,
    465     ACPI_OBJECT_HANDLER     Handler,
    466     void                    **Data);
    467 
    468 
    469 /*
    470  * nsrepair - General return object repair for all
    471  * predefined methods/objects
    472  */
    473 ACPI_STATUS
    474 AcpiNsSimpleRepair (
    475     ACPI_EVALUATE_INFO      *Info,
    476     UINT32                  ExpectedBtypes,
    477     UINT32                  PackageIndex,
    478     ACPI_OPERAND_OBJECT     **ReturnObjectPtr);
    479 
    480 ACPI_STATUS
    481 AcpiNsWrapWithPackage (
    482     ACPI_EVALUATE_INFO      *Info,
    483     ACPI_OPERAND_OBJECT     *OriginalObject,
    484     ACPI_OPERAND_OBJECT     **ObjDescPtr);
    485 
    486 ACPI_STATUS
    487 AcpiNsRepairNullElement (
    488     ACPI_EVALUATE_INFO      *Info,
    489     UINT32                  ExpectedBtypes,
    490     UINT32                  PackageIndex,
    491     ACPI_OPERAND_OBJECT     **ReturnObjectPtr);
    492 
    493 void
    494 AcpiNsRemoveNullElements (
    495     ACPI_EVALUATE_INFO      *Info,
    496     UINT8                   PackageType,
    497     ACPI_OPERAND_OBJECT     *ObjDesc);
    498 
    499 
    500 /*
    501  * nsrepair2 - Return object repair for specific
    502  * predefined methods/objects
    503  */
    504 ACPI_STATUS
    505 AcpiNsComplexRepairs (
    506     ACPI_EVALUATE_INFO      *Info,
    507     ACPI_NAMESPACE_NODE     *Node,
    508     ACPI_STATUS             ValidateStatus,
    509     ACPI_OPERAND_OBJECT     **ReturnObjectPtr);
    510 
    511 
    512 /*
    513  * nssearch - Namespace searching and entry
    514  */
    515 ACPI_STATUS
    516 AcpiNsSearchAndEnter (
    517     UINT32                  EntryName,
    518     ACPI_WALK_STATE         *WalkState,
    519     ACPI_NAMESPACE_NODE     *Node,
    520     ACPI_INTERPRETER_MODE   InterpreterMode,
    521     ACPI_OBJECT_TYPE        Type,
    522     UINT32                  Flags,
    523     ACPI_NAMESPACE_NODE     **RetNode);
    524 
    525 ACPI_STATUS
    526 AcpiNsSearchOneScope (
    527     UINT32                  EntryName,
    528     ACPI_NAMESPACE_NODE     *Node,
    529     ACPI_OBJECT_TYPE        Type,
    530     ACPI_NAMESPACE_NODE     **RetNode);
    531 
    532 void
    533 AcpiNsInstallNode (
    534     ACPI_WALK_STATE         *WalkState,
    535     ACPI_NAMESPACE_NODE     *ParentNode,
    536     ACPI_NAMESPACE_NODE     *Node,
    537     ACPI_OBJECT_TYPE        Type);
    538 
    539 
    540 /*
    541  * nsutils - Utility functions
    542  */
    543 ACPI_OBJECT_TYPE
    544 AcpiNsGetType (
    545     ACPI_NAMESPACE_NODE     *Node);
    546 
    547 UINT32
    548 AcpiNsLocal (
    549     ACPI_OBJECT_TYPE        Type);
    550 
    551 void
    552 AcpiNsPrintNodePathname (
    553     ACPI_NAMESPACE_NODE     *Node,
    554     const char              *Msg);
    555 
    556 ACPI_STATUS
    557 AcpiNsBuildInternalName (
    558     ACPI_NAMESTRING_INFO    *Info);
    559 
    560 void
    561 AcpiNsGetInternalNameLength (
    562     ACPI_NAMESTRING_INFO    *Info);
    563 
    564 ACPI_STATUS
    565 AcpiNsInternalizeName (
    566     const char              *DottedName,
    567     char                    **ConvertedName);
    568 
    569 ACPI_STATUS
    570 AcpiNsExternalizeName (
    571     UINT32                  InternalNameLength,
    572     const char              *InternalName,
    573     UINT32                  *ConvertedNameLength,
    574     char                    **ConvertedName);
    575 
    576 ACPI_NAMESPACE_NODE *
    577 AcpiNsValidateHandle (
    578     ACPI_HANDLE             Handle);
    579 
    580 void
    581 AcpiNsTerminate (
    582     void);
    583 
    584 #endif /* __ACNAMESP_H__ */
    585