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 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