21#include <Library/BaseLib.h>
22#include <Library/BaseMemoryLib.h>
23#include <Library/DebugLib.h>
24#include <Library/MemoryAllocationLib.h>
25#include <Library/UefiBootServicesTableLib.h>
26#include <Library/UefiLib.h>
27#include <Library/UefiRuntimeServicesTableLib.h>
32#define APPLE_EVENT_QUEUE_SIGNATURE SIGNATURE_32 ('A', 'E', 'v', 'Q')
35#define APPLE_EVENT_QUEUE_FROM_LIST_ENTRY(ListEntry) \
36 CR ((ListEntry), APPLE_EVENT_QUEUE, Link, APPLE_EVENT_QUEUE_SIGNATURE)
67 DEBUG ((DEBUG_VERBOSE,
"InternalSignalAndCloseQueueEvent\n"));
86 LIST_ENTRY *EventQueueEntry;
89 DEBUG ((DEBUG_VERBOSE,
"InternalQueueEventNotifyFunction\n"));
94 }
while (EFI_ERROR (Status));
98 EventQueueEntry = GetFirstNode (&
mQueue);
100 while (!IsNull (&
mQueue, EventQueueEntry)) {
113 EventQueueEntry = RemoveEntryList (EventQueueEntry);
115 FreePool ((VOID *)EventQueue);
131 DEBUG ((DEBUG_VERBOSE,
"InternalCreateQueueEvent\n"));
135 Status =
gBS->CreateEvent (
143 if (!EFI_ERROR (Status)) {
158 EFI_TIME CreationTime;
160 DEBUG ((DEBUG_VERBOSE,
"EventCreateAppleEventQueueInfo\n"));
162 QueueInfo = AllocateZeroPool (
sizeof (*QueueInfo));
164 if (QueueInfo != NULL) {
165 gRT->GetTime (&CreationTime, NULL);
178 if (PointerPosition != NULL) {
181 (VOID *)PointerPosition,
182 sizeof (*PointerPosition)
186 DEBUG ((DEBUG_VERBOSE,
"EventCreateAppleEventQueueInfo alloc failure\n"));
201 DEBUG ((DEBUG_VERBOSE,
"EventAddEventToQueue\n"));
206 }
while (EFI_ERROR (Status));
208 EventQueue = AllocateZeroPool (
sizeof (*EventQueue));
210 if (EventQueue != NULL) {
216 DEBUG ((DEBUG_VERBOSE,
"EventAddEventToQueue alloc failure\n"));
235 DEBUG ((DEBUG_VERBOSE,
"EventCreateEventQueue\n"));
237 Status = EFI_INVALID_PARAMETER;
239 if ((EventData.Raw != 0) || (Modifiers != 0)) {
247 Status = EFI_OUT_OF_RESOURCES;
249 if (Information != NULL) {
252 Status = EFI_SUCCESS;
254 DEBUG ((DEBUG_VERBOSE,
"EventCreateEventQueue alloc failure\n"));
#define APPLE_ALL_KEYBOARD_EVENTS
VOID InternalFlagAllEventsReady(VOID)
VOID InternalSignalEvents(IN APPLE_EVENT_INFORMATION *Information)
VOID InternalRemoveUnregisteredEvents(VOID)
UINT16 APPLE_MODIFIER_MAP
#define APPLE_EVENT_QUEUE_FROM_LIST_ENTRY(ListEntry)
EFI_STATUS EventCreateEventQueue(IN APPLE_EVENT_DATA EventData, IN APPLE_EVENT_TYPE EventType, IN APPLE_MODIFIER_MAP Modifiers)
STATIC EFI_LOCK mQueueLock
APPLE_EVENT_INFORMATION * EventCreateAppleEventQueueInfo(IN APPLE_EVENT_DATA EventData, IN APPLE_EVENT_TYPE EventType, IN DIMENSION *PointerPosition, IN APPLE_MODIFIER_MAP Modifiers)
STATIC VOID EFIAPI InternalQueueEventNotifyFunction(IN EFI_EVENT Event, IN VOID *Context)
#define APPLE_EVENT_QUEUE_SIGNATURE
VOID InternalCreateQueueEvent(VOID)
STATIC BOOLEAN mQueueEventCreated
VOID InternalSignalAndCloseQueueEvent(VOID)
STATIC EFI_EVENT mQueueEvent
VOID EventAddEventToQueue(IN APPLE_EVENT_INFORMATION *Information)
VOID *EFIAPI CopyMem(OUT VOID *DestinationBuffer, IN CONST VOID *SourceBuffer, IN UINTN Length)
EFI_RUNTIME_SERVICES * gRT
struct APPLE_EVENT_INFORMATION::@51 CreationTime
APPLE_EVENT_DATA EventData
DIMENSION PointerPosition
APPLE_EVENT_TYPE EventType
APPLE_MODIFIER_MAP Modifiers
APPLE_EVENT_INFORMATION * Information
APPLE_KEY_EVENT_DATA * KeyData