1 /****************************************************************************** 2 * 3 * Name: acnamesp.h - Namespace subcomponent prototypes and defines 4 * 5 *****************************************************************************/ 6 7 /* 8 * Copyright (C) 2000 - 2011, 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 281 /* 282 * nsnames - Name and Scope manipulation 283 */ 284 UINT32 285 AcpiNsOpensScope ( 286 ACPI_OBJECT_TYPE Type); 287 288 ACPI_STATUS 289 AcpiNsBuildExternalPath ( 290 ACPI_NAMESPACE_NODE *Node, 291 ACPI_SIZE Size, 292 char *NameBuffer); 293 294 char * 295 AcpiNsGetExternalPathname ( 296 ACPI_NAMESPACE_NODE *Node); 297 298 char * 299 AcpiNsNameOfCurrentScope ( 300 ACPI_WALK_STATE *WalkState); 301 302 ACPI_STATUS 303 AcpiNsHandleToPathname ( 304 ACPI_HANDLE TargetHandle, 305 ACPI_BUFFER *Buffer); 306 307 BOOLEAN 308 AcpiNsPatternMatch ( 309 ACPI_NAMESPACE_NODE *ObjNode, 310 char *SearchFor); 311 312 ACPI_STATUS 313 AcpiNsGetNode ( 314 ACPI_NAMESPACE_NODE *PrefixNode, 315 const char *ExternalPathname, 316 UINT32 Flags, 317 ACPI_NAMESPACE_NODE **OutNode); 318 319 ACPI_SIZE 320 AcpiNsGetPathnameLength ( 321 ACPI_NAMESPACE_NODE *Node); 322 323 324 /* 325 * nsobject - Object management for namespace nodes 326 */ 327 ACPI_STATUS 328 AcpiNsAttachObject ( 329 ACPI_NAMESPACE_NODE *Node, 330 ACPI_OPERAND_OBJECT *Object, 331 ACPI_OBJECT_TYPE Type); 332 333 ACPI_OPERAND_OBJECT * 334 AcpiNsGetAttachedObject ( 335 ACPI_NAMESPACE_NODE *Node); 336 337 ACPI_OPERAND_OBJECT * 338 AcpiNsGetSecondaryObject ( 339 ACPI_OPERAND_OBJECT *ObjDesc); 340 341 ACPI_STATUS 342 AcpiNsAttachData ( 343 ACPI_NAMESPACE_NODE *Node, 344 ACPI_OBJECT_HANDLER Handler, 345 void *Data); 346 347 ACPI_STATUS 348 AcpiNsDetachData ( 349 ACPI_NAMESPACE_NODE *Node, 350 ACPI_OBJECT_HANDLER Handler); 351 352 ACPI_STATUS 353 AcpiNsGetAttachedData ( 354 ACPI_NAMESPACE_NODE *Node, 355 ACPI_OBJECT_HANDLER Handler, 356 void **Data); 357 358 359 /* 360 * nsrepair - General return object repair for all 361 * predefined methods/objects 362 */ 363 ACPI_STATUS 364 AcpiNsRepairObject ( 365 ACPI_PREDEFINED_DATA *Data, 366 UINT32 ExpectedBtypes, 367 UINT32 PackageIndex, 368 ACPI_OPERAND_OBJECT **ReturnObjectPtr); 369 370 ACPI_STATUS 371 AcpiNsRepairPackageList ( 372 ACPI_PREDEFINED_DATA *Data, 373 ACPI_OPERAND_OBJECT **ObjDescPtr); 374 375 ACPI_STATUS 376 AcpiNsRepairNullElement ( 377 ACPI_PREDEFINED_DATA *Data, 378 UINT32 ExpectedBtypes, 379 UINT32 PackageIndex, 380 ACPI_OPERAND_OBJECT **ReturnObjectPtr); 381 382 void 383 AcpiNsRemoveNullElements ( 384 ACPI_PREDEFINED_DATA *Data, 385 UINT8 PackageType, 386 ACPI_OPERAND_OBJECT *ObjDesc); 387 388 389 /* 390 * nsrepair2 - Return object repair for specific 391 * predefined methods/objects 392 */ 393 ACPI_STATUS 394 AcpiNsComplexRepairs ( 395 ACPI_PREDEFINED_DATA *Data, 396 ACPI_NAMESPACE_NODE *Node, 397 ACPI_STATUS ValidateStatus, 398 ACPI_OPERAND_OBJECT **ReturnObjectPtr); 399 400 401 /* 402 * nssearch - Namespace searching and entry 403 */ 404 ACPI_STATUS 405 AcpiNsSearchAndEnter ( 406 UINT32 EntryName, 407 ACPI_WALK_STATE *WalkState, 408 ACPI_NAMESPACE_NODE *Node, 409 ACPI_INTERPRETER_MODE InterpreterMode, 410 ACPI_OBJECT_TYPE Type, 411 UINT32 Flags, 412 ACPI_NAMESPACE_NODE **RetNode); 413 414 ACPI_STATUS 415 AcpiNsSearchOneScope ( 416 UINT32 EntryName, 417 ACPI_NAMESPACE_NODE *Node, 418 ACPI_OBJECT_TYPE Type, 419 ACPI_NAMESPACE_NODE **RetNode); 420 421 void 422 AcpiNsInstallNode ( 423 ACPI_WALK_STATE *WalkState, 424 ACPI_NAMESPACE_NODE *ParentNode, 425 ACPI_NAMESPACE_NODE *Node, 426 ACPI_OBJECT_TYPE Type); 427 428 429 /* 430 * nsutils - Utility functions 431 */ 432 BOOLEAN 433 AcpiNsValidRootPrefix ( 434 char Prefix); 435 436 ACPI_OBJECT_TYPE 437 AcpiNsGetType ( 438 ACPI_NAMESPACE_NODE *Node); 439 440 UINT32 441 AcpiNsLocal ( 442 ACPI_OBJECT_TYPE Type); 443 444 void 445 AcpiNsPrintNodePathname ( 446 ACPI_NAMESPACE_NODE *Node, 447 const char *Msg); 448 449 ACPI_STATUS 450 AcpiNsBuildInternalName ( 451 ACPI_NAMESTRING_INFO *Info); 452 453 void 454 AcpiNsGetInternalNameLength ( 455 ACPI_NAMESTRING_INFO *Info); 456 457 ACPI_STATUS 458 AcpiNsInternalizeName ( 459 const char *DottedName, 460 char **ConvertedName); 461 462 ACPI_STATUS 463 AcpiNsExternalizeName ( 464 UINT32 InternalNameLength, 465 const char *InternalName, 466 UINT32 *ConvertedNameLength, 467 char **ConvertedName); 468 469 ACPI_NAMESPACE_NODE * 470 AcpiNsValidateHandle ( 471 ACPI_HANDLE Handle); 472 473 void 474 AcpiNsTerminate ( 475 void); 476 477 #endif /* __ACNAMESP_H__ */ 478