summaryrefslogtreecommitdiff
path: root/MdeModulePkg/Include/Guid/DelayedDispatch.h
blob: 9be5444e360025a0b8ab209bce260de4f3dae58b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/** @file
  Definition for structure & defines exported by Delayed Dispatch PPI

  Copyright (c), Microsoft Corporation.

  SPDX-License-Identifier: BSD-2-Clause-Patent

**/

#ifndef DELAYED_DISPATCH_H_
#define DELAYED_DISPATCH_H_

// Delayed Dispatch table GUID
#define EFI_DELAYED_DISPATCH_TABLE_GUID  {\
  0x4b733449, 0x8eff, 0x488c, { 0x92, 0x1a, 0x15, 0x4a, 0xda, 0x25, 0x18, 0x07 } \
  }

//
// Maximal number of Delayed Dispatch entries supported
//
#define DELAYED_DISPATCH_MAX_ENTRIES  8

//
// Internal structure for delayed dispatch entries.
// Packing the structures here to save space as they will be stored as HOBs.
//
#pragma pack (push, 1)

typedef struct {
  EFI_GUID                         DelayedGroupId;
  UINT64                           Context;
  EFI_DELAYED_DISPATCH_FUNCTION    Function;
  UINT64                           DispatchTime;
  UINT32                           MicrosecondDelay;
} DELAYED_DISPATCH_ENTRY;

typedef struct {
  UINT32                    Count;
  UINT32                    DispCount;
  DELAYED_DISPATCH_ENTRY    Entry[DELAYED_DISPATCH_MAX_ENTRIES];
} DELAYED_DISPATCH_TABLE;

#pragma pack (pop)

extern EFI_GUID  gEfiDelayedDispatchTableGuid;

#endif