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