1 /** @file
2   Include file for definitions in the Intel Platform Innovation Framework for EFI
3   Driver Execution Environment Core Interface Specification (DXE CIS) Version 0.91.
4 
5 Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>
6 SPDX-License-Identifier: BSD-2-Clause-Patent
7 
8 **/
9 
10 #ifndef _DXECIS_H_
11 #define _DXECIS_H_
12 
13 #include <Protocol/StatusCode.h>
14 
15 /**
16   Functions of this type are used with the Framework MP Services Protocol and
17   the  SMM Services Table to execute a procedure on enabled APs.  The context
18   the AP should use durng execution is specified by Buffer.
19 
20   @param[in]  Buffer   The pointer to the procedure's argument.
21 
22 **/
23 typedef
24 VOID
25 (EFIAPI *FRAMEWORK_EFI_AP_PROCEDURE)(
26   IN  VOID  *Buffer
27   );
28 
29 ///
30 /// The Framework EFI Runtime Services Table as an extension to the EFI 1.10 Runtime Services Table.
31 ///
32 typedef struct {
33   //
34   // Table header for the Framework EFI Runtime Services Table
35   //
36   EFI_TABLE_HEADER                  Hdr;
37   //
38   // Time services
39   //
40   EFI_GET_TIME                      GetTime;
41   EFI_SET_TIME                      SetTime;
42   EFI_GET_WAKEUP_TIME               GetWakeupTime;
43   EFI_SET_WAKEUP_TIME               SetWakeupTime;
44   //
45   // Virtual memory services
46   //
47   EFI_SET_VIRTUAL_ADDRESS_MAP       SetVirtualAddressMap;
48   EFI_CONVERT_POINTER               ConvertPointer;
49   //
50   // Variable services
51   //
52   EFI_GET_VARIABLE                  GetVariable;
53   EFI_GET_NEXT_VARIABLE_NAME        GetNextVariableName;
54   EFI_SET_VARIABLE                  SetVariable;
55   //
56   // Misc
57   //
58   EFI_GET_NEXT_HIGH_MONO_COUNT      GetNextHighMonotonicCount;
59   EFI_RESET_SYSTEM                  ResetSystem;
60   ///
61   /// A Framework extension to the EFI 1.10 runtime table.
62   /// It was moved to a protocol to avoid conflict with UEFI 2.0.
63   ///
64   EFI_REPORT_STATUS_CODE            ReportStatusCode;
65 } FRAMEWORK_EFI_RUNTIME_SERVICES;
66 
67 ///
68 /// The Framework EFI Boot Services Table. Complies with the DxeCis specification.
69 ///
70 typedef struct {
71   ///
72   /// The table header for the EFI Boot Services Table.
73   ///
74   EFI_TABLE_HEADER                Hdr;
75 
76   //
77   // Task Priority Services
78   //
79   EFI_RAISE_TPL                   RaiseTPL;
80   EFI_RESTORE_TPL                 RestoreTPL;
81 
82   //
83   // Memory Services
84   //
85   EFI_ALLOCATE_PAGES              AllocatePages;
86   EFI_FREE_PAGES                  FreePages;
87   EFI_GET_MEMORY_MAP              GetMemoryMap;
88   EFI_ALLOCATE_POOL               AllocatePool;
89   EFI_FREE_POOL                   FreePool;
90 
91   //
92   // Event & Timer Services
93   //
94   EFI_CREATE_EVENT                  CreateEvent;
95   EFI_SET_TIMER                     SetTimer;
96   EFI_WAIT_FOR_EVENT                WaitForEvent;
97   EFI_SIGNAL_EVENT                  SignalEvent;
98   EFI_CLOSE_EVENT                   CloseEvent;
99   EFI_CHECK_EVENT                   CheckEvent;
100 
101   //
102   // Protocol Handler Services
103   //
104   EFI_INSTALL_PROTOCOL_INTERFACE    InstallProtocolInterface;
105   EFI_REINSTALL_PROTOCOL_INTERFACE  ReinstallProtocolInterface;
106   EFI_UNINSTALL_PROTOCOL_INTERFACE  UninstallProtocolInterface;
107   EFI_HANDLE_PROTOCOL               HandleProtocol;
108   EFI_HANDLE_PROTOCOL               PcHandleProtocol;
109   EFI_REGISTER_PROTOCOL_NOTIFY      RegisterProtocolNotify;
110   EFI_LOCATE_HANDLE                 LocateHandle;
111   EFI_LOCATE_DEVICE_PATH            LocateDevicePath;
112   EFI_INSTALL_CONFIGURATION_TABLE   InstallConfigurationTable;
113 
114   //
115   // Image Services
116   //
117   EFI_IMAGE_LOAD                    LoadImage;
118   EFI_IMAGE_START                   StartImage;
119   EFI_EXIT                          Exit;
120   EFI_IMAGE_UNLOAD                  UnloadImage;
121   EFI_EXIT_BOOT_SERVICES            ExitBootServices;
122 
123   //
124   // Miscellaneous Services
125   //
126   EFI_GET_NEXT_MONOTONIC_COUNT      GetNextMonotonicCount;
127   EFI_STALL                         Stall;
128   EFI_SET_WATCHDOG_TIMER            SetWatchdogTimer;
129 
130   //
131   // DriverSupport Services
132   //
133   EFI_CONNECT_CONTROLLER            ConnectController;
134   EFI_DISCONNECT_CONTROLLER         DisconnectController;
135 
136   //
137   // Open and Close Protocol Services
138   //
139   EFI_OPEN_PROTOCOL                 OpenProtocol;
140   EFI_CLOSE_PROTOCOL                CloseProtocol;
141   EFI_OPEN_PROTOCOL_INFORMATION     OpenProtocolInformation;
142 
143   //
144   // Library Services
145   //
146   EFI_PROTOCOLS_PER_HANDLE          ProtocolsPerHandle;
147   EFI_LOCATE_HANDLE_BUFFER          LocateHandleBuffer;
148   EFI_LOCATE_PROTOCOL               LocateProtocol;
149   EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES    InstallMultipleProtocolInterfaces;
150   EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES  UninstallMultipleProtocolInterfaces;
151 
152   //
153   // 32-bit CRC Services
154   //
155   EFI_CALCULATE_CRC32               CalculateCrc32;
156 
157   //
158   // Miscellaneous Services
159   //
160   EFI_COPY_MEM                      CopyMem;
161   EFI_SET_MEM                       SetMem;
162 } FRAMEWORK_EFI_BOOT_SERVICES;
163 
164 #define EFI_EVENT_RUNTIME_CONTEXT       0x20000000
165 #define EFI_EVENT_NOTIFY_SIGNAL_ALL     0x00000400
166 #define EFI_EVENT_SIGNAL_READY_TO_BOOT  0x00000203
167 #define EFI_EVENT_SIGNAL_LEGACY_BOOT    0x00000204
168 
169 #endif
170 
171