1 /******************************************************************************
3 * Name: acnamesp.h - Namespace subcomponent prototypes and defines
5 *****************************************************************************/
8 * Copyright (C) 2000 - 2011, 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 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
71 /* Flags for AcpiNsWalkNamespace */
73 #define ACPI_NS_WALK_NO_UNLOCK 0
74 #define ACPI_NS_WALK_UNLOCK 0x01
75 #define ACPI_NS_WALK_TEMP_NODES 0x02
77 /* Object is not a package element */
79 #define ACPI_NOT_PACKAGE_ELEMENT ACPI_UINT32_MAX
81 /* Always emit warning message, not dependent on node flags */
83 #define ACPI_WARN_ALWAYS 0
87 * nsinit - Namespace initialization
90 AcpiNsInitializeObjects (
94 AcpiNsInitializeDevices (
99 * nsload - Namespace loading
102 AcpiNsLoadNamespace (
108 ACPI_NAMESPACE_NODE *Node);
112 * nswalk - walk the namespace
115 AcpiNsWalkNamespace (
116 ACPI_OBJECT_TYPE Type,
117 ACPI_HANDLE StartObject,
120 ACPI_WALK_CALLBACK PreOrderVisit,
121 ACPI_WALK_CALLBACK PostOrderVisit,
125 ACPI_NAMESPACE_NODE *
127 ACPI_NAMESPACE_NODE *Parent,
128 ACPI_NAMESPACE_NODE *Child);
130 ACPI_NAMESPACE_NODE *
131 AcpiNsGetNextNodeTyped (
132 ACPI_OBJECT_TYPE Type,
133 ACPI_NAMESPACE_NODE *Parent,
134 ACPI_NAMESPACE_NODE *Child);
137 * nsparse - table parsing
142 ACPI_NAMESPACE_NODE *StartNode);
145 AcpiNsOneCompleteParse (
148 ACPI_NAMESPACE_NODE *StartNode);
152 * nsaccess - Top-level namespace access
155 AcpiNsRootInitialize (
160 ACPI_GENERIC_STATE *ScopeInfo,
162 ACPI_OBJECT_TYPE Type,
163 ACPI_INTERPRETER_MODE InterpreterMode,
165 ACPI_WALK_STATE *WalkState,
166 ACPI_NAMESPACE_NODE **RetNode);
170 * nsalloc - Named object allocation/deallocation
172 ACPI_NAMESPACE_NODE *
178 ACPI_NAMESPACE_NODE *Node);
182 ACPI_NAMESPACE_NODE *Node);
185 AcpiNsDeleteNamespaceSubtree (
186 ACPI_NAMESPACE_NODE *ParentHandle);
189 AcpiNsDeleteNamespaceByOwner (
190 ACPI_OWNER_ID OwnerId);
194 ACPI_NAMESPACE_NODE *Node);
197 AcpiNsDeleteChildren (
198 ACPI_NAMESPACE_NODE *Parent);
207 * nsdump - Namespace dump/print utilities
211 ACPI_HANDLE SearchBase,
227 AcpiNsPrintPathname (
232 AcpiNsDumpOneObject (
233 ACPI_HANDLE ObjHandle,
240 ACPI_OBJECT_TYPE Type,
243 ACPI_OWNER_ID OwnerId,
244 ACPI_HANDLE StartHandle);
248 * nseval - Namespace evaluation functions
252 ACPI_EVALUATE_INFO *Info);
255 AcpiNsExecModuleCodeList (
260 * nspredef - Support for predefined/reserved names
263 AcpiNsCheckPredefinedNames (
264 ACPI_NAMESPACE_NODE *Node,
265 UINT32 UserParamCount,
266 ACPI_STATUS ReturnStatus,
267 ACPI_OPERAND_OBJECT **ReturnObject);
269 const ACPI_PREDEFINED_INFO *
270 AcpiNsCheckForPredefinedName (
271 ACPI_NAMESPACE_NODE *Node);
274 AcpiNsCheckParameterCount (
276 ACPI_NAMESPACE_NODE *Node,
277 UINT32 UserParamCount,
278 const ACPI_PREDEFINED_INFO *Info);
282 * nsnames - Name and Scope manipulation
286 ACPI_OBJECT_TYPE Type);
289 AcpiNsBuildExternalPath (
290 ACPI_NAMESPACE_NODE *Node,
295 AcpiNsGetExternalPathname (
296 ACPI_NAMESPACE_NODE *Node);
299 AcpiNsNameOfCurrentScope (
300 ACPI_WALK_STATE *WalkState);
303 AcpiNsHandleToPathname (
304 ACPI_HANDLE TargetHandle,
305 ACPI_BUFFER *Buffer);
309 ACPI_NAMESPACE_NODE *ObjNode,
314 ACPI_NAMESPACE_NODE *PrefixNode,
315 const char *ExternalPathname,
317 ACPI_NAMESPACE_NODE **OutNode);
320 AcpiNsGetPathnameLength (
321 ACPI_NAMESPACE_NODE *Node);
325 * nsobject - Object management for namespace nodes
329 ACPI_NAMESPACE_NODE *Node,
330 ACPI_OPERAND_OBJECT *Object,
331 ACPI_OBJECT_TYPE Type);
333 ACPI_OPERAND_OBJECT *
334 AcpiNsGetAttachedObject (
335 ACPI_NAMESPACE_NODE *Node);
337 ACPI_OPERAND_OBJECT *
338 AcpiNsGetSecondaryObject (
339 ACPI_OPERAND_OBJECT *ObjDesc);
343 ACPI_NAMESPACE_NODE *Node,
344 ACPI_OBJECT_HANDLER Handler,
349 ACPI_NAMESPACE_NODE *Node,
350 ACPI_OBJECT_HANDLER Handler);
353 AcpiNsGetAttachedData (
354 ACPI_NAMESPACE_NODE *Node,
355 ACPI_OBJECT_HANDLER Handler,
360 * nsrepair - General return object repair for all
361 * predefined methods/objects
365 ACPI_PREDEFINED_DATA *Data,
366 UINT32 ExpectedBtypes,
368 ACPI_OPERAND_OBJECT **ReturnObjectPtr);
371 AcpiNsRepairPackageList (
372 ACPI_PREDEFINED_DATA *Data,
373 ACPI_OPERAND_OBJECT **ObjDescPtr);
376 AcpiNsRepairNullElement (
377 ACPI_PREDEFINED_DATA *Data,
378 UINT32 ExpectedBtypes,
380 ACPI_OPERAND_OBJECT **ReturnObjectPtr);
383 AcpiNsRemoveNullElements (
384 ACPI_PREDEFINED_DATA *Data,
386 ACPI_OPERAND_OBJECT *ObjDesc);
390 * nsrepair2 - Return object repair for specific
391 * predefined methods/objects
394 AcpiNsComplexRepairs (
395 ACPI_PREDEFINED_DATA *Data,
396 ACPI_NAMESPACE_NODE *Node,
397 ACPI_STATUS ValidateStatus,
398 ACPI_OPERAND_OBJECT **ReturnObjectPtr);
402 * nssearch - Namespace searching and entry
405 AcpiNsSearchAndEnter (
407 ACPI_WALK_STATE *WalkState,
408 ACPI_NAMESPACE_NODE *Node,
409 ACPI_INTERPRETER_MODE InterpreterMode,
410 ACPI_OBJECT_TYPE Type,
412 ACPI_NAMESPACE_NODE **RetNode);
415 AcpiNsSearchOneScope (
417 ACPI_NAMESPACE_NODE *Node,
418 ACPI_OBJECT_TYPE Type,
419 ACPI_NAMESPACE_NODE **RetNode);
423 ACPI_WALK_STATE *WalkState,
424 ACPI_NAMESPACE_NODE *ParentNode,
425 ACPI_NAMESPACE_NODE *Node,
426 ACPI_OBJECT_TYPE Type);
430 * nsutils - Utility functions
433 AcpiNsValidRootPrefix (
438 ACPI_NAMESPACE_NODE *Node);
442 ACPI_OBJECT_TYPE Type);
445 AcpiNsPrintNodePathname (
446 ACPI_NAMESPACE_NODE *Node,
450 AcpiNsBuildInternalName (
451 ACPI_NAMESTRING_INFO *Info);
454 AcpiNsGetInternalNameLength (
455 ACPI_NAMESTRING_INFO *Info);
458 AcpiNsInternalizeName (
459 const char *DottedName,
460 char **ConvertedName);
463 AcpiNsExternalizeName (
464 UINT32 InternalNameLength,
465 const char *InternalName,
466 UINT32 *ConvertedNameLength,
467 char **ConvertedName);
469 ACPI_NAMESPACE_NODE *
470 AcpiNsValidateHandle (
477 #endif /* __ACNAMESP_H__ */