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 PreOrderVisit, 121 ACPI_WALK_CALLBACK PostOrderVisit, 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 * nsdump - Namespace dump/print utilities 208 */ 209 void 210 AcpiNsDumpTables ( 211 ACPI_HANDLE SearchBase, 212 UINT32 MaxDepth); 213 214 void 215 AcpiNsDumpEntry ( 216 ACPI_HANDLE Handle, 217 UINT32 DebugLevel); 218 219 void 220 AcpiNsDumpPathname ( 221 ACPI_HANDLE Handle, 222 char *Msg, 223 UINT32 Level, 224 UINT32 Component); 225 226 void 227 AcpiNsPrintPathname ( 228 UINT32 NumSegments, 229 char *Pathname); 230 231 ACPI_STATUS 232 AcpiNsDumpOneObject ( 233 ACPI_HANDLE ObjHandle, 234 UINT32 Level, 235 void *Context, 236 void **ReturnValue); 237 238 void 239 AcpiNsDumpObjects ( 240 ACPI_OBJECT_TYPE Type, 241 UINT8 DisplayType, 242 UINT32 MaxDepth, 243 ACPI_OWNER_ID OwnerId, 244 ACPI_HANDLE StartHandle); 245 246 247 /* 248 * nseval - Namespace evaluation functions 249 */ 250 ACPI_STATUS 251 AcpiNsEvaluate ( 252 ACPI_EVALUATE_INFO *Info); 253 254 void 255 AcpiNsExecModuleCodeList ( 256 void); 257 258 259 /* 260 * nspredef - Support for predefined/reserved names 261 */ 262 ACPI_STATUS 263 AcpiNsCheckPredefinedNames ( 264 ACPI_NAMESPACE_NODE *Node, 265 UINT32 UserParamCount, 266 ACPI_STATUS ReturnStatus, 267 ACPI_OPERAND_OBJECT **ReturnObject); 268 269 const ACPI_PREDEFINED_INFO * 270 AcpiNsCheckForPredefinedName ( 271 ACPI_NAMESPACE_NODE *Node); 272 273 void 274 AcpiNsCheckParameterCount ( 275 char *Pathname, 276 ACPI_NAMESPACE_NODE *Node, 277 UINT32 UserParamCount, 278 const ACPI_PREDEFINED_INFO *Info); 279 280 ACPI_STATUS 281 AcpiNsCheckObjectType ( 282 ACPI_PREDEFINED_DATA *Data, 283 ACPI_OPERAND_OBJECT **ReturnObjectPtr, 284 UINT32 ExpectedBtypes, 285 UINT32 PackageIndex); 286 287 288 /* 289 * nsprepkg - Validation of predefined name packages 290 */ 291 ACPI_STATUS 292 AcpiNsCheckPackage ( 293 ACPI_PREDEFINED_DATA *Data, 294 ACPI_OPERAND_OBJECT **ReturnObjectPtr); 295 296 297 /* 298 * nsnames - Name and Scope manipulation 299 */ 300 UINT32 301 AcpiNsOpensScope ( 302 ACPI_OBJECT_TYPE Type); 303 304 ACPI_STATUS 305 AcpiNsBuildExternalPath ( 306 ACPI_NAMESPACE_NODE *Node, 307 ACPI_SIZE Size, 308 char *NameBuffer); 309 310 char * 311 AcpiNsGetExternalPathname ( 312 ACPI_NAMESPACE_NODE *Node); 313 314 char * 315 AcpiNsNameOfCurrentScope ( 316 ACPI_WALK_STATE *WalkState); 317 318 ACPI_STATUS 319 AcpiNsHandleToPathname ( 320 ACPI_HANDLE TargetHandle, 321 ACPI_BUFFER *Buffer); 322 323 BOOLEAN 324 AcpiNsPatternMatch ( 325 ACPI_NAMESPACE_NODE *ObjNode, 326 char *SearchFor); 327 328 ACPI_STATUS 329 AcpiNsGetNode ( 330 ACPI_NAMESPACE_NODE *PrefixNode, 331 const char *ExternalPathname, 332 UINT32 Flags, 333 ACPI_NAMESPACE_NODE **OutNode); 334 335 ACPI_SIZE 336 AcpiNsGetPathnameLength ( 337 ACPI_NAMESPACE_NODE *Node); 338 339 340 /* 341 * nsobject - Object management for namespace nodes 342 */ 343 ACPI_STATUS 344 AcpiNsAttachObject ( 345 ACPI_NAMESPACE_NODE *Node, 346 ACPI_OPERAND_OBJECT *Object, 347 ACPI_OBJECT_TYPE Type); 348 349 ACPI_OPERAND_OBJECT * 350 AcpiNsGetAttachedObject ( 351 ACPI_NAMESPACE_NODE *Node); 352 353 ACPI_OPERAND_OBJECT * 354 AcpiNsGetSecondaryObject ( 355 ACPI_OPERAND_OBJECT *ObjDesc); 356 357 ACPI_STATUS 358 AcpiNsAttachData ( 359 ACPI_NAMESPACE_NODE *Node, 360 ACPI_OBJECT_HANDLER Handler, 361 void *Data); 362 363 ACPI_STATUS 364 AcpiNsDetachData ( 365 ACPI_NAMESPACE_NODE *Node, 366 ACPI_OBJECT_HANDLER Handler); 367 368 ACPI_STATUS 369 AcpiNsGetAttachedData ( 370 ACPI_NAMESPACE_NODE *Node, 371 ACPI_OBJECT_HANDLER Handler, 372 void **Data); 373 374 375 /* 376 * nsrepair - General return object repair for all 377 * predefined methods/objects 378 */ 379 ACPI_STATUS 380 AcpiNsRepairObject ( 381 ACPI_PREDEFINED_DATA *Data, 382 UINT32 ExpectedBtypes, 383 UINT32 PackageIndex, 384 ACPI_OPERAND_OBJECT **ReturnObjectPtr); 385 386 ACPI_STATUS 387 AcpiNsWrapWithPackage ( 388 ACPI_PREDEFINED_DATA *Data, 389 ACPI_OPERAND_OBJECT *OriginalObject, 390 ACPI_OPERAND_OBJECT **ObjDescPtr); 391 392 ACPI_STATUS 393 AcpiNsRepairNullElement ( 394 ACPI_PREDEFINED_DATA *Data, 395 UINT32 ExpectedBtypes, 396 UINT32 PackageIndex, 397 ACPI_OPERAND_OBJECT **ReturnObjectPtr); 398 399 void 400 AcpiNsRemoveNullElements ( 401 ACPI_PREDEFINED_DATA *Data, 402 UINT8 PackageType, 403 ACPI_OPERAND_OBJECT *ObjDesc); 404 405 406 /* 407 * nsrepair2 - Return object repair for specific 408 * predefined methods/objects 409 */ 410 ACPI_STATUS 411 AcpiNsComplexRepairs ( 412 ACPI_PREDEFINED_DATA *Data, 413 ACPI_NAMESPACE_NODE *Node, 414 ACPI_STATUS ValidateStatus, 415 ACPI_OPERAND_OBJECT **ReturnObjectPtr); 416 417 418 /* 419 * nssearch - Namespace searching and entry 420 */ 421 ACPI_STATUS 422 AcpiNsSearchAndEnter ( 423 UINT32 EntryName, 424 ACPI_WALK_STATE *WalkState, 425 ACPI_NAMESPACE_NODE *Node, 426 ACPI_INTERPRETER_MODE InterpreterMode, 427 ACPI_OBJECT_TYPE Type, 428 UINT32 Flags, 429 ACPI_NAMESPACE_NODE **RetNode); 430 431 ACPI_STATUS 432 AcpiNsSearchOneScope ( 433 UINT32 EntryName, 434 ACPI_NAMESPACE_NODE *Node, 435 ACPI_OBJECT_TYPE Type, 436 ACPI_NAMESPACE_NODE **RetNode); 437 438 void 439 AcpiNsInstallNode ( 440 ACPI_WALK_STATE *WalkState, 441 ACPI_NAMESPACE_NODE *ParentNode, 442 ACPI_NAMESPACE_NODE *Node, 443 ACPI_OBJECT_TYPE Type); 444 445 446 /* 447 * nsutils - Utility functions 448 */ 449 ACPI_OBJECT_TYPE 450 AcpiNsGetType ( 451 ACPI_NAMESPACE_NODE *Node); 452 453 UINT32 454 AcpiNsLocal ( 455 ACPI_OBJECT_TYPE Type); 456 457 void 458 AcpiNsPrintNodePathname ( 459 ACPI_NAMESPACE_NODE *Node, 460 const char *Msg); 461 462 ACPI_STATUS 463 AcpiNsBuildInternalName ( 464 ACPI_NAMESTRING_INFO *Info); 465 466 void 467 AcpiNsGetInternalNameLength ( 468 ACPI_NAMESTRING_INFO *Info); 469 470 ACPI_STATUS 471 AcpiNsInternalizeName ( 472 const char *DottedName, 473 char **ConvertedName); 474 475 ACPI_STATUS 476 AcpiNsExternalizeName ( 477 UINT32 InternalNameLength, 478 const char *InternalName, 479 UINT32 *ConvertedNameLength, 480 char **ConvertedName); 481 482 ACPI_NAMESPACE_NODE * 483 AcpiNsValidateHandle ( 484 ACPI_HANDLE Handle); 485 486 void 487 AcpiNsTerminate ( 488 void); 489 490 #endif /* __ACNAMESP_H__ */ 491