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