acnamesp.h revision 233555
1/****************************************************************************** 2 * 3 * Name: acnamesp.h - Namespace subcomponent prototypes and defines 4 * 5 *****************************************************************************/ 6 7/* 8 * Copyright (C) 2000 - 2012, 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 */ 89ACPI_STATUS 90AcpiNsInitializeObjects ( 91 void); 92 93ACPI_STATUS 94AcpiNsInitializeDevices ( 95 void); 96 97 98/* 99 * nsload - Namespace loading 100 */ 101ACPI_STATUS 102AcpiNsLoadNamespace ( 103 void); 104 105ACPI_STATUS 106AcpiNsLoadTable ( 107 UINT32 TableIndex, 108 ACPI_NAMESPACE_NODE *Node); 109 110 111/* 112 * nswalk - walk the namespace 113 */ 114ACPI_STATUS 115AcpiNsWalkNamespace ( 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 125ACPI_NAMESPACE_NODE * 126AcpiNsGetNextNode ( 127 ACPI_NAMESPACE_NODE *Parent, 128 ACPI_NAMESPACE_NODE *Child); 129 130ACPI_NAMESPACE_NODE * 131AcpiNsGetNextNodeTyped ( 132 ACPI_OBJECT_TYPE Type, 133 ACPI_NAMESPACE_NODE *Parent, 134 ACPI_NAMESPACE_NODE *Child); 135 136/* 137 * nsparse - table parsing 138 */ 139ACPI_STATUS 140AcpiNsParseTable ( 141 UINT32 TableIndex, 142 ACPI_NAMESPACE_NODE *StartNode); 143 144ACPI_STATUS 145AcpiNsOneCompleteParse ( 146 UINT32 PassNumber, 147 UINT32 TableIndex, 148 ACPI_NAMESPACE_NODE *StartNode); 149 150 151/* 152 * nsaccess - Top-level namespace access 153 */ 154ACPI_STATUS 155AcpiNsRootInitialize ( 156 void); 157 158ACPI_STATUS 159AcpiNsLookup ( 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 */ 172ACPI_NAMESPACE_NODE * 173AcpiNsCreateNode ( 174 UINT32 Name); 175 176void 177AcpiNsDeleteNode ( 178 ACPI_NAMESPACE_NODE *Node); 179 180void 181AcpiNsRemoveNode ( 182 ACPI_NAMESPACE_NODE *Node); 183 184void 185AcpiNsDeleteNamespaceSubtree ( 186 ACPI_NAMESPACE_NODE *ParentHandle); 187 188void 189AcpiNsDeleteNamespaceByOwner ( 190 ACPI_OWNER_ID OwnerId); 191 192void 193AcpiNsDetachObject ( 194 ACPI_NAMESPACE_NODE *Node); 195 196void 197AcpiNsDeleteChildren ( 198 ACPI_NAMESPACE_NODE *Parent); 199 200int 201AcpiNsCompareNames ( 202 char *Name1, 203 char *Name2); 204 205 206/* 207 * nsdump - Namespace dump/print utilities 208 */ 209void 210AcpiNsDumpTables ( 211 ACPI_HANDLE SearchBase, 212 UINT32 MaxDepth); 213 214void 215AcpiNsDumpEntry ( 216 ACPI_HANDLE Handle, 217 UINT32 DebugLevel); 218 219void 220AcpiNsDumpPathname ( 221 ACPI_HANDLE Handle, 222 char *Msg, 223 UINT32 Level, 224 UINT32 Component); 225 226void 227AcpiNsPrintPathname ( 228 UINT32 NumSegments, 229 char *Pathname); 230 231ACPI_STATUS 232AcpiNsDumpOneObject ( 233 ACPI_HANDLE ObjHandle, 234 UINT32 Level, 235 void *Context, 236 void **ReturnValue); 237 238void 239AcpiNsDumpObjects ( 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 */ 250ACPI_STATUS 251AcpiNsEvaluate ( 252 ACPI_EVALUATE_INFO *Info); 253 254void 255AcpiNsExecModuleCodeList ( 256 void); 257 258 259/* 260 * nspredef - Support for predefined/reserved names 261 */ 262ACPI_STATUS 263AcpiNsCheckPredefinedNames ( 264 ACPI_NAMESPACE_NODE *Node, 265 UINT32 UserParamCount, 266 ACPI_STATUS ReturnStatus, 267 ACPI_OPERAND_OBJECT **ReturnObject); 268 269const ACPI_PREDEFINED_INFO * 270AcpiNsCheckForPredefinedName ( 271 ACPI_NAMESPACE_NODE *Node); 272 273void 274AcpiNsCheckParameterCount ( 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 */ 284UINT32 285AcpiNsOpensScope ( 286 ACPI_OBJECT_TYPE Type); 287 288ACPI_STATUS 289AcpiNsBuildExternalPath ( 290 ACPI_NAMESPACE_NODE *Node, 291 ACPI_SIZE Size, 292 char *NameBuffer); 293 294char * 295AcpiNsGetExternalPathname ( 296 ACPI_NAMESPACE_NODE *Node); 297 298char * 299AcpiNsNameOfCurrentScope ( 300 ACPI_WALK_STATE *WalkState); 301 302ACPI_STATUS 303AcpiNsHandleToPathname ( 304 ACPI_HANDLE TargetHandle, 305 ACPI_BUFFER *Buffer); 306 307BOOLEAN 308AcpiNsPatternMatch ( 309 ACPI_NAMESPACE_NODE *ObjNode, 310 char *SearchFor); 311 312ACPI_STATUS 313AcpiNsGetNode ( 314 ACPI_NAMESPACE_NODE *PrefixNode, 315 const char *ExternalPathname, 316 UINT32 Flags, 317 ACPI_NAMESPACE_NODE **OutNode); 318 319ACPI_SIZE 320AcpiNsGetPathnameLength ( 321 ACPI_NAMESPACE_NODE *Node); 322 323 324/* 325 * nsobject - Object management for namespace nodes 326 */ 327ACPI_STATUS 328AcpiNsAttachObject ( 329 ACPI_NAMESPACE_NODE *Node, 330 ACPI_OPERAND_OBJECT *Object, 331 ACPI_OBJECT_TYPE Type); 332 333ACPI_OPERAND_OBJECT * 334AcpiNsGetAttachedObject ( 335 ACPI_NAMESPACE_NODE *Node); 336 337ACPI_OPERAND_OBJECT * 338AcpiNsGetSecondaryObject ( 339 ACPI_OPERAND_OBJECT *ObjDesc); 340 341ACPI_STATUS 342AcpiNsAttachData ( 343 ACPI_NAMESPACE_NODE *Node, 344 ACPI_OBJECT_HANDLER Handler, 345 void *Data); 346 347ACPI_STATUS 348AcpiNsDetachData ( 349 ACPI_NAMESPACE_NODE *Node, 350 ACPI_OBJECT_HANDLER Handler); 351 352ACPI_STATUS 353AcpiNsGetAttachedData ( 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 */ 363ACPI_STATUS 364AcpiNsRepairObject ( 365 ACPI_PREDEFINED_DATA *Data, 366 UINT32 ExpectedBtypes, 367 UINT32 PackageIndex, 368 ACPI_OPERAND_OBJECT **ReturnObjectPtr); 369 370ACPI_STATUS 371AcpiNsRepairPackageList ( 372 ACPI_PREDEFINED_DATA *Data, 373 ACPI_OPERAND_OBJECT **ObjDescPtr); 374 375ACPI_STATUS 376AcpiNsRepairNullElement ( 377 ACPI_PREDEFINED_DATA *Data, 378 UINT32 ExpectedBtypes, 379 UINT32 PackageIndex, 380 ACPI_OPERAND_OBJECT **ReturnObjectPtr); 381 382void 383AcpiNsRemoveNullElements ( 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 */ 393ACPI_STATUS 394AcpiNsComplexRepairs ( 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 */ 404ACPI_STATUS 405AcpiNsSearchAndEnter ( 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 414ACPI_STATUS 415AcpiNsSearchOneScope ( 416 UINT32 EntryName, 417 ACPI_NAMESPACE_NODE *Node, 418 ACPI_OBJECT_TYPE Type, 419 ACPI_NAMESPACE_NODE **RetNode); 420 421void 422AcpiNsInstallNode ( 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 */ 432BOOLEAN 433AcpiNsValidRootPrefix ( 434 char Prefix); 435 436ACPI_OBJECT_TYPE 437AcpiNsGetType ( 438 ACPI_NAMESPACE_NODE *Node); 439 440UINT32 441AcpiNsLocal ( 442 ACPI_OBJECT_TYPE Type); 443 444void 445AcpiNsPrintNodePathname ( 446 ACPI_NAMESPACE_NODE *Node, 447 const char *Msg); 448 449ACPI_STATUS 450AcpiNsBuildInternalName ( 451 ACPI_NAMESTRING_INFO *Info); 452 453void 454AcpiNsGetInternalNameLength ( 455 ACPI_NAMESTRING_INFO *Info); 456 457ACPI_STATUS 458AcpiNsInternalizeName ( 459 const char *DottedName, 460 char **ConvertedName); 461 462ACPI_STATUS 463AcpiNsExternalizeName ( 464 UINT32 InternalNameLength, 465 const char *InternalName, 466 UINT32 *ConvertedNameLength, 467 char **ConvertedName); 468 469ACPI_NAMESPACE_NODE * 470AcpiNsValidateHandle ( 471 ACPI_HANDLE Handle); 472 473void 474AcpiNsTerminate ( 475 void); 476 477#endif /* __ACNAMESP_H__ */ 478