ReactOS 0.4.15-dev-7788-g1ad9096
evgpeblk.c
Go to the documentation of this file.
1/******************************************************************************
2 *
3 * Module Name: evgpeblk - GPE block creation and initialization.
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#include "acpi.h"
45#include "accommon.h"
46#include "acevents.h"
47#include "acnamesp.h"
48
49#define _COMPONENT ACPI_EVENTS
50 ACPI_MODULE_NAME ("evgpeblk")
51
52#if (!ACPI_REDUCED_HARDWARE) /* Entire module */
53
54/* Local prototypes */
55
56static ACPI_STATUS
58 ACPI_GPE_BLOCK_INFO *GpeBlock,
59 UINT32 InterruptNumber);
60
61static ACPI_STATUS
63 ACPI_GPE_BLOCK_INFO *GpeBlock);
64
65
66/*******************************************************************************
67 *
68 * FUNCTION: AcpiEvInstallGpeBlock
69 *
70 * PARAMETERS: GpeBlock - New GPE block
71 * InterruptNumber - Xrupt to be associated with this
72 * GPE block
73 *
74 * RETURN: Status
75 *
76 * DESCRIPTION: Install new GPE block with mutex support
77 *
78 ******************************************************************************/
79
80static ACPI_STATUS
82 ACPI_GPE_BLOCK_INFO *GpeBlock,
83 UINT32 InterruptNumber)
84{
85 ACPI_GPE_BLOCK_INFO *NextGpeBlock;
86 ACPI_GPE_XRUPT_INFO *GpeXruptBlock;
89
90
91 ACPI_FUNCTION_TRACE (EvInstallGpeBlock);
92
93
95 if (ACPI_FAILURE (Status))
96 {
98 }
99
100 Status = AcpiEvGetGpeXruptBlock (InterruptNumber, &GpeXruptBlock);
101 if (ACPI_FAILURE (Status))
102 {
103 goto UnlockAndExit;
104 }
105
106 /* Install the new block at the end of the list with lock */
107
108 Flags = AcpiOsAcquireLock (AcpiGbl_GpeLock);
109 if (GpeXruptBlock->GpeBlockListHead)
110 {
111 NextGpeBlock = GpeXruptBlock->GpeBlockListHead;
112 while (NextGpeBlock->Next)
113 {
114 NextGpeBlock = NextGpeBlock->Next;
115 }
116
117 NextGpeBlock->Next = GpeBlock;
118 GpeBlock->Previous = NextGpeBlock;
119 }
120 else
121 {
122 GpeXruptBlock->GpeBlockListHead = GpeBlock;
123 }
124
125 GpeBlock->XruptBlock = GpeXruptBlock;
126 AcpiOsReleaseLock (AcpiGbl_GpeLock, Flags);
127
128
129UnlockAndExit:
132}
133
134
135/*******************************************************************************
136 *
137 * FUNCTION: AcpiEvDeleteGpeBlock
138 *
139 * PARAMETERS: GpeBlock - Existing GPE block
140 *
141 * RETURN: Status
142 *
143 * DESCRIPTION: Remove a GPE block
144 *
145 ******************************************************************************/
146
149 ACPI_GPE_BLOCK_INFO *GpeBlock)
150{
153
154
155 ACPI_FUNCTION_TRACE (EvInstallGpeBlock);
156
157
159 if (ACPI_FAILURE (Status))
160 {
162 }
163
164 /* Disable all GPEs in this block */
165
166 Status = AcpiHwDisableGpeBlock (GpeBlock->XruptBlock, GpeBlock, NULL);
167 if (ACPI_FAILURE (Status))
168 {
170 }
171
172 if (!GpeBlock->Previous && !GpeBlock->Next)
173 {
174 /* This is the last GpeBlock on this interrupt */
175
177 if (ACPI_FAILURE (Status))
178 {
179 goto UnlockAndExit;
180 }
181 }
182 else
183 {
184 /* Remove the block on this interrupt with lock */
185
186 Flags = AcpiOsAcquireLock (AcpiGbl_GpeLock);
187 if (GpeBlock->Previous)
188 {
189 GpeBlock->Previous->Next = GpeBlock->Next;
190 }
191 else
192 {
193 GpeBlock->XruptBlock->GpeBlockListHead = GpeBlock->Next;
194 }
195
196 if (GpeBlock->Next)
197 {
198 GpeBlock->Next->Previous = GpeBlock->Previous;
199 }
200
201 AcpiOsReleaseLock (AcpiGbl_GpeLock, Flags);
202 }
203
204 AcpiCurrentGpeCount -= GpeBlock->GpeCount;
205
206 /* Free the GpeBlock */
207
208 ACPI_FREE (GpeBlock->RegisterInfo);
209 ACPI_FREE (GpeBlock->EventInfo);
210 ACPI_FREE (GpeBlock);
211
212UnlockAndExit:
215}
216
217
218/*******************************************************************************
219 *
220 * FUNCTION: AcpiEvCreateGpeInfoBlocks
221 *
222 * PARAMETERS: GpeBlock - New GPE block
223 *
224 * RETURN: Status
225 *
226 * DESCRIPTION: Create the RegisterInfo and EventInfo blocks for this GPE block
227 *
228 ******************************************************************************/
229
230static ACPI_STATUS
232 ACPI_GPE_BLOCK_INFO *GpeBlock)
233{
234 ACPI_GPE_REGISTER_INFO *GpeRegisterInfo = NULL;
236 ACPI_GPE_EVENT_INFO *ThisEvent;
237 ACPI_GPE_REGISTER_INFO *ThisRegister;
238 UINT32 i;
239 UINT32 j;
241
242
243 ACPI_FUNCTION_TRACE (EvCreateGpeInfoBlocks);
244
245
246 /* Allocate the GPE register information block */
247
248 GpeRegisterInfo = ACPI_ALLOCATE_ZEROED (
249 (ACPI_SIZE) GpeBlock->RegisterCount *
251 if (!GpeRegisterInfo)
252 {
254 "Could not allocate the GpeRegisterInfo table"));
256 }
257
258 /*
259 * Allocate the GPE EventInfo block. There are eight distinct GPEs
260 * per register. Initialization to zeros is sufficient.
261 */
262 GpeEventInfo = ACPI_ALLOCATE_ZEROED ((ACPI_SIZE) GpeBlock->GpeCount *
264 if (!GpeEventInfo)
265 {
267 "Could not allocate the GpeEventInfo table"));
269 goto ErrorExit;
270 }
271
272 /* Save the new Info arrays in the GPE block */
273
274 GpeBlock->RegisterInfo = GpeRegisterInfo;
275 GpeBlock->EventInfo = GpeEventInfo;
276
277 /*
278 * Initialize the GPE Register and Event structures. A goal of these
279 * tables is to hide the fact that there are two separate GPE register
280 * sets in a given GPE hardware block, the status registers occupy the
281 * first half, and the enable registers occupy the second half.
282 */
283 ThisRegister = GpeRegisterInfo;
284 ThisEvent = GpeEventInfo;
285
286 for (i = 0; i < GpeBlock->RegisterCount; i++)
287 {
288 /* Init the RegisterInfo for this GPE register (8 GPEs) */
289
290 ThisRegister->BaseGpeNumber = (UINT16)
291 (GpeBlock->BlockBaseNumber + (i * ACPI_GPE_REGISTER_WIDTH));
292
293 ThisRegister->StatusAddress.Address =
294 GpeBlock->Address + i;
295
296 ThisRegister->EnableAddress.Address =
297 GpeBlock->Address + i + GpeBlock->RegisterCount;
298
299 ThisRegister->StatusAddress.SpaceId = GpeBlock->SpaceId;
300 ThisRegister->EnableAddress.SpaceId = GpeBlock->SpaceId;
303 ThisRegister->StatusAddress.BitOffset = 0;
304 ThisRegister->EnableAddress.BitOffset = 0;
305
306 /* Init the EventInfo for each GPE within this register */
307
308 for (j = 0; j < ACPI_GPE_REGISTER_WIDTH; j++)
309 {
310 ThisEvent->GpeNumber = (UINT8) (ThisRegister->BaseGpeNumber + j);
311 ThisEvent->RegisterInfo = ThisRegister;
312 ThisEvent++;
313 }
314
315 /* Disable all GPEs within this register */
316
317 Status = AcpiHwWrite (0x00, &ThisRegister->EnableAddress);
318 if (ACPI_FAILURE (Status))
319 {
320 goto ErrorExit;
321 }
322
323 /* Clear any pending GPE events within this register */
324
325 Status = AcpiHwWrite (0xFF, &ThisRegister->StatusAddress);
326 if (ACPI_FAILURE (Status))
327 {
328 goto ErrorExit;
329 }
330
331 ThisRegister++;
332 }
333
335
336
338 if (GpeRegisterInfo)
339 {
340 ACPI_FREE (GpeRegisterInfo);
341 }
342 if (GpeEventInfo)
343 {
345 }
346
348}
349
350
351/*******************************************************************************
352 *
353 * FUNCTION: AcpiEvCreateGpeBlock
354 *
355 * PARAMETERS: GpeDevice - Handle to the parent GPE block
356 * GpeBlockAddress - Address and SpaceID
357 * RegisterCount - Number of GPE register pairs in the block
358 * GpeBlockBaseNumber - Starting GPE number for the block
359 * InterruptNumber - H/W interrupt for the block
360 * ReturnGpeBlock - Where the new block descriptor is returned
361 *
362 * RETURN: Status
363 *
364 * DESCRIPTION: Create and Install a block of GPE registers. All GPEs within
365 * the block are disabled at exit.
366 * Note: Assumes namespace is locked.
367 *
368 ******************************************************************************/
369
372 ACPI_NAMESPACE_NODE *GpeDevice,
375 UINT32 RegisterCount,
376 UINT16 GpeBlockBaseNumber,
377 UINT32 InterruptNumber,
378 ACPI_GPE_BLOCK_INFO **ReturnGpeBlock)
379{
381 ACPI_GPE_BLOCK_INFO *GpeBlock;
382 ACPI_GPE_WALK_INFO WalkInfo;
383
384
385 ACPI_FUNCTION_TRACE (EvCreateGpeBlock);
386
387
388 if (!RegisterCount)
389 {
391 }
392
393 /* Allocate a new GPE block */
394
395 GpeBlock = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_GPE_BLOCK_INFO));
396 if (!GpeBlock)
397 {
399 }
400
401 /* Initialize the new GPE block */
402
403 GpeBlock->Address = Address;
404 GpeBlock->SpaceId = SpaceId;
405 GpeBlock->Node = GpeDevice;
406 GpeBlock->GpeCount = (UINT16) (RegisterCount * ACPI_GPE_REGISTER_WIDTH);
407 GpeBlock->Initialized = FALSE;
408 GpeBlock->RegisterCount = RegisterCount;
409 GpeBlock->BlockBaseNumber = GpeBlockBaseNumber;
410
411 /*
412 * Create the RegisterInfo and EventInfo sub-structures
413 * Note: disables and clears all GPEs in the block
414 */
416 if (ACPI_FAILURE (Status))
417 {
418 ACPI_FREE (GpeBlock);
420 }
421
422 /* Install the new block in the global lists */
423
424 Status = AcpiEvInstallGpeBlock (GpeBlock, InterruptNumber);
425 if (ACPI_FAILURE (Status))
426 {
427 ACPI_FREE (GpeBlock->RegisterInfo);
428 ACPI_FREE (GpeBlock->EventInfo);
429 ACPI_FREE (GpeBlock);
431 }
432
433 AcpiGbl_AllGpesInitialized = FALSE;
434
435 /* Find all GPE methods (_Lxx or_Exx) for this block */
436
437 WalkInfo.GpeBlock = GpeBlock;
438 WalkInfo.GpeDevice = GpeDevice;
439 WalkInfo.ExecuteByOwnerId = FALSE;
440
443 AcpiEvMatchGpeMethod, NULL, &WalkInfo, NULL);
444
445 /* Return the new block */
446
447 if (ReturnGpeBlock)
448 {
449 (*ReturnGpeBlock) = GpeBlock;
450 }
451
453 " Initialized GPE %02X to %02X [%4.4s] %u regs on interrupt 0x%X%s\n",
454 (UINT32) GpeBlock->BlockBaseNumber,
455 (UINT32) (GpeBlock->BlockBaseNumber + (GpeBlock->GpeCount - 1)),
456 GpeDevice->Name.Ascii, GpeBlock->RegisterCount, InterruptNumber,
457 InterruptNumber == AcpiGbl_FADT.SciInterrupt ? " (SCI)" : ""));
458
459 /* Update global count of currently available GPEs */
460
461 AcpiCurrentGpeCount += GpeBlock->GpeCount;
463}
464
465
466/*******************************************************************************
467 *
468 * FUNCTION: AcpiEvInitializeGpeBlock
469 *
470 * PARAMETERS: ACPI_GPE_CALLBACK
471 *
472 * RETURN: Status
473 *
474 * DESCRIPTION: Initialize and enable a GPE block. Enable GPEs that have
475 * associated methods.
476 * Note: Assumes namespace is locked.
477 *
478 ******************************************************************************/
479
482 ACPI_GPE_XRUPT_INFO *GpeXruptInfo,
483 ACPI_GPE_BLOCK_INFO *GpeBlock,
484 void *Context)
485{
488 UINT32 GpeEnabledCount;
489 UINT32 GpeIndex;
490 UINT32 i;
491 UINT32 j;
492 BOOLEAN *IsPollingNeeded = Context;
494
495
496 ACPI_FUNCTION_TRACE (EvInitializeGpeBlock);
497
498
499 /*
500 * Ignore a null GPE block (e.g., if no GPE block 1 exists), and
501 * any GPE blocks that have been initialized already.
502 */
503 if (!GpeBlock || GpeBlock->Initialized)
504 {
506 }
507
508 /*
509 * Enable all GPEs that have a corresponding method and have the
510 * ACPI_GPE_CAN_WAKE flag unset. Any other GPEs within this block
511 * must be enabled via the acpi_enable_gpe() interface.
512 */
513 GpeEnabledCount = 0;
514
515 for (i = 0; i < GpeBlock->RegisterCount; i++)
516 {
517 for (j = 0; j < ACPI_GPE_REGISTER_WIDTH; j++)
518 {
519 /* Get the info block for this particular GPE */
520
521 GpeIndex = (i * ACPI_GPE_REGISTER_WIDTH) + j;
522 GpeEventInfo = &GpeBlock->EventInfo[GpeIndex];
523 ACPI_ERROR_ONLY(GpeNumber = GpeBlock->BlockBaseNumber + GpeIndex);
525
526 /*
527 * Ignore GPEs that have no corresponding _Lxx/_Exx method
528 * and GPEs that are used to wake the system
529 */
532 {
533 continue;
534 }
535
537 if (ACPI_FAILURE (Status))
538 {
540 "Could not enable GPE 0x%02X",
541 GpeNumber));
542 continue;
543 }
544
546
547 if (IsPollingNeeded &&
549 {
550 *IsPollingNeeded = TRUE;
551 }
552
553 GpeEnabledCount++;
554 }
555 }
556
557 if (GpeEnabledCount)
558 {
559 ACPI_INFO ((
560 "Enabled %u GPEs in block %02X to %02X", GpeEnabledCount,
561 (UINT32) GpeBlock->BlockBaseNumber,
562 (UINT32) (GpeBlock->BlockBaseNumber + (GpeBlock->GpeCount - 1))));
563 }
564
565 GpeBlock->Initialized = TRUE;
567}
568
569#endif /* !ACPI_REDUCED_HARDWARE */
unsigned short UINT16
unsigned char BOOLEAN
unsigned long long UINT64
unsigned char UINT8
unsigned int UINT32
#define ACPI_GPE_IS_POLLING_NEEDED(__gpe__)
Definition: acevents.h:59
ACPI_GPE_EVENT_INFO * GpeEventInfo
Definition: acevents.h:195
ACPI_GPE_EVENT_INFO UINT32 GpeNumber
Definition: acevents.h:196
#define ACPI_FAILURE(a)
Definition: acexcep.h:95
#define AE_NO_MEMORY
Definition: acexcep.h:112
#define AE_OK
Definition: acexcep.h:97
#define ACPI_MTX_EVENTS
Definition: aclocal.h:87
#define ACPI_ERROR_ONLY(s)
Definition: acmacros.h:467
#define ACPI_NS_WALK_NO_UNLOCK
Definition: acnamesp.h:76
ACPI_STATUS AcpiNsWalkNamespace(ACPI_OBJECT_TYPE Type, ACPI_HANDLE StartObject, UINT32 MaxDepth, UINT32 Flags, ACPI_WALK_CALLBACK DescendingCallback, ACPI_WALK_CALLBACK AscendingCallback, void *Context, void **ReturnValue)
Definition: nswalk.c:190
#define ACPI_EXCEPTION(plist)
Definition: acoutput.h:239
#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 ACPI_INFO(plist)
Definition: acoutput.h:237
#define ACPI_DEBUG_PRINT_RAW(pl)
Definition: acoutput.h:476
#define ACPI_DB_INIT
Definition: acoutput.h:151
void AcpiOsReleaseLock(ACPI_SPINLOCK Handle, ACPI_CPU_FLAGS Flags)
Definition: osl.c:516
ACPI_CPU_FLAGS AcpiOsAcquireLock(ACPI_SPINLOCK Handle)
Definition: osl.c:498
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 void *Data ACPI_OBJECT_HANDLER void **Data ACPI_STRING ACPI_OBJECT_LIST ACPI_BUFFER *ReturnObjectBuffer ACPI_DEVICE_INFO **ReturnBuffer ACPI_HANDLE ACPI_HANDLE ACPI_HANDLE *OutHandle ACPI_HANDLE *OutHandle void *Context void *Context ACPI_EVENT_HANDLER Handler UINT32 UINT32 ACPI_GPE_HANDLER void *Context UINT32 ACPI_NOTIFY_HANDLER void *Context ACPI_ADR_SPACE_TYPE SpaceId
Definition: acpixf.h:832
#define ACPI_CPU_FLAGS
Definition: actypes.h:252
#define ACPI_FREE(a)
Definition: actypes.h:386
UINT32 ACPI_STATUS
Definition: actypes.h:460
#define ACPI_GPE_INITIALIZED
Definition: actypes.h:833
#define ACPI_GPE_AUTO_ENABLED
Definition: actypes.h:832
#define ACPI_GPE_DISPATCH_TYPE(flags)
Definition: actypes.h:825
#define ACPI_GPE_CAN_WAKE
Definition: actypes.h:831
#define ACPI_GPE_DISPATCH_METHOD
Definition: actypes.h:820
#define ACPI_UINT32_MAX
Definition: actypes.h:66
#define ACPI_ALLOCATE_ZEROED(a)
Definition: actypes.h:385
#define ACPI_GPE_REGISTER_WIDTH
Definition: actypes.h:407
#define ACPI_TYPE_METHOD
Definition: actypes.h:695
ACPI_STATUS AcpiUtAcquireMutex(ACPI_MUTEX_HANDLE MutexId)
Definition: utmutex.c:256
ACPI_STATUS AcpiUtReleaseMutex(ACPI_MUTEX_HANDLE MutexId)
Definition: utmutex.c:348
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
ACPI_STATUS AcpiEvAddGpeReference(ACPI_GPE_EVENT_INFO *GpeEventInfo, BOOLEAN ClearOnEnable)
Definition: evgpe.c:221
static ACPI_STATUS AcpiEvInstallGpeBlock(ACPI_GPE_BLOCK_INFO *GpeBlock, UINT32 InterruptNumber)
Definition: evgpeblk.c:81
ACPI_STATUS AcpiEvInitializeGpeBlock(ACPI_GPE_XRUPT_INFO *GpeXruptInfo, ACPI_GPE_BLOCK_INFO *GpeBlock, void *Context)
Definition: evgpeblk.c:481
ACPI_STATUS AcpiEvDeleteGpeBlock(ACPI_GPE_BLOCK_INFO *GpeBlock)
Definition: evgpeblk.c:148
static ACPI_STATUS AcpiEvCreateGpeInfoBlocks(ACPI_GPE_BLOCK_INFO *GpeBlock)
Definition: evgpeblk.c:231
ACPI_STATUS AcpiEvCreateGpeBlock(ACPI_NAMESPACE_NODE *GpeDevice, UINT64 Address, UINT8 SpaceId, UINT32 RegisterCount, UINT16 GpeBlockBaseNumber, UINT32 InterruptNumber, ACPI_GPE_BLOCK_INFO **ReturnGpeBlock)
Definition: evgpeblk.c:371
ACPI_STATUS AcpiEvMatchGpeMethod(ACPI_HANDLE ObjHandle, UINT32 Level, void *Context, void **ReturnValue)
Definition: evgpeinit.c:327
ACPI_STATUS AcpiEvDeleteGpeXrupt(ACPI_GPE_XRUPT_INFO *GpeXrupt)
Definition: evgpeutil.c:270
ACPI_STATUS AcpiEvGetGpeXruptBlock(UINT32 InterruptNumber, ACPI_GPE_XRUPT_INFO **GpeXruptBlock)
Definition: evgpeutil.c:178
Status
Definition: gdiplustypes.h:25
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
ACPI_STATUS AcpiHwDisableGpeBlock(ACPI_GPE_XRUPT_INFO *GpeXruptInfo, ACPI_GPE_BLOCK_INFO *GpeBlock, void *Context)
Definition: hwgpe.c:364
ACPI_STATUS AcpiHwWrite(UINT64 Value, ACPI_GENERIC_ADDRESS *Reg)
Definition: hwregs.c:357
HRESULT Next([in] ULONG celt, [out, size_is(celt), length_is(*pceltFetched)] STATPROPSETSTG *rgelt, [out] ULONG *pceltFetched)
static WCHAR Address[46]
Definition: ping.c:68
UINT16 BlockBaseNumber
Definition: aclocal.h:592
UINT32 RegisterCount
Definition: aclocal.h:590
BOOLEAN Initialized
Definition: aclocal.h:594
struct acpi_gpe_block_info * Previous
Definition: aclocal.h:584
ACPI_GPE_REGISTER_INFO * RegisterInfo
Definition: aclocal.h:587
struct acpi_gpe_block_info * Next
Definition: aclocal.h:585
ACPI_NAMESPACE_NODE * Node
Definition: aclocal.h:583
ACPI_GPE_EVENT_INFO * EventInfo
Definition: aclocal.h:588
struct acpi_gpe_xrupt_info * XruptBlock
Definition: aclocal.h:586
struct acpi_gpe_register_info * RegisterInfo
Definition: aclocal.h:555
ACPI_GENERIC_ADDRESS EnableAddress
Definition: aclocal.h:568
ACPI_GENERIC_ADDRESS StatusAddress
Definition: aclocal.h:567
ACPI_GPE_BLOCK_INFO * GpeBlock
Definition: aclocal.h:612
ACPI_NAMESPACE_NODE * GpeDevice
Definition: aclocal.h:611
BOOLEAN ExecuteByOwnerId
Definition: aclocal.h:615
ACPI_GPE_BLOCK_INFO * GpeBlockListHead
Definition: aclocal.h:604
ACPI_NAME_UNION Name
Definition: aclocal.h:191
static VOID ErrorExit(LPTSTR lpszMessage)
Definition: telnetd.c:647
char Ascii[4]
Definition: actbl.h:394
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170
ActualNumberDriverObjects * sizeof(PDRIVER_OBJECT)) PDRIVER_OBJECT *DriverObjectList