492f18720cb95f236222dbe08dbd8870e6bcf6cc
[reactos.git] / reactos / drivers / bus / acpi / acpica / include / acnamesp.h
1 /******************************************************************************
2 *
3 * Name: acnamesp.h - Namespace subcomponent prototypes and defines
4 *
5 *****************************************************************************/
6
7 /*
8 * Copyright (C) 2000 - 2016, 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 #define ACPI_NS_OVERRIDE_IF_FOUND 0x80
71
72 /* Flags for AcpiNsWalkNamespace */
73
74 #define ACPI_NS_WALK_NO_UNLOCK 0
75 #define ACPI_NS_WALK_UNLOCK 0x01
76 #define ACPI_NS_WALK_TEMP_NODES 0x02
77
78 /* Object is not a package element */
79
80 #define ACPI_NOT_PACKAGE_ELEMENT ACPI_UINT32_MAX
81 #define ACPI_ALL_PACKAGE_ELEMENTS (ACPI_UINT32_MAX-1)
82
83 /* Always emit warning message, not dependent on node flags */
84
85 #define ACPI_WARN_ALWAYS 0
86
87
88 /*
89 * nsinit - Namespace initialization
90 */
91 ACPI_STATUS
92 AcpiNsInitializeObjects (
93 void);
94
95 ACPI_STATUS
96 AcpiNsInitializeDevices (
97 void);
98
99
100 /*
101 * nsload - Namespace loading
102 */
103 ACPI_STATUS
104 AcpiNsLoadNamespace (
105 void);
106
107 ACPI_STATUS
108 AcpiNsLoadTable (
109 UINT32 TableIndex,
110 ACPI_NAMESPACE_NODE *Node);
111
112
113 /*
114 * nswalk - walk the namespace
115 */
116 ACPI_STATUS
117 AcpiNsWalkNamespace (
118 ACPI_OBJECT_TYPE Type,
119 ACPI_HANDLE StartObject,
120 UINT32 MaxDepth,
121 UINT32 Flags,
122 ACPI_WALK_CALLBACK DescendingCallback,
123 ACPI_WALK_CALLBACK AscendingCallback,
124 void *Context,
125 void **ReturnValue);
126
127 ACPI_NAMESPACE_NODE *
128 AcpiNsGetNextNode (
129 ACPI_NAMESPACE_NODE *Parent,
130 ACPI_NAMESPACE_NODE *Child);
131
132 ACPI_NAMESPACE_NODE *
133 AcpiNsGetNextNodeTyped (
134 ACPI_OBJECT_TYPE Type,
135 ACPI_NAMESPACE_NODE *Parent,
136 ACPI_NAMESPACE_NODE *Child);
137
138 /*
139 * nsparse - table parsing
140 */
141 ACPI_STATUS
142 AcpiNsParseTable (
143 UINT32 TableIndex,
144 ACPI_NAMESPACE_NODE *StartNode);
145
146 ACPI_STATUS
147 AcpiNsOneCompleteParse (
148 UINT32 PassNumber,
149 UINT32 TableIndex,
150 ACPI_NAMESPACE_NODE *StartNode);
151
152
153 /*
154 * nsaccess - Top-level namespace access
155 */
156 ACPI_STATUS
157 AcpiNsRootInitialize (
158 void);
159
160 ACPI_STATUS
161 AcpiNsLookup (
162 ACPI_GENERIC_STATE *ScopeInfo,
163 char *Name,
164 ACPI_OBJECT_TYPE Type,
165 ACPI_INTERPRETER_MODE InterpreterMode,
166 UINT32 Flags,
167 ACPI_WALK_STATE *WalkState,
168 ACPI_NAMESPACE_NODE **RetNode);
169
170
171 /*
172 * nsalloc - Named object allocation/deallocation
173 */
174 ACPI_NAMESPACE_NODE *
175 AcpiNsCreateNode (
176 UINT32 Name);
177
178 void
179 AcpiNsDeleteNode (
180 ACPI_NAMESPACE_NODE *Node);
181
182 void
183 AcpiNsRemoveNode (
184 ACPI_NAMESPACE_NODE *Node);
185
186 void
187 AcpiNsDeleteNamespaceSubtree (
188 ACPI_NAMESPACE_NODE *ParentHandle);
189
190 void
191 AcpiNsDeleteNamespaceByOwner (
192 ACPI_OWNER_ID OwnerId);
193
194 void
195 AcpiNsDetachObject (
196 ACPI_NAMESPACE_NODE *Node);
197
198 void
199 AcpiNsDeleteChildren (
200 ACPI_NAMESPACE_NODE *Parent);
201
202 int
203 AcpiNsCompareNames (
204 char *Name1,
205 char *Name2);
206
207
208 /*
209 * nsconvert - Dynamic object conversion routines
210 */
211 ACPI_STATUS
212 AcpiNsConvertToInteger (
213 ACPI_OPERAND_OBJECT *OriginalObject,
214 ACPI_OPERAND_OBJECT **ReturnObject);
215
216 ACPI_STATUS
217 AcpiNsConvertToString (
218 ACPI_OPERAND_OBJECT *OriginalObject,
219 ACPI_OPERAND_OBJECT **ReturnObject);
220
221 ACPI_STATUS
222 AcpiNsConvertToBuffer (
223 ACPI_OPERAND_OBJECT *OriginalObject,
224 ACPI_OPERAND_OBJECT **ReturnObject);
225
226 ACPI_STATUS
227 AcpiNsConvertToUnicode (
228 ACPI_NAMESPACE_NODE *Scope,
229 ACPI_OPERAND_OBJECT *OriginalObject,
230 ACPI_OPERAND_OBJECT **ReturnObject);
231
232 ACPI_STATUS
233 AcpiNsConvertToResource (
234 ACPI_NAMESPACE_NODE *Scope,
235 ACPI_OPERAND_OBJECT *OriginalObject,
236 ACPI_OPERAND_OBJECT **ReturnObject);
237
238 ACPI_STATUS
239 AcpiNsConvertToReference (
240 ACPI_NAMESPACE_NODE *Scope,
241 ACPI_OPERAND_OBJECT *OriginalObject,
242 ACPI_OPERAND_OBJECT **ReturnObject);
243
244
245 /*
246 * nsdump - Namespace dump/print utilities
247 */
248 void
249 AcpiNsDumpTables (
250 ACPI_HANDLE SearchBase,
251 UINT32 MaxDepth);
252
253 void
254 AcpiNsDumpEntry (
255 ACPI_HANDLE Handle,
256 UINT32 DebugLevel);
257
258 void
259 AcpiNsDumpPathname (
260 ACPI_HANDLE Handle,
261 char *Msg,
262 UINT32 Level,
263 UINT32 Component);
264
265 void
266 AcpiNsPrintPathname (
267 UINT32 NumSegments,
268 char *Pathname);
269
270 ACPI_STATUS
271 AcpiNsDumpOneObject (
272 ACPI_HANDLE ObjHandle,
273 UINT32 Level,
274 void *Context,
275 void **ReturnValue);
276
277 void
278 AcpiNsDumpObjects (
279 ACPI_OBJECT_TYPE Type,
280 UINT8 DisplayType,
281 UINT32 MaxDepth,
282 ACPI_OWNER_ID OwnerId,
283 ACPI_HANDLE StartHandle);
284
285 void
286 AcpiNsDumpObjectPaths (
287 ACPI_OBJECT_TYPE Type,
288 UINT8 DisplayType,
289 UINT32 MaxDepth,
290 ACPI_OWNER_ID OwnerId,
291 ACPI_HANDLE StartHandle);
292
293
294 /*
295 * nseval - Namespace evaluation functions
296 */
297 ACPI_STATUS
298 AcpiNsEvaluate (
299 ACPI_EVALUATE_INFO *Info);
300
301 void
302 AcpiNsExecModuleCodeList (
303 void);
304
305
306 /*
307 * nsarguments - Argument count/type checking for predefined/reserved names
308 */
309 void
310 AcpiNsCheckArgumentCount (
311 char *Pathname,
312 ACPI_NAMESPACE_NODE *Node,
313 UINT32 UserParamCount,
314 const ACPI_PREDEFINED_INFO *Info);
315
316 void
317 AcpiNsCheckAcpiCompliance (
318 char *Pathname,
319 ACPI_NAMESPACE_NODE *Node,
320 const ACPI_PREDEFINED_INFO *Predefined);
321
322 void
323 AcpiNsCheckArgumentTypes (
324 ACPI_EVALUATE_INFO *Info);
325
326
327 /*
328 * nspredef - Return value checking for predefined/reserved names
329 */
330 ACPI_STATUS
331 AcpiNsCheckReturnValue (
332 ACPI_NAMESPACE_NODE *Node,
333 ACPI_EVALUATE_INFO *Info,
334 UINT32 UserParamCount,
335 ACPI_STATUS ReturnStatus,
336 ACPI_OPERAND_OBJECT **ReturnObject);
337
338 ACPI_STATUS
339 AcpiNsCheckObjectType (
340 ACPI_EVALUATE_INFO *Info,
341 ACPI_OPERAND_OBJECT **ReturnObjectPtr,
342 UINT32 ExpectedBtypes,
343 UINT32 PackageIndex);
344
345
346 /*
347 * nsprepkg - Validation of predefined name packages
348 */
349 ACPI_STATUS
350 AcpiNsCheckPackage (
351 ACPI_EVALUATE_INFO *Info,
352 ACPI_OPERAND_OBJECT **ReturnObjectPtr);
353
354
355 /*
356 * nsnames - Name and Scope manipulation
357 */
358 UINT32
359 AcpiNsOpensScope (
360 ACPI_OBJECT_TYPE Type);
361
362 char *
363 AcpiNsGetExternalPathname (
364 ACPI_NAMESPACE_NODE *Node);
365
366 UINT32
367 AcpiNsBuildNormalizedPath (
368 ACPI_NAMESPACE_NODE *Node,
369 char *FullPath,
370 UINT32 PathSize,
371 BOOLEAN NoTrailing);
372
373 char *
374 AcpiNsGetNormalizedPathname (
375 ACPI_NAMESPACE_NODE *Node,
376 BOOLEAN NoTrailing);
377
378 char *
379 AcpiNsNameOfCurrentScope (
380 ACPI_WALK_STATE *WalkState);
381
382 ACPI_STATUS
383 AcpiNsHandleToPathname (
384 ACPI_HANDLE TargetHandle,
385 ACPI_BUFFER *Buffer,
386 BOOLEAN NoTrailing);
387
388 BOOLEAN
389 AcpiNsPatternMatch (
390 ACPI_NAMESPACE_NODE *ObjNode,
391 char *SearchFor);
392
393 ACPI_STATUS
394 AcpiNsGetNode (
395 ACPI_NAMESPACE_NODE *PrefixNode,
396 const char *ExternalPathname,
397 UINT32 Flags,
398 ACPI_NAMESPACE_NODE **OutNode);
399
400 ACPI_SIZE
401 AcpiNsGetPathnameLength (
402 ACPI_NAMESPACE_NODE *Node);
403
404
405 /*
406 * nsobject - Object management for namespace nodes
407 */
408 ACPI_STATUS
409 AcpiNsAttachObject (
410 ACPI_NAMESPACE_NODE *Node,
411 ACPI_OPERAND_OBJECT *Object,
412 ACPI_OBJECT_TYPE Type);
413
414 ACPI_OPERAND_OBJECT *
415 AcpiNsGetAttachedObject (
416 ACPI_NAMESPACE_NODE *Node);
417
418 ACPI_OPERAND_OBJECT *
419 AcpiNsGetSecondaryObject (
420 ACPI_OPERAND_OBJECT *ObjDesc);
421
422 ACPI_STATUS
423 AcpiNsAttachData (
424 ACPI_NAMESPACE_NODE *Node,
425 ACPI_OBJECT_HANDLER Handler,
426 void *Data);
427
428 ACPI_STATUS
429 AcpiNsDetachData (
430 ACPI_NAMESPACE_NODE *Node,
431 ACPI_OBJECT_HANDLER Handler);
432
433 ACPI_STATUS
434 AcpiNsGetAttachedData (
435 ACPI_NAMESPACE_NODE *Node,
436 ACPI_OBJECT_HANDLER Handler,
437 void **Data);
438
439
440 /*
441 * nsrepair - General return object repair for all
442 * predefined methods/objects
443 */
444 ACPI_STATUS
445 AcpiNsSimpleRepair (
446 ACPI_EVALUATE_INFO *Info,
447 UINT32 ExpectedBtypes,
448 UINT32 PackageIndex,
449 ACPI_OPERAND_OBJECT **ReturnObjectPtr);
450
451 ACPI_STATUS
452 AcpiNsWrapWithPackage (
453 ACPI_EVALUATE_INFO *Info,
454 ACPI_OPERAND_OBJECT *OriginalObject,
455 ACPI_OPERAND_OBJECT **ObjDescPtr);
456
457 ACPI_STATUS
458 AcpiNsRepairNullElement (
459 ACPI_EVALUATE_INFO *Info,
460 UINT32 ExpectedBtypes,
461 UINT32 PackageIndex,
462 ACPI_OPERAND_OBJECT **ReturnObjectPtr);
463
464 void
465 AcpiNsRemoveNullElements (
466 ACPI_EVALUATE_INFO *Info,
467 UINT8 PackageType,
468 ACPI_OPERAND_OBJECT *ObjDesc);
469
470
471 /*
472 * nsrepair2 - Return object repair for specific
473 * predefined methods/objects
474 */
475 ACPI_STATUS
476 AcpiNsComplexRepairs (
477 ACPI_EVALUATE_INFO *Info,
478 ACPI_NAMESPACE_NODE *Node,
479 ACPI_STATUS ValidateStatus,
480 ACPI_OPERAND_OBJECT **ReturnObjectPtr);
481
482
483 /*
484 * nssearch - Namespace searching and entry
485 */
486 ACPI_STATUS
487 AcpiNsSearchAndEnter (
488 UINT32 EntryName,
489 ACPI_WALK_STATE *WalkState,
490 ACPI_NAMESPACE_NODE *Node,
491 ACPI_INTERPRETER_MODE InterpreterMode,
492 ACPI_OBJECT_TYPE Type,
493 UINT32 Flags,
494 ACPI_NAMESPACE_NODE **RetNode);
495
496 ACPI_STATUS
497 AcpiNsSearchOneScope (
498 UINT32 EntryName,
499 ACPI_NAMESPACE_NODE *Node,
500 ACPI_OBJECT_TYPE Type,
501 ACPI_NAMESPACE_NODE **RetNode);
502
503 void
504 AcpiNsInstallNode (
505 ACPI_WALK_STATE *WalkState,
506 ACPI_NAMESPACE_NODE *ParentNode,
507 ACPI_NAMESPACE_NODE *Node,
508 ACPI_OBJECT_TYPE Type);
509
510
511 /*
512 * nsutils - Utility functions
513 */
514 ACPI_OBJECT_TYPE
515 AcpiNsGetType (
516 ACPI_NAMESPACE_NODE *Node);
517
518 UINT32
519 AcpiNsLocal (
520 ACPI_OBJECT_TYPE Type);
521
522 void
523 AcpiNsPrintNodePathname (
524 ACPI_NAMESPACE_NODE *Node,
525 const char *Msg);
526
527 ACPI_STATUS
528 AcpiNsBuildInternalName (
529 ACPI_NAMESTRING_INFO *Info);
530
531 void
532 AcpiNsGetInternalNameLength (
533 ACPI_NAMESTRING_INFO *Info);
534
535 ACPI_STATUS
536 AcpiNsInternalizeName (
537 const char *DottedName,
538 char **ConvertedName);
539
540 ACPI_STATUS
541 AcpiNsExternalizeName (
542 UINT32 InternalNameLength,
543 const char *InternalName,
544 UINT32 *ConvertedNameLength,
545 char **ConvertedName);
546
547 ACPI_NAMESPACE_NODE *
548 AcpiNsValidateHandle (
549 ACPI_HANDLE Handle);
550
551 void
552 AcpiNsTerminate (
553 void);
554
555 #endif /* __ACNAMESP_H__ */