ReactOS 0.4.15-dev-7681-g776c3a3
tbxface.c
Go to the documentation of this file.
1/******************************************************************************
2 *
3 * Module Name: tbxface - ACPI table-oriented external interfaces
4 *
5 *****************************************************************************/
6
7/*
8 * Copyright (C) 2000 - 2022, 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 MERCHANTABILITY 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#define EXPORT_ACPI_INTERFACES
45
46#include "acpi.h"
47#include "accommon.h"
48#include "actables.h"
49
50#define _COMPONENT ACPI_TABLES
51 ACPI_MODULE_NAME ("tbxface")
52
53
54/*******************************************************************************
55 *
56 * FUNCTION: AcpiAllocateRootTable
57 *
58 * PARAMETERS: InitialTableCount - Size of InitialTableArray, in number of
59 * ACPI_TABLE_DESC structures
60 *
61 * RETURN: Status
62 *
63 * DESCRIPTION: Allocate a root table array. Used by iASL compiler and
64 * AcpiInitializeTables.
65 *
66 ******************************************************************************/
67
70 UINT32 InitialTableCount)
71{
72
73 AcpiGbl_RootTableList.MaxTableCount = InitialTableCount;
74 AcpiGbl_RootTableList.Flags = ACPI_ROOT_ALLOW_RESIZE;
75
76 return (AcpiTbResizeRootTableList ());
77}
78
79
80/*******************************************************************************
81 *
82 * FUNCTION: AcpiInitializeTables
83 *
84 * PARAMETERS: InitialTableArray - Pointer to an array of pre-allocated
85 * ACPI_TABLE_DESC structures. If NULL, the
86 * array is dynamically allocated.
87 * InitialTableCount - Size of InitialTableArray, in number of
88 * ACPI_TABLE_DESC structures
89 * AllowResize - Flag to tell Table Manager if resize of
90 * pre-allocated array is allowed. Ignored
91 * if InitialTableArray is NULL.
92 *
93 * RETURN: Status
94 *
95 * DESCRIPTION: Initialize the table manager, get the RSDP and RSDT/XSDT.
96 *
97 * NOTE: Allows static allocation of the initial table array in order
98 * to avoid the use of dynamic memory in confined environments
99 * such as the kernel boot sequence where it may not be available.
100 *
101 * If the host OS memory managers are initialized, use NULL for
102 * InitialTableArray, and the table will be dynamically allocated.
103 *
104 ******************************************************************************/
105
108 ACPI_TABLE_DESC *InitialTableArray,
109 UINT32 InitialTableCount,
110 BOOLEAN AllowResize)
111{
112 ACPI_PHYSICAL_ADDRESS RsdpAddress;
114
115
117
118
119 /*
120 * Setup the Root Table Array and allocate the table array
121 * if requested
122 */
123 if (!InitialTableArray)
124 {
125 Status = AcpiAllocateRootTable (InitialTableCount);
126 if (ACPI_FAILURE (Status))
127 {
129 }
130 }
131 else
132 {
133 /* Root Table Array has been statically allocated by the host */
134
135 memset (InitialTableArray, 0,
136 (ACPI_SIZE) InitialTableCount * sizeof (ACPI_TABLE_DESC));
137
138 AcpiGbl_RootTableList.Tables = InitialTableArray;
139 AcpiGbl_RootTableList.MaxTableCount = InitialTableCount;
140 AcpiGbl_RootTableList.Flags = ACPI_ROOT_ORIGIN_UNKNOWN;
141 if (AllowResize)
142 {
143 AcpiGbl_RootTableList.Flags |= ACPI_ROOT_ALLOW_RESIZE;
144 }
145 }
146
147 /* Get the address of the RSDP */
148
149 RsdpAddress = AcpiOsGetRootPointer ();
150 if (!RsdpAddress)
151 {
153 }
154
155 /*
156 * Get the root table (RSDT or XSDT) and extract all entries to the local
157 * Root Table Array. This array contains the information of the RSDT/XSDT
158 * in a common, more usable format.
159 */
160 Status = AcpiTbParseRootTable (RsdpAddress);
162}
163
165
166
167/*******************************************************************************
168 *
169 * FUNCTION: AcpiReallocateRootTable
170 *
171 * PARAMETERS: None
172 *
173 * RETURN: Status
174 *
175 * DESCRIPTION: Reallocate Root Table List into dynamic memory. Copies the
176 * root list from the previously provided scratch area. Should
177 * be called once dynamic memory allocation is available in the
178 * kernel.
179 *
180 ******************************************************************************/
181
184 void)
185{
187 ACPI_TABLE_DESC *TableDesc;
188 UINT32 i, j;
189
190
192
193
194 /*
195 * If there are tables unverified, it is required to reallocate the
196 * root table list to clean up invalid table entries. Otherwise only
197 * reallocate the root table list if the host provided a static buffer
198 * for the table array in the call to AcpiInitializeTables().
199 */
200 if ((AcpiGbl_RootTableList.Flags & ACPI_ROOT_ORIGIN_ALLOCATED) &&
201 AcpiGbl_EnableTableValidation)
202 {
204 }
205
207
208 /*
209 * Ensure OS early boot logic, which is required by some hosts. If the
210 * table state is reported to be wrong, developers should fix the
211 * issue by invoking AcpiPutTable() for the reported table during the
212 * early stage.
213 */
214 for (i = 0; i < AcpiGbl_RootTableList.CurrentTableCount; ++i)
215 {
216 TableDesc = &AcpiGbl_RootTableList.Tables[i];
217 if (TableDesc->Pointer)
218 {
220 "Table [%4.4s] is not invalidated during early boot stage",
221 TableDesc->Signature.Ascii));
222 }
223 }
224
225 if (!AcpiGbl_EnableTableValidation)
226 {
227 /*
228 * Now it's safe to do full table validation. We can do deferred
229 * table initialization here once the flag is set.
230 */
231 AcpiGbl_EnableTableValidation = TRUE;
232 for (i = 0; i < AcpiGbl_RootTableList.CurrentTableCount; ++i)
233 {
234 TableDesc = &AcpiGbl_RootTableList.Tables[i];
235 if (!(TableDesc->Flags & ACPI_TABLE_IS_VERIFIED))
236 {
237 Status = AcpiTbVerifyTempTable (TableDesc, NULL, &j);
238 if (ACPI_FAILURE (Status))
239 {
240 AcpiTbUninstallTable (TableDesc);
241 }
242 }
243 }
244 }
245
246 AcpiGbl_RootTableList.Flags |= ACPI_ROOT_ALLOW_RESIZE;
248 AcpiGbl_RootTableList.Flags |= ACPI_ROOT_ORIGIN_ALLOCATED;
249
252}
253
255
256
257/*******************************************************************************
258 *
259 * FUNCTION: AcpiGetTableHeader
260 *
261 * PARAMETERS: Signature - ACPI signature of needed table
262 * Instance - Which instance (for SSDTs)
263 * OutTableHeader - The pointer to the where the table header
264 * is returned
265 *
266 * RETURN: Status and a copy of the table header
267 *
268 * DESCRIPTION: Finds and returns an ACPI table header. Caller provides the
269 * memory where a copy of the header is to be returned
270 * (fixed length).
271 *
272 ******************************************************************************/
273
276 char *Signature,
278 ACPI_TABLE_HEADER *OutTableHeader)
279{
280 UINT32 i;
281 UINT32 j;
283
284
285 /* Parameter validation */
286
287 if (!Signature || !OutTableHeader)
288 {
289 return (AE_BAD_PARAMETER);
290 }
291
292 /* Walk the root table list */
293
294 for (i = 0, j = 0; i < AcpiGbl_RootTableList.CurrentTableCount; i++)
295 {
297 &(AcpiGbl_RootTableList.Tables[i].Signature), Signature))
298 {
299 continue;
300 }
301
302 if (++j < Instance)
303 {
304 continue;
305 }
306
307 if (!AcpiGbl_RootTableList.Tables[i].Pointer)
308 {
309 if ((AcpiGbl_RootTableList.Tables[i].Flags &
312 {
314 AcpiGbl_RootTableList.Tables[i].Address,
316 if (!Header)
317 {
318 return (AE_NO_MEMORY);
319 }
320
321 memcpy (OutTableHeader, Header, sizeof (ACPI_TABLE_HEADER));
323 }
324 else
325 {
326 return (AE_NOT_FOUND);
327 }
328 }
329 else
330 {
331 memcpy (OutTableHeader,
332 AcpiGbl_RootTableList.Tables[i].Pointer,
334 }
335
336 return (AE_OK);
337 }
338
339 return (AE_NOT_FOUND);
340}
341
343
344
345/*******************************************************************************
346 *
347 * FUNCTION: AcpiGetTable
348 *
349 * PARAMETERS: Signature - ACPI signature of needed table
350 * Instance - Which instance (for SSDTs)
351 * OutTable - Where the pointer to the table is returned
352 *
353 * RETURN: Status and pointer to the requested table
354 *
355 * DESCRIPTION: Finds and verifies an ACPI table. Table must be in the
356 * RSDT/XSDT.
357 * Note that an early stage AcpiGetTable() call must be paired
358 * with an early stage AcpiPutTable() call. otherwise the table
359 * pointer mapped by the early stage mapping implementation may be
360 * erroneously unmapped by the late stage unmapping implementation
361 * in an AcpiPutTable() invoked during the late stage.
362 *
363 ******************************************************************************/
364
367 char *Signature,
369 ACPI_TABLE_HEADER **OutTable)
370{
371 UINT32 i;
372 UINT32 j;
374 ACPI_TABLE_DESC *TableDesc;
375
376
377 /* Parameter validation */
378
379 if (!Signature || !OutTable)
380 {
381 return (AE_BAD_PARAMETER);
382 }
383
384 /*
385 * Note that the following line is required by some OSPMs, they only
386 * check if the returned table is NULL instead of the returned status
387 * to determined if this function is succeeded.
388 */
389 *OutTable = NULL;
390
392
393 /* Walk the root table list */
394
395 for (i = 0, j = 0; i < AcpiGbl_RootTableList.CurrentTableCount; i++)
396 {
397 TableDesc = &AcpiGbl_RootTableList.Tables[i];
398
399 if (!ACPI_COMPARE_NAMESEG (&TableDesc->Signature, Signature))
400 {
401 continue;
402 }
403
404 if (++j < Instance)
405 {
406 continue;
407 }
408
409 Status = AcpiTbGetTable (TableDesc, OutTable);
410 break;
411 }
412
414 return (Status);
415}
416
418
419
420/*******************************************************************************
421 *
422 * FUNCTION: AcpiPutTable
423 *
424 * PARAMETERS: Table - The pointer to the table
425 *
426 * RETURN: None
427 *
428 * DESCRIPTION: Release a table returned by AcpiGetTable() and its clones.
429 * Note that it is not safe if this function was invoked after an
430 * uninstallation happened to the original table descriptor.
431 * Currently there is no OSPMs' requirement to handle such
432 * situations.
433 *
434 ******************************************************************************/
435
436void
439{
440 UINT32 i;
441 ACPI_TABLE_DESC *TableDesc;
442
443
445
446
447 if (!Table)
448 {
450 }
451
453
454 /* Walk the root table list */
455
456 for (i = 0; i < AcpiGbl_RootTableList.CurrentTableCount; i++)
457 {
458 TableDesc = &AcpiGbl_RootTableList.Tables[i];
459
460 if (TableDesc->Pointer != Table)
461 {
462 continue;
463 }
464
465 AcpiTbPutTable (TableDesc);
466 break;
467 }
468
471}
472
474
475
476/*******************************************************************************
477 *
478 * FUNCTION: AcpiGetTableByIndex
479 *
480 * PARAMETERS: TableIndex - Table index
481 * OutTable - Where the pointer to the table is returned
482 *
483 * RETURN: Status and pointer to the requested table
484 *
485 * DESCRIPTION: Obtain a table by an index into the global table list. Used
486 * internally also.
487 *
488 ******************************************************************************/
489
492 UINT32 TableIndex,
493 ACPI_TABLE_HEADER **OutTable)
494{
496
497
499
500
501 /* Parameter validation */
502
503 if (!OutTable)
504 {
506 }
507
508 /*
509 * Note that the following line is required by some OSPMs, they only
510 * check if the returned table is NULL instead of the returned status
511 * to determined if this function is succeeded.
512 */
513 *OutTable = NULL;
514
516
517 /* Validate index */
518
519 if (TableIndex >= AcpiGbl_RootTableList.CurrentTableCount)
520 {
522 goto UnlockAndExit;
523 }
524
526 &AcpiGbl_RootTableList.Tables[TableIndex], OutTable);
527
528UnlockAndExit:
531}
532
534
535
536/*******************************************************************************
537 *
538 * FUNCTION: AcpiInstallTableHandler
539 *
540 * PARAMETERS: Handler - Table event handler
541 * Context - Value passed to the handler on each event
542 *
543 * RETURN: Status
544 *
545 * DESCRIPTION: Install a global table event handler.
546 *
547 ******************************************************************************/
548
552 void *Context)
553{
555
556
558
559
560 if (!Handler)
561 {
563 }
564
566 if (ACPI_FAILURE (Status))
567 {
569 }
570
571 /* Don't allow more than one handler */
572
573 if (AcpiGbl_TableHandler)
574 {
576 goto Cleanup;
577 }
578
579 /* Install the handler */
580
581 AcpiGbl_TableHandler = Handler;
582 AcpiGbl_TableHandlerContext = Context;
583
584Cleanup:
587}
588
590
591
592/*******************************************************************************
593 *
594 * FUNCTION: AcpiRemoveTableHandler
595 *
596 * PARAMETERS: Handler - Table event handler that was installed
597 * previously.
598 *
599 * RETURN: Status
600 *
601 * DESCRIPTION: Remove a table event handler
602 *
603 ******************************************************************************/
604
608{
610
611
613
614
616 if (ACPI_FAILURE (Status))
617 {
619 }
620
621 /* Make sure that the installed handler is the same */
622
623 if (!Handler ||
624 Handler != AcpiGbl_TableHandler)
625 {
627 goto Cleanup;
628 }
629
630 /* Remove the handler */
631
632 AcpiGbl_TableHandler = NULL;
633
634Cleanup:
637}
638
unsigned char BOOLEAN
unsigned int UINT32
#define ACPI_INIT_FUNCTION
Definition: acenv.h:410
#define AE_SUPPORT
Definition: acexcep.h:123
#define ACPI_FAILURE(a)
Definition: acexcep.h:95
#define AE_BAD_PARAMETER
Definition: acexcep.h:151
#define AE_ALREADY_EXISTS
Definition: acexcep.h:115
#define AE_NOT_FOUND
Definition: acexcep.h:113
#define AE_NO_MEMORY
Definition: acexcep.h:112
#define AE_OK
Definition: acexcep.h:97
#define ACPI_MTX_TABLES
Definition: aclocal.h:86
#define ACPI_ROOT_ORIGIN_ALLOCATED
Definition: aclocal.h:244
#define ACPI_ROOT_ORIGIN_UNKNOWN
Definition: aclocal.h:243
#define ACPI_ROOT_ALLOW_RESIZE
Definition: aclocal.h:245
#define ACPI_MTX_EVENTS
Definition: aclocal.h:87
#define ACPI_MODULE_NAME(Name)
Definition: acoutput.h:216
#define return_ACPI_STATUS(s)
Definition: acoutput.h:496
#define ACPI_FUNCTION_TRACE(a)
Definition: acoutput.h:480
#define ACPI_ERROR(plist)
Definition: acoutput.h:240
#define AE_INFO
Definition: acoutput.h:230
#define return_VOID
Definition: acoutput.h:495
void * AcpiOsMapMemory(ACPI_PHYSICAL_ADDRESS Where, ACPI_SIZE Length)
Definition: osl.c:108
ACPI_PHYSICAL_ADDRESS AcpiOsGetRootPointer(void)
Definition: osl.c:43
void AcpiOsUnmapMemory(void *LogicalAddress, ACPI_SIZE Size)
Definition: osl.c:128
ACPI_PHYSICAL_ADDRESS ACPI_SIZE BOOLEAN Warn UINT32 *TableIdx UINT32 ACPI_TABLE_HEADER *OutTableHeader ACPI_TABLE_HEADER **OutTable ACPI_HANDLE UINT32 ACPI_WALK_CALLBACK ACPI_WALK_CALLBACK void void **ReturnValue UINT32 ACPI_BUFFER *RetPathPtr ACPI_OBJECT_HANDLER Handler
Definition: acpixf.h:672
ACPI_STATUS AcpiTbParseRootTable(ACPI_PHYSICAL_ADDRESS RsdpAddress)
Definition: tbutils.c:277
ACPI_STATUS AcpiTbResizeRootTableList(void)
Definition: tbdata.c:677
ACPI_STATUS AcpiTbGetTable(ACPI_TABLE_DESC *TableDesc, ACPI_TABLE_HEADER **OutTable)
Definition: tbutils.c:434
void AcpiTbUninstallTable(ACPI_TABLE_DESC *TableDesc)
Definition: tbinstal.c:336
ACPI_STATUS AcpiTbVerifyTempTable(ACPI_TABLE_DESC *TableDesc, char *Signature, UINT32 *TableIndex)
Definition: tbdata.c:584
void AcpiTbPutTable(ACPI_TABLE_DESC *TableDesc)
Definition: tbutils.c:491
#define ACPI_TABLE_IS_VERIFIED
Definition: actbl.h:433
#define ACPI_TABLE_ORIGIN_MASK
Definition: actbl.h:432
#define ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL
Definition: actbl.h:430
#define ACPI_COMPARE_NAMESEG(a, b)
Definition: actypes.h:564
UINT32 ACPI_STATUS
Definition: actypes.h:460
ACPI_STATUS(* ACPI_TABLE_HANDLER)(UINT32 Event, void *Table, void *Context)
Definition: actypes.h:1185
#define ACPI_EXPORT_SYMBOL(Symbol)
Definition: actypes.h:343
#define ACPI_EXPORT_SYMBOL_INIT(Symbol)
Definition: actypes.h:339
ACPI_STATUS AcpiUtAcquireMutex(ACPI_MUTEX_HANDLE MutexId)
Definition: utmutex.c:256
ACPI_STATUS AcpiUtReleaseMutex(ACPI_MUTEX_HANDLE MutexId)
Definition: utmutex.c:348
Definition: Header.h:9
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
static const WCHAR Signature[]
Definition: parser.c:141
static const WCHAR Cleanup[]
Definition: register.c:80
Status
Definition: gdiplustypes.h:25
ASMGENDATA Table[]
Definition: genincdata.c:61
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
#define memset(x, y, z)
Definition: compat.h:39
UINT8 Flags
Definition: actbl.h:408
ACPI_NAME_UNION Signature
Definition: actbl.h:406
ACPI_TABLE_HEADER * Pointer
Definition: actbl.h:404
ACPI_STATUS AcpiAllocateRootTable(UINT32 InitialTableCount)
Definition: tbxface.c:69
ACPI_STATUS AcpiInstallTableHandler(ACPI_TABLE_HANDLER Handler, void *Context)
Definition: tbxface.c:550
ACPI_STATUS AcpiRemoveTableHandler(ACPI_TABLE_HANDLER Handler)
Definition: tbxface.c:606
ACPI_STATUS AcpiGetTableByIndex(UINT32 TableIndex, ACPI_TABLE_HEADER **OutTable)
Definition: tbxface.c:491
ACPI_STATUS AcpiGetTableHeader(char *Signature, UINT32 Instance, ACPI_TABLE_HEADER *OutTableHeader)
Definition: tbxface.c:275
ACPI_STATUS ACPI_INIT_FUNCTION AcpiInitializeTables(ACPI_TABLE_DESC *InitialTableArray, UINT32 InitialTableCount, BOOLEAN AllowResize)
Definition: tbxface.c:107
ACPI_STATUS AcpiGetTable(char *Signature, UINT32 Instance, ACPI_TABLE_HEADER **OutTable)
Definition: tbxface.c:366
ACPI_STATUS ACPI_INIT_FUNCTION AcpiReallocateRootTable(void)
Definition: tbxface.c:183
void AcpiPutTable(ACPI_TABLE_HEADER *Table)
Definition: tbxface.c:437
char Ascii[4]
Definition: actbl.h:394
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_WMI_INSTANCE_CONFIG _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_opt_ WDFWMIINSTANCE * Instance
Definition: wdfwmi.h:481
ActualNumberDriverObjects * sizeof(PDRIVER_OBJECT)) PDRIVER_OBJECT *DriverObjectList