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