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 ACPI_STATUS 354 AcpiNsBuildExternalPath ( 355 ACPI_NAMESPACE_NODE *Node, 356 ACPI_SIZE Size, 357 char *NameBuffer); 358 359 char * 360 AcpiNsGetExternalPathname ( 361 ACPI_NAMESPACE_NODE *Node); 362 363 char * 364 AcpiNsNameOfCurrentScope ( 365 ACPI_WALK_STATE *WalkState); 366 367 ACPI_STATUS 368 AcpiNsHandleToPathname ( 369 ACPI_HANDLE TargetHandle, 370 ACPI_BUFFER *Buffer); 371 372 BOOLEAN 373 AcpiNsPatternMatch ( 374 ACPI_NAMESPACE_NODE *ObjNode, 375 char *SearchFor); 376 377 ACPI_STATUS 378 AcpiNsGetNode ( 379 ACPI_NAMESPACE_NODE *PrefixNode, 380 const char *ExternalPathname, 381 UINT32 Flags, 382 ACPI_NAMESPACE_NODE **OutNode); 383 384 ACPI_SIZE 385 AcpiNsGetPathnameLength ( 386 ACPI_NAMESPACE_NODE *Node); 387 388 389 /* 390 * nsobject - Object management for namespace nodes 391 */ 392 ACPI_STATUS 393 AcpiNsAttachObject ( 394 ACPI_NAMESPACE_NODE *Node, 395 ACPI_OPERAND_OBJECT *Object, 396 ACPI_OBJECT_TYPE Type); 397 398 ACPI_OPERAND_OBJECT * 399 AcpiNsGetAttachedObject ( 400 ACPI_NAMESPACE_NODE *Node); 401 402 ACPI_OPERAND_OBJECT * 403 AcpiNsGetSecondaryObject ( 404 ACPI_OPERAND_OBJECT *ObjDesc); 405 406 ACPI_STATUS 407 AcpiNsAttachData ( 408 ACPI_NAMESPACE_NODE *Node, 409 ACPI_OBJECT_HANDLER Handler, 410 void *Data); 411 412 ACPI_STATUS 413 AcpiNsDetachData ( 414 ACPI_NAMESPACE_NODE *Node, 415 ACPI_OBJECT_HANDLER Handler); 416 417 ACPI_STATUS 418 AcpiNsGetAttachedData ( 419 ACPI_NAMESPACE_NODE *Node, 420 ACPI_OBJECT_HANDLER Handler, 421 void **Data); 422 423 424 /* 425 * nsrepair - General return object repair for all 426 * predefined methods/objects 427 */ 428 ACPI_STATUS 429 AcpiNsSimpleRepair ( 430 ACPI_EVALUATE_INFO *Info, 431 UINT32 ExpectedBtypes, 432 UINT32 PackageIndex, 433 ACPI_OPERAND_OBJECT **ReturnObjectPtr); 434 435 ACPI_STATUS 436 AcpiNsWrapWithPackage ( 437 ACPI_EVALUATE_INFO *Info, 438 ACPI_OPERAND_OBJECT *OriginalObject, 439 ACPI_OPERAND_OBJECT **ObjDescPtr); 440 441 ACPI_STATUS 442 AcpiNsRepairNullElement ( 443 ACPI_EVALUATE_INFO *Info, 444 UINT32 ExpectedBtypes, 445 UINT32 PackageIndex, 446 ACPI_OPERAND_OBJECT **ReturnObjectPtr); 447 448 void 449 AcpiNsRemoveNullElements ( 450 ACPI_EVALUATE_INFO *Info, 451 UINT8 PackageType, 452 ACPI_OPERAND_OBJECT *ObjDesc); 453 454 455 /* 456 * nsrepair2 - Return object repair for specific 457 * predefined methods/objects 458 */ 459 ACPI_STATUS 460 AcpiNsComplexRepairs ( 461 ACPI_EVALUATE_INFO *Info, 462 ACPI_NAMESPACE_NODE *Node, 463 ACPI_STATUS ValidateStatus, 464 ACPI_OPERAND_OBJECT **ReturnObjectPtr); 465 466 467 /* 468 * nssearch - Namespace searching and entry 469 */ 470 ACPI_STATUS 471 AcpiNsSearchAndEnter ( 472 UINT32 EntryName, 473 ACPI_WALK_STATE *WalkState, 474 ACPI_NAMESPACE_NODE *Node, 475 ACPI_INTERPRETER_MODE InterpreterMode, 476 ACPI_OBJECT_TYPE Type, 477 UINT32 Flags, 478 ACPI_NAMESPACE_NODE **RetNode); 479 480 ACPI_STATUS 481 AcpiNsSearchOneScope ( 482 UINT32 EntryName, 483 ACPI_NAMESPACE_NODE *Node, 484 ACPI_OBJECT_TYPE Type, 485 ACPI_NAMESPACE_NODE **RetNode); 486 487 void 488 AcpiNsInstallNode ( 489 ACPI_WALK_STATE *WalkState, 490 ACPI_NAMESPACE_NODE *ParentNode, 491 ACPI_NAMESPACE_NODE *Node, 492 ACPI_OBJECT_TYPE Type); 493 494 495 /* 496 * nsutils - Utility functions 497 */ 498 ACPI_OBJECT_TYPE 499 AcpiNsGetType ( 500 ACPI_NAMESPACE_NODE *Node); 501 502 UINT32 503 AcpiNsLocal ( 504 ACPI_OBJECT_TYPE Type); 505 506 void 507 AcpiNsPrintNodePathname ( 508 ACPI_NAMESPACE_NODE *Node, 509 const char *Msg); 510 511 ACPI_STATUS 512 AcpiNsBuildInternalName ( 513 ACPI_NAMESTRING_INFO *Info); 514 515 void 516 AcpiNsGetInternalNameLength ( 517 ACPI_NAMESTRING_INFO *Info); 518 519 ACPI_STATUS 520 AcpiNsInternalizeName ( 521 const char *DottedName, 522 char **ConvertedName); 523 524 ACPI_STATUS 525 AcpiNsExternalizeName ( 526 UINT32 InternalNameLength, 527 const char *InternalName, 528 UINT32 *ConvertedNameLength, 529 char **ConvertedName); 530 531 ACPI_NAMESPACE_NODE * 532 AcpiNsValidateHandle ( 533 ACPI_HANDLE Handle); 534 535 void 536 AcpiNsTerminate ( 537 void); 538 539 #endif /* __ACNAMESP_H__ */ 540