/** @file
UEFI Event support functions and structure.
Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
(C) Copyright 2015 Hewlett Packard Enterprise Development LP
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef __EVENT_H__
#define __EVENT_H__
#define VALID_TPL(a) ((a) <= TPL_HIGH_LEVEL)
extern UINTN gEventPending;
///
/// Set if Event is part of an event group
///
#define EVT_EXFLAG_EVENT_GROUP 0x01
///
/// Set if Event is registered on a protocol notify
///
#define EVT_EXFLAG_EVENT_PROTOCOL_NOTIFICATION 0x02
//
// EFI_EVENT
//
///
/// Timer event information
///
typedef struct {
LIST_ENTRY Link;
UINT64 TriggerTime;
UINT64 Period;
} TIMER_EVENT_INFO;
#define EVENT_SIGNATURE SIGNATURE_32('e','v','n','t')
typedef struct {
UINTN Signature;
UINT32 Type;
UINT32 SignalCount;
///
/// Entry if the event is registered to be signalled
///
LIST_ENTRY SignalLink;
///
/// Notification information for this event
///
EFI_TPL NotifyTpl;
EFI_EVENT_NOTIFY NotifyFunction;
VOID *NotifyContext;
EFI_GUID EventGroup;
LIST_ENTRY NotifyLink;
UINT8 ExFlag;
///
/// A list of all runtime events
///
EFI_RUNTIME_EVENT_ENTRY RuntimeData;
TIMER_EVENT_INFO Timer;
} IEVENT;
//
// Internal prototypes
//
/**
Dispatches all pending events.
@param Priority The task priority level of event notifications
to dispatch
**/
VOID
CoreDispatchEventNotifies (
IN EFI_TPL Priority
);
/**
Initializes timer support.
**/
VOID
CoreInitializeTimer (
VOID
);
#endif