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