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