1 /******************************************************************************
3 * Name: acnamesp.h - Namespace subcomponent prototypes and defines
5 *****************************************************************************/
8 * Copyright (C) 2000 - 2014, Intel Corp.
11 * Redistribution and use in source and binary forms, with or without
12 * modification, are permitted provided that the following conditions
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.
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.
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.
44 #ifndef __ACNAMESP_H__
45 #define __ACNAMESP_H__
48 #pragma pack(push) /* Set default struct packing */
50 /* To search the entire name space, pass this as SearchBase */
52 #define ACPI_NS_ALL ((ACPI_HANDLE)0)
55 * Elements of AcpiNsProperties are bit significant
56 * and should be one-to-one with values of ACPI_OBJECT_TYPE
58 #define ACPI_NS_NORMAL 0
59 #define ACPI_NS_NEWSCOPE 1 /* a definition of this type opens a name scope */
60 #define ACPI_NS_LOCAL 2 /* suppress search of enclosing scopes */
62 /* Flags for AcpiNsLookup, AcpiNsSearchAndEnter */
64 #define ACPI_NS_NO_UPSEARCH 0
65 #define ACPI_NS_SEARCH_PARENT 0x01
66 #define ACPI_NS_DONT_OPEN_SCOPE 0x02
67 #define ACPI_NS_NO_PEER_SEARCH 0x04
68 #define ACPI_NS_ERROR_IF_FOUND 0x08
69 #define ACPI_NS_PREFIX_IS_SCOPE 0x10
70 #define ACPI_NS_EXTERNAL 0x20
71 #define ACPI_NS_TEMPORARY 0x40
73 /* Flags for AcpiNsWalkNamespace */
75 #define ACPI_NS_WALK_NO_UNLOCK 0
76 #define ACPI_NS_WALK_UNLOCK 0x01
77 #define ACPI_NS_WALK_TEMP_NODES 0x02
79 /* Object is not a package element */
81 #define ACPI_NOT_PACKAGE_ELEMENT ACPI_UINT32_MAX
83 /* Always emit warning message, not dependent on node flags */
85 #define ACPI_WARN_ALWAYS 0
89 * nsinit - Namespace initialization
92 AcpiNsInitializeObjects (
96 AcpiNsInitializeDevices (
101 * nsload - Namespace loading
104 AcpiNsLoadNamespace (
110 ACPI_NAMESPACE_NODE *Node);
114 * nswalk - walk the namespace
117 AcpiNsWalkNamespace (
118 ACPI_OBJECT_TYPE Type,
119 ACPI_HANDLE StartObject,
122 ACPI_WALK_CALLBACK DescendingCallback,
123 ACPI_WALK_CALLBACK AscendingCallback,
127 ACPI_NAMESPACE_NODE *
129 ACPI_NAMESPACE_NODE *Parent,
130 ACPI_NAMESPACE_NODE *Child);
132 ACPI_NAMESPACE_NODE *
133 AcpiNsGetNextNodeTyped (
134 ACPI_OBJECT_TYPE Type,
135 ACPI_NAMESPACE_NODE *Parent,
136 ACPI_NAMESPACE_NODE *Child);
139 * nsparse - table parsing
144 ACPI_NAMESPACE_NODE *StartNode);
147 AcpiNsOneCompleteParse (
150 ACPI_NAMESPACE_NODE *StartNode);
154 * nsaccess - Top-level namespace access
157 AcpiNsRootInitialize (
162 ACPI_GENERIC_STATE *ScopeInfo,
164 ACPI_OBJECT_TYPE Type,
165 ACPI_INTERPRETER_MODE InterpreterMode,
167 ACPI_WALK_STATE *WalkState,
168 ACPI_NAMESPACE_NODE **RetNode);
172 * nsalloc - Named object allocation/deallocation
174 ACPI_NAMESPACE_NODE *
180 ACPI_NAMESPACE_NODE *Node);
184 ACPI_NAMESPACE_NODE *Node);
187 AcpiNsDeleteNamespaceSubtree (
188 ACPI_NAMESPACE_NODE *ParentHandle);
191 AcpiNsDeleteNamespaceByOwner (
192 ACPI_OWNER_ID OwnerId);
196 ACPI_NAMESPACE_NODE *Node);
199 AcpiNsDeleteChildren (
200 ACPI_NAMESPACE_NODE *Parent);
209 * nsconvert - Dynamic object conversion routines
212 AcpiNsConvertToInteger (
213 ACPI_OPERAND_OBJECT *OriginalObject,
214 ACPI_OPERAND_OBJECT **ReturnObject);
217 AcpiNsConvertToString (
218 ACPI_OPERAND_OBJECT *OriginalObject,
219 ACPI_OPERAND_OBJECT **ReturnObject);
222 AcpiNsConvertToBuffer (
223 ACPI_OPERAND_OBJECT *OriginalObject,
224 ACPI_OPERAND_OBJECT **ReturnObject);
227 AcpiNsConvertToUnicode (
228 ACPI_OPERAND_OBJECT *OriginalObject,
229 ACPI_OPERAND_OBJECT **ReturnObject);
232 AcpiNsConvertToResource (
233 ACPI_OPERAND_OBJECT *OriginalObject,
234 ACPI_OPERAND_OBJECT **ReturnObject);
238 * nsdump - Namespace dump/print utilities
242 ACPI_HANDLE SearchBase,
258 AcpiNsPrintPathname (
263 AcpiNsDumpOneObject (
264 ACPI_HANDLE ObjHandle,
271 ACPI_OBJECT_TYPE Type,
274 ACPI_OWNER_ID OwnerId,
275 ACPI_HANDLE StartHandle);
278 AcpiNsDumpObjectPaths (
279 ACPI_OBJECT_TYPE Type,
282 ACPI_OWNER_ID OwnerId,
283 ACPI_HANDLE StartHandle);
287 * nseval - Namespace evaluation functions
291 ACPI_EVALUATE_INFO *Info);
294 AcpiNsExecModuleCodeList (
299 * nsarguments - Argument count/type checking for predefined/reserved names
302 AcpiNsCheckArgumentCount (
304 ACPI_NAMESPACE_NODE *Node,
305 UINT32 UserParamCount,
306 const ACPI_PREDEFINED_INFO *Info);
309 AcpiNsCheckAcpiCompliance (
311 ACPI_NAMESPACE_NODE *Node,
312 const ACPI_PREDEFINED_INFO *Predefined);
315 AcpiNsCheckArgumentTypes (
316 ACPI_EVALUATE_INFO *Info);
320 * nspredef - Return value checking for predefined/reserved names
323 AcpiNsCheckReturnValue (
324 ACPI_NAMESPACE_NODE *Node,
325 ACPI_EVALUATE_INFO *Info,
326 UINT32 UserParamCount,
327 ACPI_STATUS ReturnStatus,
328 ACPI_OPERAND_OBJECT **ReturnObject);
331 AcpiNsCheckObjectType (
332 ACPI_EVALUATE_INFO *Info,
333 ACPI_OPERAND_OBJECT **ReturnObjectPtr,
334 UINT32 ExpectedBtypes,
335 UINT32 PackageIndex);
339 * nsprepkg - Validation of predefined name packages
343 ACPI_EVALUATE_INFO *Info,
344 ACPI_OPERAND_OBJECT **ReturnObjectPtr);
348 * nsnames - Name and Scope manipulation
352 ACPI_OBJECT_TYPE Type);
355 AcpiNsBuildExternalPath (
356 ACPI_NAMESPACE_NODE *Node,
361 AcpiNsGetExternalPathname (
362 ACPI_NAMESPACE_NODE *Node);
365 AcpiNsNameOfCurrentScope (
366 ACPI_WALK_STATE *WalkState);
369 AcpiNsHandleToPathname (
370 ACPI_HANDLE TargetHandle,
371 ACPI_BUFFER *Buffer);
375 ACPI_NAMESPACE_NODE *ObjNode,
380 ACPI_NAMESPACE_NODE *PrefixNode,
381 const char *ExternalPathname,
383 ACPI_NAMESPACE_NODE **OutNode);
386 AcpiNsGetPathnameLength (
387 ACPI_NAMESPACE_NODE *Node);
391 * nsobject - Object management for namespace nodes
395 ACPI_NAMESPACE_NODE *Node,
396 ACPI_OPERAND_OBJECT *Object,
397 ACPI_OBJECT_TYPE Type);
399 ACPI_OPERAND_OBJECT *
400 AcpiNsGetAttachedObject (
401 ACPI_NAMESPACE_NODE *Node);
403 ACPI_OPERAND_OBJECT *
404 AcpiNsGetSecondaryObject (
405 ACPI_OPERAND_OBJECT *ObjDesc);
409 ACPI_NAMESPACE_NODE *Node,
410 ACPI_OBJECT_HANDLER Handler,
415 ACPI_NAMESPACE_NODE *Node,
416 ACPI_OBJECT_HANDLER Handler);
419 AcpiNsGetAttachedData (
420 ACPI_NAMESPACE_NODE *Node,
421 ACPI_OBJECT_HANDLER Handler,
426 * nsrepair - General return object repair for all
427 * predefined methods/objects
431 ACPI_EVALUATE_INFO *Info,
432 UINT32 ExpectedBtypes,
434 ACPI_OPERAND_OBJECT **ReturnObjectPtr);
437 AcpiNsWrapWithPackage (
438 ACPI_EVALUATE_INFO *Info,
439 ACPI_OPERAND_OBJECT *OriginalObject,
440 ACPI_OPERAND_OBJECT **ObjDescPtr);
443 AcpiNsRepairNullElement (
444 ACPI_EVALUATE_INFO *Info,
445 UINT32 ExpectedBtypes,
447 ACPI_OPERAND_OBJECT **ReturnObjectPtr);
450 AcpiNsRemoveNullElements (
451 ACPI_EVALUATE_INFO *Info,
453 ACPI_OPERAND_OBJECT *ObjDesc);
457 * nsrepair2 - Return object repair for specific
458 * predefined methods/objects
461 AcpiNsComplexRepairs (
462 ACPI_EVALUATE_INFO *Info,
463 ACPI_NAMESPACE_NODE *Node,
464 ACPI_STATUS ValidateStatus,
465 ACPI_OPERAND_OBJECT **ReturnObjectPtr);
469 * nssearch - Namespace searching and entry
472 AcpiNsSearchAndEnter (
474 ACPI_WALK_STATE *WalkState,
475 ACPI_NAMESPACE_NODE *Node,
476 ACPI_INTERPRETER_MODE InterpreterMode,
477 ACPI_OBJECT_TYPE Type,
479 ACPI_NAMESPACE_NODE **RetNode);
482 AcpiNsSearchOneScope (
484 ACPI_NAMESPACE_NODE *Node,
485 ACPI_OBJECT_TYPE Type,
486 ACPI_NAMESPACE_NODE **RetNode);
490 ACPI_WALK_STATE *WalkState,
491 ACPI_NAMESPACE_NODE *ParentNode,
492 ACPI_NAMESPACE_NODE *Node,
493 ACPI_OBJECT_TYPE Type);
497 * nsutils - Utility functions
501 ACPI_NAMESPACE_NODE *Node);
505 ACPI_OBJECT_TYPE Type);
508 AcpiNsPrintNodePathname (
509 ACPI_NAMESPACE_NODE *Node,
513 AcpiNsBuildInternalName (
514 ACPI_NAMESTRING_INFO *Info);
517 AcpiNsGetInternalNameLength (
518 ACPI_NAMESTRING_INFO *Info);
521 AcpiNsInternalizeName (
522 const char *DottedName,
523 char **ConvertedName);
526 AcpiNsExternalizeName (
527 UINT32 InternalNameLength,
528 const char *InternalName,
529 UINT32 *ConvertedNameLength,
530 char **ConvertedName);
532 ACPI_NAMESPACE_NODE *
533 AcpiNsValidateHandle (
540 #pragma pack(pop) /* Restore original struct packing */
542 #endif /* __ACNAMESP_H__ */