167754Smsmith/****************************************************************************** 267754Smsmith * 367754Smsmith * Name: acnamesp.h - Namespace subcomponent prototypes and defines 467754Smsmith * 567754Smsmith *****************************************************************************/ 667754Smsmith 7217365Sjkim/* 8217365Sjkim * Copyright (C) 2000 - 2011, Intel Corp. 970243Smsmith * All rights reserved. 1067754Smsmith * 11217365Sjkim * Redistribution and use in source and binary forms, with or without 12217365Sjkim * modification, are permitted provided that the following conditions 13217365Sjkim * are met: 14217365Sjkim * 1. Redistributions of source code must retain the above copyright 15217365Sjkim * notice, this list of conditions, and the following disclaimer, 16217365Sjkim * without modification. 17217365Sjkim * 2. Redistributions in binary form must reproduce at minimum a disclaimer 18217365Sjkim * substantially similar to the "NO WARRANTY" disclaimer below 19217365Sjkim * ("Disclaimer") and any redistribution must be conditioned upon 20217365Sjkim * including a substantially similar Disclaimer requirement for further 21217365Sjkim * binary redistribution. 22217365Sjkim * 3. Neither the names of the above-listed copyright holders nor the names 23217365Sjkim * of any contributors may be used to endorse or promote products derived 24217365Sjkim * from this software without specific prior written permission. 2567754Smsmith * 26217365Sjkim * Alternatively, this software may be distributed under the terms of the 27217365Sjkim * GNU General Public License ("GPL") version 2 as published by the Free 28217365Sjkim * Software Foundation. 2967754Smsmith * 30217365Sjkim * NO WARRANTY 31217365Sjkim * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 32217365Sjkim * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 33217365Sjkim * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 34217365Sjkim * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 35217365Sjkim * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 36217365Sjkim * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 37217365Sjkim * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 38217365Sjkim * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 39217365Sjkim * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 40217365Sjkim * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 41217365Sjkim * POSSIBILITY OF SUCH DAMAGES. 42217365Sjkim */ 4367754Smsmith 4467754Smsmith#ifndef __ACNAMESP_H__ 4567754Smsmith#define __ACNAMESP_H__ 4667754Smsmith 4767754Smsmith 4867754Smsmith/* To search the entire name space, pass this as SearchBase */ 4967754Smsmith 5091116Smsmith#define ACPI_NS_ALL ((ACPI_HANDLE)0) 5167754Smsmith 5267754Smsmith/* 5367754Smsmith * Elements of AcpiNsProperties are bit significant 5467754Smsmith * and should be one-to-one with values of ACPI_OBJECT_TYPE 5567754Smsmith */ 5691116Smsmith#define ACPI_NS_NORMAL 0 5791116Smsmith#define ACPI_NS_NEWSCOPE 1 /* a definition of this type opens a name scope */ 5891116Smsmith#define ACPI_NS_LOCAL 2 /* suppress search of enclosing scopes */ 5967754Smsmith 6067754Smsmith/* Flags for AcpiNsLookup, AcpiNsSearchAndEnter */ 6167754Smsmith 6291116Smsmith#define ACPI_NS_NO_UPSEARCH 0 6391116Smsmith#define ACPI_NS_SEARCH_PARENT 0x01 6491116Smsmith#define ACPI_NS_DONT_OPEN_SCOPE 0x02 6591116Smsmith#define ACPI_NS_NO_PEER_SEARCH 0x04 6691116Smsmith#define ACPI_NS_ERROR_IF_FOUND 0x08 67167802Sjkim#define ACPI_NS_PREFIX_IS_SCOPE 0x10 68167802Sjkim#define ACPI_NS_EXTERNAL 0x20 69167802Sjkim#define ACPI_NS_TEMPORARY 0x40 7067754Smsmith 71167802Sjkim/* Flags for AcpiNsWalkNamespace */ 7267754Smsmith 73167802Sjkim#define ACPI_NS_WALK_NO_UNLOCK 0 74167802Sjkim#define ACPI_NS_WALK_UNLOCK 0x01 75167802Sjkim#define ACPI_NS_WALK_TEMP_NODES 0x02 7667754Smsmith 77197104Sjkim/* Object is not a package element */ 78167802Sjkim 79197104Sjkim#define ACPI_NOT_PACKAGE_ELEMENT ACPI_UINT32_MAX 80197104Sjkim 81197104Sjkim/* Always emit warning message, not dependent on node flags */ 82197104Sjkim 83197104Sjkim#define ACPI_WARN_ALWAYS 0 84197104Sjkim 85197104Sjkim 86151937Sjkim/* 87151937Sjkim * nsinit - Namespace initialization 88151937Sjkim */ 8967754SmsmithACPI_STATUS 9067754SmsmithAcpiNsInitializeObjects ( 9167754Smsmith void); 9267754Smsmith 9367754SmsmithACPI_STATUS 9467754SmsmithAcpiNsInitializeDevices ( 9573561Smsmith void); 9667754Smsmith 9767754Smsmith 98151937Sjkim/* 99151937Sjkim * nsload - Namespace loading 100151937Sjkim */ 10167754SmsmithACPI_STATUS 102151937SjkimAcpiNsLoadNamespace ( 103151937Sjkim void); 10467754Smsmith 10567754SmsmithACPI_STATUS 106151937SjkimAcpiNsLoadTable ( 107193267Sjkim UINT32 TableIndex, 108151937Sjkim ACPI_NAMESPACE_NODE *Node); 10967754Smsmith 11067754Smsmith 111151937Sjkim/* 112151937Sjkim * nswalk - walk the namespace 113151937Sjkim */ 11467754SmsmithACPI_STATUS 11567754SmsmithAcpiNsWalkNamespace ( 11691116Smsmith ACPI_OBJECT_TYPE Type, 11767754Smsmith ACPI_HANDLE StartObject, 11867754Smsmith UINT32 MaxDepth, 119167802Sjkim UINT32 Flags, 120199337Sjkim ACPI_WALK_CALLBACK PreOrderVisit, 121199337Sjkim ACPI_WALK_CALLBACK PostOrderVisit, 12267754Smsmith void *Context, 12367754Smsmith void **ReturnValue); 12467754Smsmith 12567754SmsmithACPI_NAMESPACE_NODE * 12685756SmsmithAcpiNsGetNextNode ( 127193267Sjkim ACPI_NAMESPACE_NODE *Parent, 128193267Sjkim ACPI_NAMESPACE_NODE *Child); 129193267Sjkim 130193267SjkimACPI_NAMESPACE_NODE * 131193267SjkimAcpiNsGetNextNodeTyped ( 13291116Smsmith ACPI_OBJECT_TYPE Type, 13367754Smsmith ACPI_NAMESPACE_NODE *Parent, 13467754Smsmith ACPI_NAMESPACE_NODE *Child); 13567754Smsmith 136151937Sjkim/* 137151937Sjkim * nsparse - table parsing 138151937Sjkim */ 13967754SmsmithACPI_STATUS 14067754SmsmithAcpiNsParseTable ( 141193267Sjkim UINT32 TableIndex, 142167802Sjkim ACPI_NAMESPACE_NODE *StartNode); 14367754Smsmith 14467754SmsmithACPI_STATUS 145151937SjkimAcpiNsOneCompleteParse ( 146193267Sjkim UINT32 PassNumber, 147193267Sjkim UINT32 TableIndex, 148193267Sjkim ACPI_NAMESPACE_NODE *StartNode); 14967754Smsmith 15067754Smsmith 15167754Smsmith/* 152151937Sjkim * nsaccess - Top-level namespace access 15367754Smsmith */ 15467754SmsmithACPI_STATUS 15567754SmsmithAcpiNsRootInitialize ( 15667754Smsmith void); 15767754Smsmith 15867754SmsmithACPI_STATUS 15967754SmsmithAcpiNsLookup ( 16067754Smsmith ACPI_GENERIC_STATE *ScopeInfo, 161114237Snjl char *Name, 16291116Smsmith ACPI_OBJECT_TYPE Type, 16391116Smsmith ACPI_INTERPRETER_MODE InterpreterMode, 16467754Smsmith UINT32 Flags, 16567754Smsmith ACPI_WALK_STATE *WalkState, 16667754Smsmith ACPI_NAMESPACE_NODE **RetNode); 16767754Smsmith 16867754Smsmith 16967754Smsmith/* 170151937Sjkim * nsalloc - Named object allocation/deallocation 17167754Smsmith */ 17267754SmsmithACPI_NAMESPACE_NODE * 17367754SmsmithAcpiNsCreateNode ( 17484491Smsmith UINT32 Name); 17567754Smsmith 17667754Smsmithvoid 17767754SmsmithAcpiNsDeleteNode ( 17867754Smsmith ACPI_NAMESPACE_NODE *Node); 17967754Smsmith 18099679Siwasakivoid 181197104SjkimAcpiNsRemoveNode ( 182197104Sjkim ACPI_NAMESPACE_NODE *Node); 183197104Sjkim 184197104Sjkimvoid 18567754SmsmithAcpiNsDeleteNamespaceSubtree ( 18667754Smsmith ACPI_NAMESPACE_NODE *ParentHandle); 18767754Smsmith 18867754Smsmithvoid 189151937SjkimAcpiNsDeleteNamespaceByOwner ( 190151937Sjkim ACPI_OWNER_ID OwnerId); 191151937Sjkim 192151937Sjkimvoid 19367754SmsmithAcpiNsDetachObject ( 19467754Smsmith ACPI_NAMESPACE_NODE *Node); 19567754Smsmith 19667754Smsmithvoid 19767754SmsmithAcpiNsDeleteChildren ( 19867754Smsmith ACPI_NAMESPACE_NODE *Parent); 19967754Smsmith 200107325Siwasakiint 201107325SiwasakiAcpiNsCompareNames ( 202107325Siwasaki char *Name1, 203107325Siwasaki char *Name2); 20467754Smsmith 205117521Snjl 20667754Smsmith/* 207151937Sjkim * nsdump - Namespace dump/print utilities 20867754Smsmith */ 20967754Smsmithvoid 21067754SmsmithAcpiNsDumpTables ( 21167754Smsmith ACPI_HANDLE SearchBase, 21267754Smsmith UINT32 MaxDepth); 21367754Smsmith 21467754Smsmithvoid 21567754SmsmithAcpiNsDumpEntry ( 21667754Smsmith ACPI_HANDLE Handle, 21767754Smsmith UINT32 DebugLevel); 21867754Smsmith 219114237Snjlvoid 22067754SmsmithAcpiNsDumpPathname ( 22167754Smsmith ACPI_HANDLE Handle, 222114237Snjl char *Msg, 22367754Smsmith UINT32 Level, 22467754Smsmith UINT32 Component); 22567754Smsmith 22667754Smsmithvoid 22787031SmsmithAcpiNsPrintPathname ( 22887031Smsmith UINT32 NumSegments, 22987031Smsmith char *Pathname); 23087031Smsmith 23199679SiwasakiACPI_STATUS 23299679SiwasakiAcpiNsDumpOneObject ( 23399679Siwasaki ACPI_HANDLE ObjHandle, 23499679Siwasaki UINT32 Level, 23599679Siwasaki void *Context, 23699679Siwasaki void **ReturnValue); 23799679Siwasaki 23867754Smsmithvoid 23967754SmsmithAcpiNsDumpObjects ( 24091116Smsmith ACPI_OBJECT_TYPE Type, 24185756Smsmith UINT8 DisplayType, 24267754Smsmith UINT32 MaxDepth, 243151937Sjkim ACPI_OWNER_ID OwnerId, 24467754Smsmith ACPI_HANDLE StartHandle); 24567754Smsmith 24667754Smsmith 24767754Smsmith/* 248151937Sjkim * nseval - Namespace evaluation functions 24967754Smsmith */ 25067754SmsmithACPI_STATUS 251167802SjkimAcpiNsEvaluate ( 252167802Sjkim ACPI_EVALUATE_INFO *Info); 25367754Smsmith 254197104Sjkimvoid 255197104SjkimAcpiNsExecModuleCodeList ( 256197104Sjkim void); 25767754Smsmith 258197104Sjkim 25967754Smsmith/* 260193267Sjkim * nspredef - Support for predefined/reserved names 261193267Sjkim */ 262193267SjkimACPI_STATUS 263193267SjkimAcpiNsCheckPredefinedNames ( 264193267Sjkim ACPI_NAMESPACE_NODE *Node, 265193267Sjkim UINT32 UserParamCount, 266193267Sjkim ACPI_STATUS ReturnStatus, 267193267Sjkim ACPI_OPERAND_OBJECT **ReturnObject); 268193267Sjkim 269193267Sjkimconst ACPI_PREDEFINED_INFO * 270193267SjkimAcpiNsCheckForPredefinedName ( 271193267Sjkim ACPI_NAMESPACE_NODE *Node); 272193267Sjkim 273193267Sjkimvoid 274193267SjkimAcpiNsCheckParameterCount ( 275193267Sjkim char *Pathname, 276193267Sjkim ACPI_NAMESPACE_NODE *Node, 277193267Sjkim UINT32 UserParamCount, 278193267Sjkim const ACPI_PREDEFINED_INFO *Info); 279193267Sjkim 280193267Sjkim 281193267Sjkim/* 282151937Sjkim * nsnames - Name and Scope manipulation 28367754Smsmith */ 28467754SmsmithUINT32 28567754SmsmithAcpiNsOpensScope ( 28691116Smsmith ACPI_OBJECT_TYPE Type); 28767754Smsmith 288193267SjkimACPI_STATUS 289167802SjkimAcpiNsBuildExternalPath ( 290167802Sjkim ACPI_NAMESPACE_NODE *Node, 291167802Sjkim ACPI_SIZE Size, 292167802Sjkim char *NameBuffer); 293167802Sjkim 294114237Snjlchar * 29591116SmsmithAcpiNsGetExternalPathname ( 29667754Smsmith ACPI_NAMESPACE_NODE *Node); 29767754Smsmith 298114237Snjlchar * 29967754SmsmithAcpiNsNameOfCurrentScope ( 30067754Smsmith ACPI_WALK_STATE *WalkState); 30167754Smsmith 30267754SmsmithACPI_STATUS 30367754SmsmithAcpiNsHandleToPathname ( 30491116Smsmith ACPI_HANDLE TargetHandle, 30591116Smsmith ACPI_BUFFER *Buffer); 30667754Smsmith 30767754SmsmithBOOLEAN 30867754SmsmithAcpiNsPatternMatch ( 30967754Smsmith ACPI_NAMESPACE_NODE *ObjNode, 310114237Snjl char *SearchFor); 31167754Smsmith 31267754SmsmithACPI_STATUS 313167802SjkimAcpiNsGetNode ( 314167802Sjkim ACPI_NAMESPACE_NODE *PrefixNode, 315193267Sjkim const char *ExternalPathname, 31691116Smsmith UINT32 Flags, 31767754Smsmith ACPI_NAMESPACE_NODE **OutNode); 31867754Smsmith 31991116SmsmithACPI_SIZE 32073561SmsmithAcpiNsGetPathnameLength ( 32173561Smsmith ACPI_NAMESPACE_NODE *Node); 32273561Smsmith 32373561Smsmith 32467754Smsmith/* 325151937Sjkim * nsobject - Object management for namespace nodes 32667754Smsmith */ 32767754SmsmithACPI_STATUS 32867754SmsmithAcpiNsAttachObject ( 32967754Smsmith ACPI_NAMESPACE_NODE *Node, 33067754Smsmith ACPI_OPERAND_OBJECT *Object, 33191116Smsmith ACPI_OBJECT_TYPE Type); 33267754Smsmith 33387031SmsmithACPI_OPERAND_OBJECT * 33487031SmsmithAcpiNsGetAttachedObject ( 33587031Smsmith ACPI_NAMESPACE_NODE *Node); 33667754Smsmith 33787031SmsmithACPI_OPERAND_OBJECT * 33887031SmsmithAcpiNsGetSecondaryObject ( 33987031Smsmith ACPI_OPERAND_OBJECT *ObjDesc); 34087031Smsmith 34187031SmsmithACPI_STATUS 34287031SmsmithAcpiNsAttachData ( 34387031Smsmith ACPI_NAMESPACE_NODE *Node, 34487031Smsmith ACPI_OBJECT_HANDLER Handler, 34587031Smsmith void *Data); 34687031Smsmith 34787031SmsmithACPI_STATUS 34887031SmsmithAcpiNsDetachData ( 34987031Smsmith ACPI_NAMESPACE_NODE *Node, 35087031Smsmith ACPI_OBJECT_HANDLER Handler); 35187031Smsmith 35287031SmsmithACPI_STATUS 35387031SmsmithAcpiNsGetAttachedData ( 35487031Smsmith ACPI_NAMESPACE_NODE *Node, 35587031Smsmith ACPI_OBJECT_HANDLER Handler, 35687031Smsmith void **Data); 35787031Smsmith 35887031Smsmith 35967754Smsmith/* 360199337Sjkim * nsrepair - General return object repair for all 361199337Sjkim * predefined methods/objects 362197104Sjkim */ 363197104SjkimACPI_STATUS 364197104SjkimAcpiNsRepairObject ( 365197104Sjkim ACPI_PREDEFINED_DATA *Data, 366197104Sjkim UINT32 ExpectedBtypes, 367197104Sjkim UINT32 PackageIndex, 368197104Sjkim ACPI_OPERAND_OBJECT **ReturnObjectPtr); 369197104Sjkim 370197104SjkimACPI_STATUS 371197104SjkimAcpiNsRepairPackageList ( 372197104Sjkim ACPI_PREDEFINED_DATA *Data, 373197104Sjkim ACPI_OPERAND_OBJECT **ObjDescPtr); 374197104Sjkim 375202771SjkimACPI_STATUS 376202771SjkimAcpiNsRepairNullElement ( 377202771Sjkim ACPI_PREDEFINED_DATA *Data, 378202771Sjkim UINT32 ExpectedBtypes, 379202771Sjkim UINT32 PackageIndex, 380202771Sjkim ACPI_OPERAND_OBJECT **ReturnObjectPtr); 381197104Sjkim 382202771Sjkimvoid 383202771SjkimAcpiNsRemoveNullElements ( 384202771Sjkim ACPI_PREDEFINED_DATA *Data, 385202771Sjkim UINT8 PackageType, 386202771Sjkim ACPI_OPERAND_OBJECT *ObjDesc); 387202771Sjkim 388202771Sjkim 389197104Sjkim/* 390199337Sjkim * nsrepair2 - Return object repair for specific 391199337Sjkim * predefined methods/objects 392199337Sjkim */ 393199337SjkimACPI_STATUS 394199337SjkimAcpiNsComplexRepairs ( 395199337Sjkim ACPI_PREDEFINED_DATA *Data, 396199337Sjkim ACPI_NAMESPACE_NODE *Node, 397199337Sjkim ACPI_STATUS ValidateStatus, 398199337Sjkim ACPI_OPERAND_OBJECT **ReturnObjectPtr); 399199337Sjkim 400199337Sjkim 401199337Sjkim/* 402151937Sjkim * nssearch - Namespace searching and entry 40367754Smsmith */ 40467754SmsmithACPI_STATUS 40567754SmsmithAcpiNsSearchAndEnter ( 40667754Smsmith UINT32 EntryName, 40767754Smsmith ACPI_WALK_STATE *WalkState, 40867754Smsmith ACPI_NAMESPACE_NODE *Node, 40991116Smsmith ACPI_INTERPRETER_MODE InterpreterMode, 41091116Smsmith ACPI_OBJECT_TYPE Type, 41167754Smsmith UINT32 Flags, 41267754Smsmith ACPI_NAMESPACE_NODE **RetNode); 41367754Smsmith 41467754SmsmithACPI_STATUS 415167802SjkimAcpiNsSearchOneScope ( 41667754Smsmith UINT32 EntryName, 41767754Smsmith ACPI_NAMESPACE_NODE *Node, 41891116Smsmith ACPI_OBJECT_TYPE Type, 41967754Smsmith ACPI_NAMESPACE_NODE **RetNode); 42067754Smsmith 42167754Smsmithvoid 42267754SmsmithAcpiNsInstallNode ( 42367754Smsmith ACPI_WALK_STATE *WalkState, 424107325Siwasaki ACPI_NAMESPACE_NODE *ParentNode, 425107325Siwasaki ACPI_NAMESPACE_NODE *Node, 42691116Smsmith ACPI_OBJECT_TYPE Type); 42767754Smsmith 42867754Smsmith 42967754Smsmith/* 430151937Sjkim * nsutils - Utility functions 43167754Smsmith */ 43267754SmsmithBOOLEAN 43367754SmsmithAcpiNsValidRootPrefix ( 434114237Snjl char Prefix); 43567754Smsmith 43691116SmsmithACPI_OBJECT_TYPE 43767754SmsmithAcpiNsGetType ( 43877424Smsmith ACPI_NAMESPACE_NODE *Node); 43967754Smsmith 44067754SmsmithUINT32 44167754SmsmithAcpiNsLocal ( 44291116Smsmith ACPI_OBJECT_TYPE Type); 44367754Smsmith 444104470Siwasakivoid 445114237SnjlAcpiNsPrintNodePathname ( 446114237Snjl ACPI_NAMESPACE_NODE *Node, 447193267Sjkim const char *Msg); 448114237Snjl 44967754SmsmithACPI_STATUS 45077424SmsmithAcpiNsBuildInternalName ( 45177424Smsmith ACPI_NAMESTRING_INFO *Info); 45277424Smsmith 45399679Siwasakivoid 45477424SmsmithAcpiNsGetInternalNameLength ( 45577424Smsmith ACPI_NAMESTRING_INFO *Info); 45677424Smsmith 45777424SmsmithACPI_STATUS 45867754SmsmithAcpiNsInternalizeName ( 459193267Sjkim const char *DottedName, 460114237Snjl char **ConvertedName); 46167754Smsmith 46267754SmsmithACPI_STATUS 46367754SmsmithAcpiNsExternalizeName ( 46467754Smsmith UINT32 InternalNameLength, 465193267Sjkim const char *InternalName, 46667754Smsmith UINT32 *ConvertedNameLength, 467114237Snjl char **ConvertedName); 46867754Smsmith 46967754SmsmithACPI_NAMESPACE_NODE * 470200553SjkimAcpiNsValidateHandle ( 47167754Smsmith ACPI_HANDLE Handle); 47267754Smsmith 47367754Smsmithvoid 47467754SmsmithAcpiNsTerminate ( 47567754Smsmith void); 47667754Smsmith 47767754Smsmith#endif /* __ACNAMESP_H__ */ 478