acnamesp.h revision 249112
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 298void 299AcpiNsCheckParameterCount ( 300 char *Pathname, 301 ACPI_NAMESPACE_NODE *Node, 302 UINT32 UserParamCount, 303 const ACPI_PREDEFINED_INFO *Info); 304 305ACPI_STATUS 306AcpiNsCheckObjectType ( 307 ACPI_PREDEFINED_DATA *Data, 308 ACPI_OPERAND_OBJECT **ReturnObjectPtr, 309 UINT32 ExpectedBtypes, 310 UINT32 PackageIndex); 311 312 313/* 314 * nsprepkg - Validation of predefined name packages 315 */ 316ACPI_STATUS 317AcpiNsCheckPackage ( 318 ACPI_PREDEFINED_DATA *Data, 319 ACPI_OPERAND_OBJECT **ReturnObjectPtr); 320 321 322/* 323 * nsnames - Name and Scope manipulation 324 */ 325UINT32 326AcpiNsOpensScope ( 327 ACPI_OBJECT_TYPE Type); 328 329ACPI_STATUS 330AcpiNsBuildExternalPath ( 331 ACPI_NAMESPACE_NODE *Node, 332 ACPI_SIZE Size, 333 char *NameBuffer); 334 335char * 336AcpiNsGetExternalPathname ( 337 ACPI_NAMESPACE_NODE *Node); 338 339char * 340AcpiNsNameOfCurrentScope ( 341 ACPI_WALK_STATE *WalkState); 342 343ACPI_STATUS 344AcpiNsHandleToPathname ( 345 ACPI_HANDLE TargetHandle, 346 ACPI_BUFFER *Buffer); 347 348BOOLEAN 349AcpiNsPatternMatch ( 350 ACPI_NAMESPACE_NODE *ObjNode, 351 char *SearchFor); 352 353ACPI_STATUS 354AcpiNsGetNode ( 355 ACPI_NAMESPACE_NODE *PrefixNode, 356 const char *ExternalPathname, 357 UINT32 Flags, 358 ACPI_NAMESPACE_NODE **OutNode); 359 360ACPI_SIZE 361AcpiNsGetPathnameLength ( 362 ACPI_NAMESPACE_NODE *Node); 363 364 365/* 366 * nsobject - Object management for namespace nodes 367 */ 368ACPI_STATUS 369AcpiNsAttachObject ( 370 ACPI_NAMESPACE_NODE *Node, 371 ACPI_OPERAND_OBJECT *Object, 372 ACPI_OBJECT_TYPE Type); 373 374ACPI_OPERAND_OBJECT * 375AcpiNsGetAttachedObject ( 376 ACPI_NAMESPACE_NODE *Node); 377 378ACPI_OPERAND_OBJECT * 379AcpiNsGetSecondaryObject ( 380 ACPI_OPERAND_OBJECT *ObjDesc); 381 382ACPI_STATUS 383AcpiNsAttachData ( 384 ACPI_NAMESPACE_NODE *Node, 385 ACPI_OBJECT_HANDLER Handler, 386 void *Data); 387 388ACPI_STATUS 389AcpiNsDetachData ( 390 ACPI_NAMESPACE_NODE *Node, 391 ACPI_OBJECT_HANDLER Handler); 392 393ACPI_STATUS 394AcpiNsGetAttachedData ( 395 ACPI_NAMESPACE_NODE *Node, 396 ACPI_OBJECT_HANDLER Handler, 397 void **Data); 398 399 400/* 401 * nsrepair - General return object repair for all 402 * predefined methods/objects 403 */ 404ACPI_STATUS 405AcpiNsSimpleRepair ( 406 ACPI_PREDEFINED_DATA *Data, 407 UINT32 ExpectedBtypes, 408 UINT32 PackageIndex, 409 ACPI_OPERAND_OBJECT **ReturnObjectPtr); 410 411ACPI_STATUS 412AcpiNsWrapWithPackage ( 413 ACPI_PREDEFINED_DATA *Data, 414 ACPI_OPERAND_OBJECT *OriginalObject, 415 ACPI_OPERAND_OBJECT **ObjDescPtr); 416 417ACPI_STATUS 418AcpiNsRepairNullElement ( 419 ACPI_PREDEFINED_DATA *Data, 420 UINT32 ExpectedBtypes, 421 UINT32 PackageIndex, 422 ACPI_OPERAND_OBJECT **ReturnObjectPtr); 423 424void 425AcpiNsRemoveNullElements ( 426 ACPI_PREDEFINED_DATA *Data, 427 UINT8 PackageType, 428 ACPI_OPERAND_OBJECT *ObjDesc); 429 430 431/* 432 * nsrepair2 - Return object repair for specific 433 * predefined methods/objects 434 */ 435ACPI_STATUS 436AcpiNsComplexRepairs ( 437 ACPI_PREDEFINED_DATA *Data, 438 ACPI_NAMESPACE_NODE *Node, 439 ACPI_STATUS ValidateStatus, 440 ACPI_OPERAND_OBJECT **ReturnObjectPtr); 441 442 443/* 444 * nssearch - Namespace searching and entry 445 */ 446ACPI_STATUS 447AcpiNsSearchAndEnter ( 448 UINT32 EntryName, 449 ACPI_WALK_STATE *WalkState, 450 ACPI_NAMESPACE_NODE *Node, 451 ACPI_INTERPRETER_MODE InterpreterMode, 452 ACPI_OBJECT_TYPE Type, 453 UINT32 Flags, 454 ACPI_NAMESPACE_NODE **RetNode); 455 456ACPI_STATUS 457AcpiNsSearchOneScope ( 458 UINT32 EntryName, 459 ACPI_NAMESPACE_NODE *Node, 460 ACPI_OBJECT_TYPE Type, 461 ACPI_NAMESPACE_NODE **RetNode); 462 463void 464AcpiNsInstallNode ( 465 ACPI_WALK_STATE *WalkState, 466 ACPI_NAMESPACE_NODE *ParentNode, 467 ACPI_NAMESPACE_NODE *Node, 468 ACPI_OBJECT_TYPE Type); 469 470 471/* 472 * nsutils - Utility functions 473 */ 474ACPI_OBJECT_TYPE 475AcpiNsGetType ( 476 ACPI_NAMESPACE_NODE *Node); 477 478UINT32 479AcpiNsLocal ( 480 ACPI_OBJECT_TYPE Type); 481 482void 483AcpiNsPrintNodePathname ( 484 ACPI_NAMESPACE_NODE *Node, 485 const char *Msg); 486 487ACPI_STATUS 488AcpiNsBuildInternalName ( 489 ACPI_NAMESTRING_INFO *Info); 490 491void 492AcpiNsGetInternalNameLength ( 493 ACPI_NAMESTRING_INFO *Info); 494 495ACPI_STATUS 496AcpiNsInternalizeName ( 497 const char *DottedName, 498 char **ConvertedName); 499 500ACPI_STATUS 501AcpiNsExternalizeName ( 502 UINT32 InternalNameLength, 503 const char *InternalName, 504 UINT32 *ConvertedNameLength, 505 char **ConvertedName); 506 507ACPI_NAMESPACE_NODE * 508AcpiNsValidateHandle ( 509 ACPI_HANDLE Handle); 510 511void 512AcpiNsTerminate ( 513 void); 514 515#endif /* __ACNAMESP_H__ */ 516