1 /******************************************************************************
3 * Name: acnamesp.h - Namespace subcomponent prototypes and defines
5 *****************************************************************************/
8 * Copyright (C) 2000 - 2018, 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 /* To search the entire name space, pass this as SearchBase */
50 #define ACPI_NS_ALL ((ACPI_HANDLE)0)
53 * Elements of AcpiNsProperties are bit significant
54 * and should be one-to-one with values of ACPI_OBJECT_TYPE
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 */
60 /* Flags for AcpiNsLookup, AcpiNsSearchAndEnter */
62 #define ACPI_NS_NO_UPSEARCH 0
63 #define ACPI_NS_SEARCH_PARENT 0x0001
64 #define ACPI_NS_DONT_OPEN_SCOPE 0x0002
65 #define ACPI_NS_NO_PEER_SEARCH 0x0004
66 #define ACPI_NS_ERROR_IF_FOUND 0x0008
67 #define ACPI_NS_PREFIX_IS_SCOPE 0x0010
68 #define ACPI_NS_EXTERNAL 0x0020
69 #define ACPI_NS_TEMPORARY 0x0040
70 #define ACPI_NS_OVERRIDE_IF_FOUND 0x0080
71 #define ACPI_NS_EARLY_INIT 0x0100
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
82 #define ACPI_ALL_PACKAGE_ELEMENTS (ACPI_UINT32_MAX-1)
84 /* Always emit warning message, not dependent on node flags */
86 #define ACPI_WARN_ALWAYS 0
90 * nsinit - Namespace initialization
93 AcpiNsInitializeObjects (
97 AcpiNsInitializeDevices (
101 AcpiNsInitOnePackage (
102 ACPI_HANDLE ObjHandle
,
108 * nsload - Namespace loading
111 AcpiNsLoadNamespace (
117 ACPI_NAMESPACE_NODE
*Node
);
121 * nswalk - walk the namespace
124 AcpiNsWalkNamespace (
125 ACPI_OBJECT_TYPE Type
,
126 ACPI_HANDLE StartObject
,
129 ACPI_WALK_CALLBACK DescendingCallback
,
130 ACPI_WALK_CALLBACK AscendingCallback
,
134 ACPI_NAMESPACE_NODE
*
136 ACPI_NAMESPACE_NODE
*Parent
,
137 ACPI_NAMESPACE_NODE
*Child
);
139 ACPI_NAMESPACE_NODE
*
140 AcpiNsGetNextNodeTyped (
141 ACPI_OBJECT_TYPE Type
,
142 ACPI_NAMESPACE_NODE
*Parent
,
143 ACPI_NAMESPACE_NODE
*Child
);
146 * nsparse - table parsing
151 ACPI_NAMESPACE_NODE
*StartNode
);
156 ACPI_NAMESPACE_NODE
*StartNode
);
159 AcpiNsOneCompleteParse (
162 ACPI_NAMESPACE_NODE
*StartNode
);
166 * nsaccess - Top-level namespace access
169 AcpiNsRootInitialize (
174 ACPI_GENERIC_STATE
*ScopeInfo
,
176 ACPI_OBJECT_TYPE Type
,
177 ACPI_INTERPRETER_MODE InterpreterMode
,
179 ACPI_WALK_STATE
*WalkState
,
180 ACPI_NAMESPACE_NODE
**RetNode
);
184 * nsalloc - Named object allocation/deallocation
186 ACPI_NAMESPACE_NODE
*
192 ACPI_NAMESPACE_NODE
*Node
);
196 ACPI_NAMESPACE_NODE
*Node
);
199 AcpiNsDeleteNamespaceSubtree (
200 ACPI_NAMESPACE_NODE
*ParentHandle
);
203 AcpiNsDeleteNamespaceByOwner (
204 ACPI_OWNER_ID OwnerId
);
208 ACPI_NAMESPACE_NODE
*Node
);
211 AcpiNsDeleteChildren (
212 ACPI_NAMESPACE_NODE
*Parent
);
221 * nsconvert - Dynamic object conversion routines
224 AcpiNsConvertToInteger (
225 ACPI_OPERAND_OBJECT
*OriginalObject
,
226 ACPI_OPERAND_OBJECT
**ReturnObject
);
229 AcpiNsConvertToString (
230 ACPI_OPERAND_OBJECT
*OriginalObject
,
231 ACPI_OPERAND_OBJECT
**ReturnObject
);
234 AcpiNsConvertToBuffer (
235 ACPI_OPERAND_OBJECT
*OriginalObject
,
236 ACPI_OPERAND_OBJECT
**ReturnObject
);
239 AcpiNsConvertToUnicode (
240 ACPI_NAMESPACE_NODE
*Scope
,
241 ACPI_OPERAND_OBJECT
*OriginalObject
,
242 ACPI_OPERAND_OBJECT
**ReturnObject
);
245 AcpiNsConvertToResource (
246 ACPI_NAMESPACE_NODE
*Scope
,
247 ACPI_OPERAND_OBJECT
*OriginalObject
,
248 ACPI_OPERAND_OBJECT
**ReturnObject
);
251 AcpiNsConvertToReference (
252 ACPI_NAMESPACE_NODE
*Scope
,
253 ACPI_OPERAND_OBJECT
*OriginalObject
,
254 ACPI_OPERAND_OBJECT
**ReturnObject
);
258 * nsdump - Namespace dump/print utilities
262 ACPI_HANDLE SearchBase
,
278 AcpiNsPrintPathname (
280 const char *Pathname
);
283 AcpiNsDumpOneObject (
284 ACPI_HANDLE ObjHandle
,
291 ACPI_OBJECT_TYPE Type
,
294 ACPI_OWNER_ID OwnerId
,
295 ACPI_HANDLE StartHandle
);
298 AcpiNsDumpObjectPaths (
299 ACPI_OBJECT_TYPE Type
,
302 ACPI_OWNER_ID OwnerId
,
303 ACPI_HANDLE StartHandle
);
307 * nseval - Namespace evaluation functions
311 ACPI_EVALUATE_INFO
*Info
);
314 AcpiNsExecModuleCodeList (
319 * nsarguments - Argument count/type checking for predefined/reserved names
322 AcpiNsCheckArgumentCount (
324 ACPI_NAMESPACE_NODE
*Node
,
325 UINT32 UserParamCount
,
326 const ACPI_PREDEFINED_INFO
*Info
);
329 AcpiNsCheckAcpiCompliance (
331 ACPI_NAMESPACE_NODE
*Node
,
332 const ACPI_PREDEFINED_INFO
*Predefined
);
335 AcpiNsCheckArgumentTypes (
336 ACPI_EVALUATE_INFO
*Info
);
340 * nspredef - Return value checking for predefined/reserved names
343 AcpiNsCheckReturnValue (
344 ACPI_NAMESPACE_NODE
*Node
,
345 ACPI_EVALUATE_INFO
*Info
,
346 UINT32 UserParamCount
,
347 ACPI_STATUS ReturnStatus
,
348 ACPI_OPERAND_OBJECT
**ReturnObject
);
351 AcpiNsCheckObjectType (
352 ACPI_EVALUATE_INFO
*Info
,
353 ACPI_OPERAND_OBJECT
**ReturnObjectPtr
,
354 UINT32 ExpectedBtypes
,
355 UINT32 PackageIndex
);
359 * nsprepkg - Validation of predefined name packages
363 ACPI_EVALUATE_INFO
*Info
,
364 ACPI_OPERAND_OBJECT
**ReturnObjectPtr
);
368 * nsnames - Name and Scope manipulation
372 ACPI_OBJECT_TYPE Type
);
375 AcpiNsGetExternalPathname (
376 ACPI_NAMESPACE_NODE
*Node
);
379 AcpiNsBuildNormalizedPath (
380 ACPI_NAMESPACE_NODE
*Node
,
386 AcpiNsGetNormalizedPathname (
387 ACPI_NAMESPACE_NODE
*Node
,
391 AcpiNsBuildPrefixedPathname (
392 ACPI_GENERIC_STATE
*PrefixScope
,
393 const char *InternalPath
);
396 AcpiNsNameOfCurrentScope (
397 ACPI_WALK_STATE
*WalkState
);
401 ACPI_HANDLE TargetHandle
,
402 ACPI_BUFFER
*Buffer
);
405 AcpiNsHandleToPathname (
406 ACPI_HANDLE TargetHandle
,
412 ACPI_NAMESPACE_NODE
*ObjNode
,
416 AcpiNsGetNodeUnlocked (
417 ACPI_NAMESPACE_NODE
*PrefixNode
,
418 const char *ExternalPathname
,
420 ACPI_NAMESPACE_NODE
**OutNode
);
424 ACPI_NAMESPACE_NODE
*PrefixNode
,
425 const char *ExternalPathname
,
427 ACPI_NAMESPACE_NODE
**OutNode
);
430 AcpiNsGetPathnameLength (
431 ACPI_NAMESPACE_NODE
*Node
);
435 * nsobject - Object management for namespace nodes
439 ACPI_NAMESPACE_NODE
*Node
,
440 ACPI_OPERAND_OBJECT
*Object
,
441 ACPI_OBJECT_TYPE Type
);
443 ACPI_OPERAND_OBJECT
*
444 AcpiNsGetAttachedObject (
445 ACPI_NAMESPACE_NODE
*Node
);
447 ACPI_OPERAND_OBJECT
*
448 AcpiNsGetSecondaryObject (
449 ACPI_OPERAND_OBJECT
*ObjDesc
);
453 ACPI_NAMESPACE_NODE
*Node
,
454 ACPI_OBJECT_HANDLER Handler
,
459 ACPI_NAMESPACE_NODE
*Node
,
460 ACPI_OBJECT_HANDLER Handler
);
463 AcpiNsGetAttachedData (
464 ACPI_NAMESPACE_NODE
*Node
,
465 ACPI_OBJECT_HANDLER Handler
,
470 * nsrepair - General return object repair for all
471 * predefined methods/objects
475 ACPI_EVALUATE_INFO
*Info
,
476 UINT32 ExpectedBtypes
,
478 ACPI_OPERAND_OBJECT
**ReturnObjectPtr
);
481 AcpiNsWrapWithPackage (
482 ACPI_EVALUATE_INFO
*Info
,
483 ACPI_OPERAND_OBJECT
*OriginalObject
,
484 ACPI_OPERAND_OBJECT
**ObjDescPtr
);
487 AcpiNsRepairNullElement (
488 ACPI_EVALUATE_INFO
*Info
,
489 UINT32 ExpectedBtypes
,
491 ACPI_OPERAND_OBJECT
**ReturnObjectPtr
);
494 AcpiNsRemoveNullElements (
495 ACPI_EVALUATE_INFO
*Info
,
497 ACPI_OPERAND_OBJECT
*ObjDesc
);
501 * nsrepair2 - Return object repair for specific
502 * predefined methods/objects
505 AcpiNsComplexRepairs (
506 ACPI_EVALUATE_INFO
*Info
,
507 ACPI_NAMESPACE_NODE
*Node
,
508 ACPI_STATUS ValidateStatus
,
509 ACPI_OPERAND_OBJECT
**ReturnObjectPtr
);
513 * nssearch - Namespace searching and entry
516 AcpiNsSearchAndEnter (
518 ACPI_WALK_STATE
*WalkState
,
519 ACPI_NAMESPACE_NODE
*Node
,
520 ACPI_INTERPRETER_MODE InterpreterMode
,
521 ACPI_OBJECT_TYPE Type
,
523 ACPI_NAMESPACE_NODE
**RetNode
);
526 AcpiNsSearchOneScope (
528 ACPI_NAMESPACE_NODE
*Node
,
529 ACPI_OBJECT_TYPE Type
,
530 ACPI_NAMESPACE_NODE
**RetNode
);
534 ACPI_WALK_STATE
*WalkState
,
535 ACPI_NAMESPACE_NODE
*ParentNode
,
536 ACPI_NAMESPACE_NODE
*Node
,
537 ACPI_OBJECT_TYPE Type
);
541 * nsutils - Utility functions
545 ACPI_NAMESPACE_NODE
*Node
);
549 ACPI_OBJECT_TYPE Type
);
552 AcpiNsPrintNodePathname (
553 ACPI_NAMESPACE_NODE
*Node
,
557 AcpiNsBuildInternalName (
558 ACPI_NAMESTRING_INFO
*Info
);
561 AcpiNsGetInternalNameLength (
562 ACPI_NAMESTRING_INFO
*Info
);
565 AcpiNsInternalizeName (
566 const char *DottedName
,
567 char **ConvertedName
);
570 AcpiNsExternalizeName (
571 UINT32 InternalNameLength
,
572 const char *InternalName
,
573 UINT32
*ConvertedNameLength
,
574 char **ConvertedName
);
576 ACPI_NAMESPACE_NODE
*
577 AcpiNsValidateHandle (
584 #endif /* __ACNAMESP_H__ */