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