acnamesp.h revision 281075
1/******************************************************************************
2 *
3 * Name: acnamesp.h - Namespace subcomponent prototypes and defines
4 *
5 *****************************************************************************/
6
7/*
8 * Copyright (C) 2000 - 2015, 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
275void
276AcpiNsDumpObjectPaths (
277    ACPI_OBJECT_TYPE        Type,
278    UINT8                   DisplayType,
279    UINT32                  MaxDepth,
280    ACPI_OWNER_ID           OwnerId,
281    ACPI_HANDLE             StartHandle);
282
283
284/*
285 * nseval - Namespace evaluation functions
286 */
287ACPI_STATUS
288AcpiNsEvaluate (
289    ACPI_EVALUATE_INFO      *Info);
290
291void
292AcpiNsExecModuleCodeList (
293    void);
294
295
296/*
297 * nsarguments - Argument count/type checking for predefined/reserved names
298 */
299void
300AcpiNsCheckArgumentCount (
301    char                        *Pathname,
302    ACPI_NAMESPACE_NODE         *Node,
303    UINT32                      UserParamCount,
304    const ACPI_PREDEFINED_INFO  *Info);
305
306void
307AcpiNsCheckAcpiCompliance (
308    char                        *Pathname,
309    ACPI_NAMESPACE_NODE         *Node,
310    const ACPI_PREDEFINED_INFO  *Predefined);
311
312void
313AcpiNsCheckArgumentTypes (
314    ACPI_EVALUATE_INFO          *Info);
315
316
317/*
318 * nspredef - Return value checking for predefined/reserved names
319 */
320ACPI_STATUS
321AcpiNsCheckReturnValue (
322    ACPI_NAMESPACE_NODE         *Node,
323    ACPI_EVALUATE_INFO          *Info,
324    UINT32                      UserParamCount,
325    ACPI_STATUS                 ReturnStatus,
326    ACPI_OPERAND_OBJECT         **ReturnObject);
327
328ACPI_STATUS
329AcpiNsCheckObjectType (
330    ACPI_EVALUATE_INFO          *Info,
331    ACPI_OPERAND_OBJECT         **ReturnObjectPtr,
332    UINT32                      ExpectedBtypes,
333    UINT32                      PackageIndex);
334
335
336/*
337 * nsprepkg - Validation of predefined name packages
338 */
339ACPI_STATUS
340AcpiNsCheckPackage (
341    ACPI_EVALUATE_INFO          *Info,
342    ACPI_OPERAND_OBJECT         **ReturnObjectPtr);
343
344
345/*
346 * nsnames - Name and Scope manipulation
347 */
348UINT32
349AcpiNsOpensScope (
350    ACPI_OBJECT_TYPE        Type);
351
352ACPI_STATUS
353AcpiNsBuildExternalPath (
354    ACPI_NAMESPACE_NODE     *Node,
355    ACPI_SIZE               Size,
356    char                    *NameBuffer);
357
358char *
359AcpiNsGetExternalPathname (
360    ACPI_NAMESPACE_NODE     *Node);
361
362char *
363AcpiNsNameOfCurrentScope (
364    ACPI_WALK_STATE         *WalkState);
365
366ACPI_STATUS
367AcpiNsHandleToPathname (
368    ACPI_HANDLE             TargetHandle,
369    ACPI_BUFFER             *Buffer);
370
371BOOLEAN
372AcpiNsPatternMatch (
373    ACPI_NAMESPACE_NODE     *ObjNode,
374    char                    *SearchFor);
375
376ACPI_STATUS
377AcpiNsGetNode (
378    ACPI_NAMESPACE_NODE     *PrefixNode,
379    const char              *ExternalPathname,
380    UINT32                  Flags,
381    ACPI_NAMESPACE_NODE     **OutNode);
382
383ACPI_SIZE
384AcpiNsGetPathnameLength (
385    ACPI_NAMESPACE_NODE     *Node);
386
387
388/*
389 * nsobject - Object management for namespace nodes
390 */
391ACPI_STATUS
392AcpiNsAttachObject (
393    ACPI_NAMESPACE_NODE     *Node,
394    ACPI_OPERAND_OBJECT     *Object,
395    ACPI_OBJECT_TYPE        Type);
396
397ACPI_OPERAND_OBJECT *
398AcpiNsGetAttachedObject (
399    ACPI_NAMESPACE_NODE     *Node);
400
401ACPI_OPERAND_OBJECT *
402AcpiNsGetSecondaryObject (
403    ACPI_OPERAND_OBJECT     *ObjDesc);
404
405ACPI_STATUS
406AcpiNsAttachData (
407    ACPI_NAMESPACE_NODE     *Node,
408    ACPI_OBJECT_HANDLER     Handler,
409    void                    *Data);
410
411ACPI_STATUS
412AcpiNsDetachData (
413    ACPI_NAMESPACE_NODE     *Node,
414    ACPI_OBJECT_HANDLER     Handler);
415
416ACPI_STATUS
417AcpiNsGetAttachedData (
418    ACPI_NAMESPACE_NODE     *Node,
419    ACPI_OBJECT_HANDLER     Handler,
420    void                    **Data);
421
422
423/*
424 * nsrepair - General return object repair for all
425 * predefined methods/objects
426 */
427ACPI_STATUS
428AcpiNsSimpleRepair (
429    ACPI_EVALUATE_INFO      *Info,
430    UINT32                  ExpectedBtypes,
431    UINT32                  PackageIndex,
432    ACPI_OPERAND_OBJECT     **ReturnObjectPtr);
433
434ACPI_STATUS
435AcpiNsWrapWithPackage (
436    ACPI_EVALUATE_INFO      *Info,
437    ACPI_OPERAND_OBJECT     *OriginalObject,
438    ACPI_OPERAND_OBJECT     **ObjDescPtr);
439
440ACPI_STATUS
441AcpiNsRepairNullElement (
442    ACPI_EVALUATE_INFO      *Info,
443    UINT32                  ExpectedBtypes,
444    UINT32                  PackageIndex,
445    ACPI_OPERAND_OBJECT     **ReturnObjectPtr);
446
447void
448AcpiNsRemoveNullElements (
449    ACPI_EVALUATE_INFO      *Info,
450    UINT8                   PackageType,
451    ACPI_OPERAND_OBJECT     *ObjDesc);
452
453
454/*
455 * nsrepair2 - Return object repair for specific
456 * predefined methods/objects
457 */
458ACPI_STATUS
459AcpiNsComplexRepairs (
460    ACPI_EVALUATE_INFO      *Info,
461    ACPI_NAMESPACE_NODE     *Node,
462    ACPI_STATUS             ValidateStatus,
463    ACPI_OPERAND_OBJECT     **ReturnObjectPtr);
464
465
466/*
467 * nssearch - Namespace searching and entry
468 */
469ACPI_STATUS
470AcpiNsSearchAndEnter (
471    UINT32                  EntryName,
472    ACPI_WALK_STATE         *WalkState,
473    ACPI_NAMESPACE_NODE     *Node,
474    ACPI_INTERPRETER_MODE   InterpreterMode,
475    ACPI_OBJECT_TYPE        Type,
476    UINT32                  Flags,
477    ACPI_NAMESPACE_NODE     **RetNode);
478
479ACPI_STATUS
480AcpiNsSearchOneScope (
481    UINT32                  EntryName,
482    ACPI_NAMESPACE_NODE     *Node,
483    ACPI_OBJECT_TYPE        Type,
484    ACPI_NAMESPACE_NODE     **RetNode);
485
486void
487AcpiNsInstallNode (
488    ACPI_WALK_STATE         *WalkState,
489    ACPI_NAMESPACE_NODE     *ParentNode,
490    ACPI_NAMESPACE_NODE     *Node,
491    ACPI_OBJECT_TYPE        Type);
492
493
494/*
495 * nsutils - Utility functions
496 */
497ACPI_OBJECT_TYPE
498AcpiNsGetType (
499    ACPI_NAMESPACE_NODE     *Node);
500
501UINT32
502AcpiNsLocal (
503    ACPI_OBJECT_TYPE        Type);
504
505void
506AcpiNsPrintNodePathname (
507    ACPI_NAMESPACE_NODE     *Node,
508    const char              *Msg);
509
510ACPI_STATUS
511AcpiNsBuildInternalName (
512    ACPI_NAMESTRING_INFO    *Info);
513
514void
515AcpiNsGetInternalNameLength (
516    ACPI_NAMESTRING_INFO    *Info);
517
518ACPI_STATUS
519AcpiNsInternalizeName (
520    const char              *DottedName,
521    char                    **ConvertedName);
522
523ACPI_STATUS
524AcpiNsExternalizeName (
525    UINT32                  InternalNameLength,
526    const char              *InternalName,
527    UINT32                  *ConvertedNameLength,
528    char                    **ConvertedName);
529
530ACPI_NAMESPACE_NODE *
531AcpiNsValidateHandle (
532    ACPI_HANDLE             Handle);
533
534void
535AcpiNsTerminate (
536    void);
537
538#endif /* __ACNAMESP_H__ */
539