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