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