acnamesp.h revision 217365
1270631Sjfv/****************************************************************************** 2270631Sjfv * 3270631Sjfv * Name: acnamesp.h - Namespace subcomponent prototypes and defines 4270631Sjfv * 5270631Sjfv *****************************************************************************/ 6270631Sjfv 7270631Sjfv/* 8270631Sjfv * Copyright (C) 2000 - 2011, Intel Corp. 9270631Sjfv * All rights reserved. 10270631Sjfv * 11270631Sjfv * Redistribution and use in source and binary forms, with or without 12270631Sjfv * modification, are permitted provided that the following conditions 13270631Sjfv * are met: 14270631Sjfv * 1. Redistributions of source code must retain the above copyright 15270631Sjfv * notice, this list of conditions, and the following disclaimer, 16270631Sjfv * without modification. 17270631Sjfv * 2. Redistributions in binary form must reproduce at minimum a disclaimer 18270631Sjfv * substantially similar to the "NO WARRANTY" disclaimer below 19270631Sjfv * ("Disclaimer") and any redistribution must be conditioned upon 20270631Sjfv * including a substantially similar Disclaimer requirement for further 21270631Sjfv * binary redistribution. 22270631Sjfv * 3. Neither the names of the above-listed copyright holders nor the names 23270631Sjfv * of any contributors may be used to endorse or promote products derived 24270631Sjfv * from this software without specific prior written permission. 25270631Sjfv * 26270631Sjfv * Alternatively, this software may be distributed under the terms of the 27270631Sjfv * GNU General Public License ("GPL") version 2 as published by the Free 28270631Sjfv * Software Foundation. 29270631Sjfv * 30270631Sjfv * NO WARRANTY 31270631Sjfv * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32270631Sjfv * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33270631Sjfv * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 34270631Sjfv * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35270631Sjfv * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 36270631Sjfv * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 37270631Sjfv * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 38270631Sjfv * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 39270631Sjfv * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 40270631Sjfv * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 41270631Sjfv * POSSIBILITY OF SUCH DAMAGES. 42270631Sjfv */ 43270631Sjfv 44270631Sjfv#ifndef __ACNAMESP_H__ 45270631Sjfv#define __ACNAMESP_H__ 46270631Sjfv 47270631Sjfv 48270631Sjfv/* To search the entire name space, pass this as SearchBase */ 49270631Sjfv 50270919Sjfv#define ACPI_NS_ALL ((ACPI_HANDLE)0) 51270631Sjfv 52270631Sjfv/* 53270919Sjfv * Elements of AcpiNsProperties are bit significant 54270631Sjfv * and should be one-to-one with values of ACPI_OBJECT_TYPE 55270631Sjfv */ 56270631Sjfv#define ACPI_NS_NORMAL 0 57270631Sjfv#define ACPI_NS_NEWSCOPE 1 /* a definition of this type opens a name scope */ 58270631Sjfv#define ACPI_NS_LOCAL 2 /* suppress search of enclosing scopes */ 59270631Sjfv 60270631Sjfv/* Flags for AcpiNsLookup, AcpiNsSearchAndEnter */ 61270631Sjfv 62270631Sjfv#define ACPI_NS_NO_UPSEARCH 0 63270631Sjfv#define ACPI_NS_SEARCH_PARENT 0x01 64270631Sjfv#define ACPI_NS_DONT_OPEN_SCOPE 0x02 65270631Sjfv#define ACPI_NS_NO_PEER_SEARCH 0x04 66270631Sjfv#define ACPI_NS_ERROR_IF_FOUND 0x08 67270631Sjfv#define ACPI_NS_PREFIX_IS_SCOPE 0x10 68270631Sjfv#define ACPI_NS_EXTERNAL 0x20 69270631Sjfv#define ACPI_NS_TEMPORARY 0x40 70270631Sjfv 71270631Sjfv/* Flags for AcpiNsWalkNamespace */ 72270631Sjfv 73270631Sjfv#define ACPI_NS_WALK_NO_UNLOCK 0 74270631Sjfv#define ACPI_NS_WALK_UNLOCK 0x01 75270631Sjfv#define ACPI_NS_WALK_TEMP_NODES 0x02 76270631Sjfv 77270631Sjfv/* Object is not a package element */ 78270631Sjfv 79270631Sjfv#define ACPI_NOT_PACKAGE_ELEMENT ACPI_UINT32_MAX 80270631Sjfv 81270631Sjfv/* Always emit warning message, not dependent on node flags */ 82270631Sjfv 83270631Sjfv#define ACPI_WARN_ALWAYS 0 84270631Sjfv 85270631Sjfv 86270631Sjfv/* 87270631Sjfv * nsinit - Namespace initialization 88270631Sjfv */ 89270631SjfvACPI_STATUS 90270631SjfvAcpiNsInitializeObjects ( 91270631Sjfv void); 92270631Sjfv 93270631SjfvACPI_STATUS 94270631SjfvAcpiNsInitializeDevices ( 95270631Sjfv void); 96270631Sjfv 97270631Sjfv 98270631Sjfv/* 99270631Sjfv * nsload - Namespace loading 100270631Sjfv */ 101270631SjfvACPI_STATUS 102270631SjfvAcpiNsLoadNamespace ( 103270631Sjfv void); 104270631Sjfv 105270631SjfvACPI_STATUS 106270631SjfvAcpiNsLoadTable ( 107270631Sjfv UINT32 TableIndex, 108270631Sjfv ACPI_NAMESPACE_NODE *Node); 109270631Sjfv 110270631Sjfv 111270631Sjfv/* 112270631Sjfv * nswalk - walk the namespace 113270631Sjfv */ 114270631SjfvACPI_STATUS 115270631SjfvAcpiNsWalkNamespace ( 116270631Sjfv ACPI_OBJECT_TYPE Type, 117270631Sjfv ACPI_HANDLE StartObject, 118270631Sjfv UINT32 MaxDepth, 119270631Sjfv UINT32 Flags, 120270631Sjfv ACPI_WALK_CALLBACK PreOrderVisit, 121270631Sjfv ACPI_WALK_CALLBACK PostOrderVisit, 122270631Sjfv void *Context, 123270631Sjfv void **ReturnValue); 124270631Sjfv 125270631SjfvACPI_NAMESPACE_NODE * 126270631SjfvAcpiNsGetNextNode ( 127270631Sjfv ACPI_NAMESPACE_NODE *Parent, 128270631Sjfv ACPI_NAMESPACE_NODE *Child); 129270631Sjfv 130270631SjfvACPI_NAMESPACE_NODE * 131270631SjfvAcpiNsGetNextNodeTyped ( 132270631Sjfv ACPI_OBJECT_TYPE Type, 133270631Sjfv ACPI_NAMESPACE_NODE *Parent, 134270631Sjfv ACPI_NAMESPACE_NODE *Child); 135270631Sjfv 136270631Sjfv/* 137270631Sjfv * nsparse - table parsing 138270631Sjfv */ 139270631SjfvACPI_STATUS 140270631SjfvAcpiNsParseTable ( 141270631Sjfv UINT32 TableIndex, 142270631Sjfv ACPI_NAMESPACE_NODE *StartNode); 143270631Sjfv 144270631SjfvACPI_STATUS 145270631SjfvAcpiNsOneCompleteParse ( 146270631Sjfv UINT32 PassNumber, 147270631Sjfv UINT32 TableIndex, 148270631Sjfv ACPI_NAMESPACE_NODE *StartNode); 149270631Sjfv 150270631Sjfv 151270631Sjfv/* 152270631Sjfv * nsaccess - Top-level namespace access 153270631Sjfv */ 154270631SjfvACPI_STATUS 155270631SjfvAcpiNsRootInitialize ( 156270631Sjfv void); 157270631Sjfv 158270631SjfvACPI_STATUS 159270631SjfvAcpiNsLookup ( 160270631Sjfv ACPI_GENERIC_STATE *ScopeInfo, 161270631Sjfv char *Name, 162270631Sjfv ACPI_OBJECT_TYPE Type, 163270631Sjfv ACPI_INTERPRETER_MODE InterpreterMode, 164270631Sjfv UINT32 Flags, 165274367Sjfv ACPI_WALK_STATE *WalkState, 166274367Sjfv ACPI_NAMESPACE_NODE **RetNode); 167274367Sjfv 168270631Sjfv 169270631Sjfv/* 170270631Sjfv * nsalloc - Named object allocation/deallocation 171270631Sjfv */ 172270631SjfvACPI_NAMESPACE_NODE * 173270631SjfvAcpiNsCreateNode ( 174270631Sjfv UINT32 Name); 175270631Sjfv 176270631Sjfvvoid 177270631SjfvAcpiNsDeleteNode ( 178270631Sjfv ACPI_NAMESPACE_NODE *Node); 179270631Sjfv 180270631Sjfvvoid 181270631SjfvAcpiNsRemoveNode ( 182270631Sjfv ACPI_NAMESPACE_NODE *Node); 183270631Sjfv 184270631Sjfvvoid 185270631SjfvAcpiNsDeleteNamespaceSubtree ( 186270631Sjfv ACPI_NAMESPACE_NODE *ParentHandle); 187270631Sjfv 188270631Sjfvvoid 189270631SjfvAcpiNsDeleteNamespaceByOwner ( 190270631Sjfv ACPI_OWNER_ID OwnerId); 191270631Sjfv 192270631Sjfvvoid 193270631SjfvAcpiNsDetachObject ( 194270631Sjfv ACPI_NAMESPACE_NODE *Node); 195270631Sjfv 196270631Sjfvvoid 197270631SjfvAcpiNsDeleteChildren ( 198270631Sjfv ACPI_NAMESPACE_NODE *Parent); 199274367Sjfv 200270631Sjfvint 201270631SjfvAcpiNsCompareNames ( 202270631Sjfv char *Name1, 203270631Sjfv char *Name2); 204270631Sjfv 205270631Sjfv 206270631Sjfv/* 207270631Sjfv * nsdump - Namespace dump/print utilities 208270631Sjfv */ 209270631Sjfvvoid 210270631SjfvAcpiNsDumpTables ( 211270631Sjfv ACPI_HANDLE SearchBase, 212270631Sjfv UINT32 MaxDepth); 213274367Sjfv 214270631Sjfvvoid 215270631SjfvAcpiNsDumpEntry ( 216270631Sjfv ACPI_HANDLE Handle, 217270631Sjfv UINT32 DebugLevel); 218270631Sjfv 219270631Sjfvvoid 220270631SjfvAcpiNsDumpPathname ( 221270631Sjfv ACPI_HANDLE Handle, 222270631Sjfv char *Msg, 223270631Sjfv UINT32 Level, 224270631Sjfv UINT32 Component); 225270631Sjfv 226270631Sjfvvoid 227270631SjfvAcpiNsPrintPathname ( 228270631Sjfv UINT32 NumSegments, 229270631Sjfv char *Pathname); 230270631Sjfv 231270631SjfvACPI_STATUS 232270631SjfvAcpiNsDumpOneObject ( 233270631Sjfv ACPI_HANDLE ObjHandle, 234270631Sjfv UINT32 Level, 235270631Sjfv void *Context, 236270631Sjfv void **ReturnValue); 237270631Sjfv 238270631Sjfvvoid 239270631SjfvAcpiNsDumpObjects ( 240270631Sjfv ACPI_OBJECT_TYPE Type, 241270631Sjfv UINT8 DisplayType, 242270631Sjfv UINT32 MaxDepth, 243270631Sjfv ACPI_OWNER_ID OwnerId, 244270631Sjfv ACPI_HANDLE StartHandle); 245270631Sjfv 246270631Sjfv 247270631Sjfv/* 248270631Sjfv * nseval - Namespace evaluation functions 249270631Sjfv */ 250270631SjfvACPI_STATUS 251270631SjfvAcpiNsEvaluate ( 252270631Sjfv ACPI_EVALUATE_INFO *Info); 253270631Sjfv 254270631Sjfvvoid 255270631SjfvAcpiNsExecModuleCodeList ( 256270631Sjfv void); 257270631Sjfv 258270631Sjfv 259270631Sjfv/* 260270631Sjfv * nspredef - Support for predefined/reserved names 261270631Sjfv */ 262270631SjfvACPI_STATUS 263270631SjfvAcpiNsCheckPredefinedNames ( 264270631Sjfv ACPI_NAMESPACE_NODE *Node, 265270631Sjfv UINT32 UserParamCount, 266270631Sjfv ACPI_STATUS ReturnStatus, 267270631Sjfv ACPI_OPERAND_OBJECT **ReturnObject); 268270631Sjfv 269274367Sjfvconst ACPI_PREDEFINED_INFO * 270274367SjfvAcpiNsCheckForPredefinedName ( 271274367Sjfv ACPI_NAMESPACE_NODE *Node); 272274367Sjfv 273274367Sjfvvoid 274274367SjfvAcpiNsCheckParameterCount ( 275274367Sjfv char *Pathname, 276274367Sjfv ACPI_NAMESPACE_NODE *Node, 277274367Sjfv UINT32 UserParamCount, 278274367Sjfv const ACPI_PREDEFINED_INFO *Info); 279274367Sjfv 280274367Sjfv 281274367Sjfv/* 282274367Sjfv * nsnames - Name and Scope manipulation 283274367Sjfv */ 284274367SjfvUINT32 285274367SjfvAcpiNsOpensScope ( 286274367Sjfv ACPI_OBJECT_TYPE Type); 287274367Sjfv 288274367SjfvACPI_STATUS 289274367SjfvAcpiNsBuildExternalPath ( 290274367Sjfv ACPI_NAMESPACE_NODE *Node, 291274367Sjfv ACPI_SIZE Size, 292274367Sjfv char *NameBuffer); 293274367Sjfv 294274367Sjfvchar * 295274367SjfvAcpiNsGetExternalPathname ( 296274367Sjfv ACPI_NAMESPACE_NODE *Node); 297270631Sjfv 298270631Sjfvchar * 299270631SjfvAcpiNsNameOfCurrentScope ( 300270631Sjfv ACPI_WALK_STATE *WalkState); 301270631Sjfv 302270631SjfvACPI_STATUS 303270631SjfvAcpiNsHandleToPathname ( 304270631Sjfv ACPI_HANDLE TargetHandle, 305270631Sjfv ACPI_BUFFER *Buffer); 306270631Sjfv 307270631SjfvBOOLEAN 308270631SjfvAcpiNsPatternMatch ( 309270631Sjfv ACPI_NAMESPACE_NODE *ObjNode, 310270631Sjfv char *SearchFor); 311270631Sjfv 312270631SjfvACPI_STATUS 313270631SjfvAcpiNsGetNode ( 314270631Sjfv ACPI_NAMESPACE_NODE *PrefixNode, 315270631Sjfv const char *ExternalPathname, 316270631Sjfv UINT32 Flags, 317270631Sjfv ACPI_NAMESPACE_NODE **OutNode); 318270631Sjfv 319270631SjfvACPI_SIZE 320270631SjfvAcpiNsGetPathnameLength ( 321270631Sjfv ACPI_NAMESPACE_NODE *Node); 322270631Sjfv 323270631Sjfv 324270631Sjfv/* 325270631Sjfv * nsobject - Object management for namespace nodes 326270631Sjfv */ 327270631SjfvACPI_STATUS 328270631SjfvAcpiNsAttachObject ( 329270631Sjfv ACPI_NAMESPACE_NODE *Node, 330270631Sjfv ACPI_OPERAND_OBJECT *Object, 331270631Sjfv ACPI_OBJECT_TYPE Type); 332270631Sjfv 333270631SjfvACPI_OPERAND_OBJECT * 334270631SjfvAcpiNsGetAttachedObject ( 335270631Sjfv ACPI_NAMESPACE_NODE *Node); 336270631Sjfv 337270631SjfvACPI_OPERAND_OBJECT * 338270631SjfvAcpiNsGetSecondaryObject ( 339270631Sjfv ACPI_OPERAND_OBJECT *ObjDesc); 340270631Sjfv 341270631SjfvACPI_STATUS 342270631SjfvAcpiNsAttachData ( 343270631Sjfv ACPI_NAMESPACE_NODE *Node, 344270631Sjfv ACPI_OBJECT_HANDLER Handler, 345270631Sjfv void *Data); 346270631Sjfv 347270631SjfvACPI_STATUS 348270631SjfvAcpiNsDetachData ( 349270631Sjfv ACPI_NAMESPACE_NODE *Node, 350270631Sjfv ACPI_OBJECT_HANDLER Handler); 351270631Sjfv 352270631SjfvACPI_STATUS 353270631SjfvAcpiNsGetAttachedData ( 354270631Sjfv ACPI_NAMESPACE_NODE *Node, 355270631Sjfv ACPI_OBJECT_HANDLER Handler, 356270631Sjfv void **Data); 357270631Sjfv 358270631Sjfv 359270631Sjfv/* 360270631Sjfv * nsrepair - General return object repair for all 361270631Sjfv * predefined methods/objects 362270631Sjfv */ 363270631SjfvACPI_STATUS 364270631SjfvAcpiNsRepairObject ( 365270631Sjfv ACPI_PREDEFINED_DATA *Data, 366270631Sjfv UINT32 ExpectedBtypes, 367270631Sjfv UINT32 PackageIndex, 368270631Sjfv ACPI_OPERAND_OBJECT **ReturnObjectPtr); 369270631Sjfv 370270631SjfvACPI_STATUS 371270631SjfvAcpiNsRepairPackageList ( 372270631Sjfv ACPI_PREDEFINED_DATA *Data, 373270631Sjfv ACPI_OPERAND_OBJECT **ObjDescPtr); 374270631Sjfv 375270631SjfvACPI_STATUS 376270631SjfvAcpiNsRepairNullElement ( 377270631Sjfv ACPI_PREDEFINED_DATA *Data, 378270631Sjfv UINT32 ExpectedBtypes, 379270631Sjfv UINT32 PackageIndex, 380270631Sjfv ACPI_OPERAND_OBJECT **ReturnObjectPtr); 381270631Sjfv 382270631Sjfvvoid 383270631SjfvAcpiNsRemoveNullElements ( 384270631Sjfv ACPI_PREDEFINED_DATA *Data, 385270631Sjfv UINT8 PackageType, 386270631Sjfv ACPI_OPERAND_OBJECT *ObjDesc); 387270631Sjfv 388270631Sjfv 389270631Sjfv/* 390270631Sjfv * nsrepair2 - Return object repair for specific 391270631Sjfv * predefined methods/objects 392270631Sjfv */ 393270631SjfvACPI_STATUS 394270631SjfvAcpiNsComplexRepairs ( 395270631Sjfv ACPI_PREDEFINED_DATA *Data, 396270631Sjfv ACPI_NAMESPACE_NODE *Node, 397270631Sjfv ACPI_STATUS ValidateStatus, 398270631Sjfv ACPI_OPERAND_OBJECT **ReturnObjectPtr); 399270631Sjfv 400270631Sjfv 401270631Sjfv/* 402270631Sjfv * nssearch - Namespace searching and entry 403270631Sjfv */ 404270631SjfvACPI_STATUS 405270631SjfvAcpiNsSearchAndEnter ( 406270631Sjfv UINT32 EntryName, 407270631Sjfv ACPI_WALK_STATE *WalkState, 408270631Sjfv ACPI_NAMESPACE_NODE *Node, 409270631Sjfv ACPI_INTERPRETER_MODE InterpreterMode, 410270631Sjfv ACPI_OBJECT_TYPE Type, 411270631Sjfv UINT32 Flags, 412270631Sjfv ACPI_NAMESPACE_NODE **RetNode); 413270631Sjfv 414270631SjfvACPI_STATUS 415270631SjfvAcpiNsSearchOneScope ( 416270631Sjfv UINT32 EntryName, 417270631Sjfv ACPI_NAMESPACE_NODE *Node, 418270631Sjfv ACPI_OBJECT_TYPE Type, 419270631Sjfv ACPI_NAMESPACE_NODE **RetNode); 420270631Sjfv 421270631Sjfvvoid 422270631SjfvAcpiNsInstallNode ( 423270631Sjfv ACPI_WALK_STATE *WalkState, 424270631Sjfv ACPI_NAMESPACE_NODE *ParentNode, 425270631Sjfv ACPI_NAMESPACE_NODE *Node, 426270631Sjfv ACPI_OBJECT_TYPE Type); 427270631Sjfv 428270631Sjfv 429270631Sjfv/* 430270631Sjfv * nsutils - Utility functions 431270631Sjfv */ 432270631SjfvBOOLEAN 433270631SjfvAcpiNsValidRootPrefix ( 434270631Sjfv char Prefix); 435270631Sjfv 436270631SjfvACPI_OBJECT_TYPE 437270631SjfvAcpiNsGetType ( 438270631Sjfv ACPI_NAMESPACE_NODE *Node); 439270631Sjfv 440270631SjfvUINT32 441270631SjfvAcpiNsLocal ( 442270631Sjfv ACPI_OBJECT_TYPE Type); 443270631Sjfv 444270631Sjfvvoid 445270631SjfvAcpiNsPrintNodePathname ( 446270631Sjfv ACPI_NAMESPACE_NODE *Node, 447270631Sjfv const char *Msg); 448270631Sjfv 449270631SjfvACPI_STATUS 450270631SjfvAcpiNsBuildInternalName ( 451270631Sjfv ACPI_NAMESTRING_INFO *Info); 452270631Sjfv 453270631Sjfvvoid 454270631SjfvAcpiNsGetInternalNameLength ( 455270631Sjfv ACPI_NAMESTRING_INFO *Info); 456270631Sjfv 457270631SjfvACPI_STATUS 458270631SjfvAcpiNsInternalizeName ( 459270631Sjfv const char *DottedName, 460270631Sjfv char **ConvertedName); 461270631Sjfv 462270631SjfvACPI_STATUS 463270631SjfvAcpiNsExternalizeName ( 464270631Sjfv UINT32 InternalNameLength, 465270631Sjfv const char *InternalName, 466270631Sjfv UINT32 *ConvertedNameLength, 467270631Sjfv char **ConvertedName); 468270631Sjfv 469270631SjfvACPI_NAMESPACE_NODE * 470270631SjfvAcpiNsValidateHandle ( 471270631Sjfv ACPI_HANDLE Handle); 472270631Sjfv 473270631Sjfvvoid 474270631SjfvAcpiNsTerminate ( 475270631Sjfv void); 476270631Sjfv 477270631Sjfv#endif /* __ACNAMESP_H__ */ 478270631Sjfv