yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1 | /** @file
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 2 | Include file that supports UEFI.
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 3 |
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 4 | This include file must only contain things defined in the UEFI 2.1 specification.
|
| 5 | If a code construct is defined in the UEFI 2.1 specification it must be included
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 6 | by this include file.
|
| 7 |
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 8 | Copyright (c) 2006 - 2008, Intel Corporation
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 9 | All rights reserved. This program and the accompanying materials
|
| 10 | are licensed and made available under the terms and conditions of the BSD License
|
| 11 | which accompanies this distribution. The full text of the license may be found at
|
| 12 | http://opensource.org/licenses/bsd-license.php
|
| 13 |
|
| 14 | THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
| 15 | WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
| 16 |
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 17 | **/
|
| 18 |
|
| 19 | #ifndef __UEFI_SPEC_H__
|
| 20 | #define __UEFI_SPEC_H__
|
| 21 |
|
| 22 | #include <Uefi/UefiMultiPhase.h>
|
| 23 |
|
| 24 | #include <Protocol/DevicePath.h>
|
| 25 | #include <Protocol/SimpleTextIn.h>
|
| 26 | #include <Protocol/SimpleTextOut.h>
|
| 27 |
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 28 | ///
|
mdkinney | 2a3f6a2 | 2008-12-07 23:08:08 +0000 | [diff] [blame] | 29 | /// Enumeration of EFI memory allocation types.
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 30 | ///
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 31 | typedef enum {
|
mdkinney | 2a3f6a2 | 2008-12-07 23:08:08 +0000 | [diff] [blame] | 32 | ///
|
| 33 | /// Allocate any available range of pages that satisfies the request
|
| 34 | ///
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 35 | AllocateAnyPages,
|
mdkinney | 2a3f6a2 | 2008-12-07 23:08:08 +0000 | [diff] [blame] | 36 | ///
|
| 37 | /// Allocate any available range of pages whose uppermost address is less than
|
| 38 | /// or equal to a specified maximum address
|
| 39 | ///
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 40 | AllocateMaxAddress,
|
mdkinney | 2a3f6a2 | 2008-12-07 23:08:08 +0000 | [diff] [blame] | 41 | ///
|
| 42 | /// Allocate pages at a specified address
|
| 43 | ///
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 44 | AllocateAddress,
|
mdkinney | 2a3f6a2 | 2008-12-07 23:08:08 +0000 | [diff] [blame] | 45 | ///
|
| 46 | /// Maximum enumeration value that may be used for bounds checking
|
| 47 | ///
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 48 | MaxAllocateType
|
| 49 | } EFI_ALLOCATE_TYPE;
|
| 50 |
|
klu2 | 5413e8e | 2007-06-27 06:38:31 +0000 | [diff] [blame] | 51 | //
|
| 52 | // Bit definitions for EFI_TIME.Daylight
|
| 53 | //
|
| 54 | #define EFI_TIME_ADJUST_DAYLIGHT 0x01
|
| 55 | #define EFI_TIME_IN_DAYLIGHT 0x02
|
| 56 |
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 57 | ///
|
| 58 | /// Value definition for EFI_TIME.TimeZone
|
| 59 | ///
|
klu2 | 5413e8e | 2007-06-27 06:38:31 +0000 | [diff] [blame] | 60 | #define EFI_UNSPECIFIED_TIMEZONE 0x07FF
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 61 |
|
| 62 | //
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 63 | // Memory cacheability attributes
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 64 | //
|
| 65 | #define EFI_MEMORY_UC 0x0000000000000001ULL
|
| 66 | #define EFI_MEMORY_WC 0x0000000000000002ULL
|
| 67 | #define EFI_MEMORY_WT 0x0000000000000004ULL
|
| 68 | #define EFI_MEMORY_WB 0x0000000000000008ULL
|
| 69 | #define EFI_MEMORY_UCE 0x0000000000000010ULL
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 70 | //
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 71 | // Physical memory protection attributes
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 72 | //
|
AJFISH | 00edb21 | 2007-06-18 20:28:02 +0000 | [diff] [blame] | 73 | #define EFI_MEMORY_WP 0x0000000000001000ULL
|
| 74 | #define EFI_MEMORY_RP 0x0000000000002000ULL
|
| 75 | #define EFI_MEMORY_XP 0x0000000000004000ULL
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 76 | //
|
| 77 | // Runtime memory attribute
|
| 78 | //
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 79 | #define EFI_MEMORY_RUNTIME 0x8000000000000000ULL
|
| 80 |
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 81 | ///
|
| 82 | /// Memory descriptor version number
|
| 83 | ///
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 84 | #define EFI_MEMORY_DESCRIPTOR_VERSION 1
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 85 |
|
| 86 | ///
|
mdkinney | 2a3f6a2 | 2008-12-07 23:08:08 +0000 | [diff] [blame] | 87 | /// Definition of an EFI memory descriptor
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 88 | ///
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 89 | typedef struct {
|
mdkinney | 2a3f6a2 | 2008-12-07 23:08:08 +0000 | [diff] [blame] | 90 | ///
|
| 91 | /// Type of the memory region. See EFI_MEMORY_TYPE
|
| 92 | ///
|
AJFISH | 00edb21 | 2007-06-18 20:28:02 +0000 | [diff] [blame] | 93 | UINT32 Type;
|
mdkinney | 2a3f6a2 | 2008-12-07 23:08:08 +0000 | [diff] [blame] | 94 | ///
|
| 95 | /// Physical address of the first byte of the memory region. Must aligned
|
| 96 | /// on a 4 KB boundary.
|
| 97 | ///
|
AJFISH | 00edb21 | 2007-06-18 20:28:02 +0000 | [diff] [blame] | 98 | EFI_PHYSICAL_ADDRESS PhysicalStart;
|
mdkinney | 2a3f6a2 | 2008-12-07 23:08:08 +0000 | [diff] [blame] | 99 | ///
|
| 100 | /// Virtual address of the first byte of the memory region. Must aligned
|
| 101 | /// on a 4 KB boundary.
|
| 102 | ///
|
AJFISH | 00edb21 | 2007-06-18 20:28:02 +0000 | [diff] [blame] | 103 | EFI_VIRTUAL_ADDRESS VirtualStart;
|
mdkinney | 2a3f6a2 | 2008-12-07 23:08:08 +0000 | [diff] [blame] | 104 | ///
|
| 105 | /// Number of 4KB pages in the memory region.
|
| 106 | ///
|
AJFISH | 00edb21 | 2007-06-18 20:28:02 +0000 | [diff] [blame] | 107 | UINT64 NumberOfPages;
|
mdkinney | 2a3f6a2 | 2008-12-07 23:08:08 +0000 | [diff] [blame] | 108 | ///
|
| 109 | /// Attributes of the memory region that describe the bit mask of capabilities
|
| 110 | /// for that memory region, and not necessarily the current settings for that
|
| 111 | /// memory region.
|
| 112 | ///
|
AJFISH | 00edb21 | 2007-06-18 20:28:02 +0000 | [diff] [blame] | 113 | UINT64 Attribute;
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 114 | } EFI_MEMORY_DESCRIPTOR;
|
| 115 |
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 116 | /**
|
| 117 | Allocates memory pages from the system.
|
| 118 |
|
| 119 | @param Type The type of allocation to perform.
|
| 120 | @param MemoryType The type of memory to allocate.
|
| 121 | @param Pages The number of contiguous 4 KB pages to allocate.
|
| 122 | @param Memory Pointer to a physical address. On input, the way in which the address is
|
| 123 | used depends on the value of Type.
|
| 124 |
|
| 125 | @retval EFI_SUCCESS The requested pages were allocated.
|
| 126 | @retval EFI_INVALID_PARAMETER 1) Type is not AllocateAnyPages or
|
| 127 | AllocateMaxAddress or AllocateAddress.
|
| 128 | 2) MemoryType is in the range
|
| 129 | EfiMaxMemoryType..0x7FFFFFFF.
|
| 130 | @retval EFI_OUT_OF_RESOURCES The pages could not be allocated.
|
| 131 | @retval EFI_NOT_FOUND The requested pages could not be found.
|
| 132 |
|
| 133 | **/
|
| 134 | typedef
|
| 135 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 136 | (EFIAPI *EFI_ALLOCATE_PAGES)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 137 | IN EFI_ALLOCATE_TYPE Type,
|
| 138 | IN EFI_MEMORY_TYPE MemoryType,
|
| 139 | IN UINTN Pages,
|
| 140 | IN OUT EFI_PHYSICAL_ADDRESS *Memory
|
| 141 | );
|
| 142 |
|
| 143 | /**
|
| 144 | Frees memory pages.
|
| 145 |
|
| 146 | @param Memory The base physical address of the pages to be freed.
|
| 147 | @param Pages The number of contiguous 4 KB pages to free.
|
| 148 |
|
| 149 | @retval EFI_SUCCESS The requested pages were freed.
|
| 150 | @retval EFI_INVALID_PARAMETER Memory is not a page-aligned address or Pages is invalid.
|
| 151 | @retval EFI_NOT_FOUND The requested memory pages were not allocated with
|
| 152 | AllocatePages().
|
| 153 |
|
| 154 | **/
|
| 155 | typedef
|
| 156 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 157 | (EFIAPI *EFI_FREE_PAGES)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 158 | IN EFI_PHYSICAL_ADDRESS Memory,
|
| 159 | IN UINTN Pages
|
| 160 | );
|
| 161 |
|
| 162 | /**
|
| 163 | Returns the current memory map.
|
| 164 |
|
| 165 | @param MemoryMapSize A pointer to the size, in bytes, of the MemoryMap buffer.
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 166 | On input, this is the size of the buffer allocated by the caller.
|
| 167 | On output, it is the size of the buffer returned by the firmware if
|
| 168 | the buffer was large enough, or the size of the buffer needed to contain
|
| 169 | the map if the buffer was too small.
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 170 | @param MemoryMap A pointer to the buffer in which firmware places the current memory
|
| 171 | map.
|
| 172 | @param MapKey A pointer to the location in which firmware returns the key for the
|
| 173 | current memory map.
|
| 174 | @param DescriptorSize A pointer to the location in which firmware returns the size, in bytes, of
|
| 175 | an individual EFI_MEMORY_DESCRIPTOR.
|
| 176 | @param DescriptorVersion A pointer to the location in which firmware returns the version number
|
| 177 | associated with the EFI_MEMORY_DESCRIPTOR.
|
| 178 |
|
| 179 | @retval EFI_SUCCESS The memory map was returned in the MemoryMap buffer.
|
| 180 | @retval EFI_BUFFER_TOO_SMALL The MemoryMap buffer was too small. The current buffer size
|
| 181 | needed to hold the memory map is returned in MemoryMapSize.
|
| 182 | @retval EFI_INVALID_PARAMETER 1) MemoryMapSize is NULL.
|
| 183 | 2) The MemoryMap buffer is not too small and MemoryMap is
|
| 184 | NULL.
|
| 185 |
|
| 186 | **/
|
| 187 | typedef
|
| 188 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 189 | (EFIAPI *EFI_GET_MEMORY_MAP)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 190 | IN OUT UINTN *MemoryMapSize,
|
| 191 | IN OUT EFI_MEMORY_DESCRIPTOR *MemoryMap,
|
| 192 | OUT UINTN *MapKey,
|
| 193 | OUT UINTN *DescriptorSize,
|
| 194 | OUT UINT32 *DescriptorVersion
|
| 195 | );
|
| 196 |
|
| 197 | /**
|
| 198 | Allocates pool memory.
|
| 199 |
|
| 200 | @param PoolType The type of pool to allocate.
|
| 201 | @param Size The number of bytes to allocate from the pool.
|
| 202 | @param Buffer A pointer to a pointer to the allocated buffer if the call succeeds;
|
| 203 | undefined otherwise.
|
| 204 |
|
| 205 | @retval EFI_SUCCESS The requested number of bytes was allocated.
|
| 206 | @retval EFI_OUT_OF_RESOURCES The pool requested could not be allocated.
|
| 207 | @retval EFI_INVALID_PARAMETER PoolType was invalid.
|
| 208 |
|
| 209 | **/
|
| 210 | typedef
|
| 211 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 212 | (EFIAPI *EFI_ALLOCATE_POOL)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 213 | IN EFI_MEMORY_TYPE PoolType,
|
| 214 | IN UINTN Size,
|
| 215 | OUT VOID **Buffer
|
| 216 | );
|
| 217 |
|
| 218 | /**
|
| 219 | Returns pool memory to the system.
|
| 220 |
|
| 221 | @param Buffer Pointer to the buffer to free.
|
| 222 |
|
| 223 | @retval EFI_SUCCESS The memory was returned to the system.
|
| 224 | @retval EFI_INVALID_PARAMETER Buffer was invalid.
|
| 225 |
|
| 226 | **/
|
| 227 | typedef
|
| 228 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 229 | (EFIAPI *EFI_FREE_POOL)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 230 | IN VOID *Buffer
|
| 231 | );
|
| 232 |
|
| 233 | /**
|
| 234 | Changes the runtime addressing mode of EFI firmware from physical to virtual.
|
| 235 |
|
| 236 | @param MemoryMapSize The size in bytes of VirtualMap.
|
| 237 | @param DescriptorSize The size in bytes of an entry in the VirtualMap.
|
| 238 | @param DescriptorVersion The version of the structure entries in VirtualMap.
|
| 239 | @param VirtualMap An array of memory descriptors which contain new virtual
|
| 240 | address mapping information for all runtime ranges.
|
| 241 |
|
| 242 | @retval EFI_SUCCESS The virtual address map has been applied.
|
| 243 | @retval EFI_UNSUPPORTED EFI firmware is not at runtime, or the EFI firmware is already in
|
| 244 | virtual address mapped mode.
|
| 245 | @retval EFI_INVALID_PARAMETER DescriptorSize or DescriptorVersion is invalid.
|
| 246 | @retval EFI_NO_MAPPING A virtual address was not supplied for a range in the memory
|
| 247 | map that requires a mapping.
|
| 248 | @retval EFI_NOT_FOUND A virtual address was supplied for an address that is not found
|
| 249 | in the memory map.
|
| 250 |
|
| 251 | **/
|
| 252 | typedef
|
| 253 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 254 | (EFIAPI *EFI_SET_VIRTUAL_ADDRESS_MAP)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 255 | IN UINTN MemoryMapSize,
|
| 256 | IN UINTN DescriptorSize,
|
| 257 | IN UINT32 DescriptorVersion,
|
| 258 | IN EFI_MEMORY_DESCRIPTOR *VirtualMap
|
| 259 | );
|
| 260 |
|
| 261 | /**
|
| 262 | Connects one or more drivers to a controller.
|
| 263 |
|
| 264 | @param ControllerHandle The handle of the controller to which driver(s) are to be connected.
|
| 265 | @param DriverImageHandle A pointer to an ordered list handles that support the
|
| 266 | EFI_DRIVER_BINDING_PROTOCOL.
|
| 267 | @param RemainingDevicePath A pointer to the device path that specifies a child of the
|
| 268 | controller specified by ControllerHandle.
|
| 269 | @param Recursive If TRUE, then ConnectController() is called recursively
|
| 270 | until the entire tree of controllers below the controller specified
|
| 271 | by ControllerHandle have been created. If FALSE, then
|
| 272 | the tree of controllers is only expanded one level.
|
| 273 |
|
| 274 | @retval EFI_SUCCESS 1) One or more drivers were connected to ControllerHandle.
|
| 275 | 2) No drivers were connected to ControllerHandle, but
|
| 276 | RemainingDevicePath is not NULL, and it is an End Device
|
| 277 | Path Node.
|
| 278 | @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.
|
| 279 | @retval EFI_NOT_FOUND 1) There are no EFI_DRIVER_BINDING_PROTOCOL instances
|
| 280 | present in the system.
|
| 281 | 2) No drivers were connected to ControllerHandle.
|
| 282 |
|
| 283 | **/
|
| 284 | typedef
|
| 285 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 286 | (EFIAPI *EFI_CONNECT_CONTROLLER)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 287 | IN EFI_HANDLE ControllerHandle,
|
| 288 | IN EFI_HANDLE *DriverImageHandle, OPTIONAL
|
| 289 | IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath, OPTIONAL
|
| 290 | IN BOOLEAN Recursive
|
| 291 | );
|
| 292 |
|
| 293 | /**
|
| 294 | Disconnects one or more drivers from a controller.
|
| 295 |
|
| 296 | @param ControllerHandle The handle of the controller from which driver(s) are to be disconnected.
|
| 297 | @param DriverImageHandle The driver to disconnect from ControllerHandle.
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 298 | If DriverImageHandle is NULL, then all the drivers currently managing
|
| 299 | ControllerHandle are disconnected from ControllerHandle.
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 300 | @param ChildHandle The handle of the child to destroy.
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 301 | If ChildHandle is NULL, then all the children of ControllerHandle are
|
| 302 | destroyed before the drivers are disconnected from ControllerHandle.
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 303 |
|
| 304 | @retval EFI_SUCCESS 1) One or more drivers were disconnected from the controller.
|
| 305 | 2) On entry, no drivers are managing ControllerHandle.
|
| 306 | 3) DriverImageHandle is not NULL, and on entry
|
| 307 | DriverImageHandle is not managing ControllerHandle.
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 308 | @retval EFI_INVALID_PARAMETER 1) ControllerHandle is not a valid EFI_HANDLE.
|
| 309 | 2) DriverImageHandle is not NULL, and it is not a valid EFI_HANDLE.
|
| 310 | 3) ChildHandle is not NULL, and it is not a valid EFI_HANDLE.
|
| 311 | 4) DriverImageHandle does not support the EFI_DRIVER_BINDING_PROTOCOL.
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 312 | @retval EFI_OUT_OF_RESOURCES There are not enough resources available to disconnect any drivers from
|
| 313 | ControllerHandle.
|
| 314 | @retval EFI_DEVICE_ERROR The controller could not be disconnected because of a device error.
|
| 315 |
|
| 316 | **/
|
| 317 | typedef
|
| 318 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 319 | (EFIAPI *EFI_DISCONNECT_CONTROLLER)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 320 | IN EFI_HANDLE ControllerHandle,
|
| 321 | IN EFI_HANDLE DriverImageHandle, OPTIONAL
|
| 322 | IN EFI_HANDLE ChildHandle OPTIONAL
|
| 323 | );
|
| 324 |
|
| 325 |
|
| 326 |
|
| 327 | //
|
| 328 | // ConvertPointer DebugDisposition type.
|
| 329 | //
|
| 330 | #define EFI_OPTIONAL_PTR 0x00000001
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 331 |
|
| 332 | /**
|
| 333 | Determines the new virtual address that is to be used on subsequent memory accesses.
|
| 334 |
|
| 335 | @param DebugDisposition Supplies type information for the pointer being converted.
|
| 336 | @param Address A pointer to a pointer that is to be fixed to be the value needed
|
| 337 | for the new virtual address mappings being applied.
|
| 338 |
|
| 339 | @retval EFI_SUCCESS The pointer pointed to by Address was modified.
|
| 340 | @retval EFI_INVALID_PARAMETER 1) Address is NULL.
|
| 341 | 2) *Address is NULL and DebugDisposition does
|
| 342 | not have the EFI_OPTIONAL_PTR bit set.
|
| 343 | @retval EFI_NOT_FOUND The pointer pointed to by Address was not found to be part
|
| 344 | of the current memory map. This is normally fatal.
|
| 345 |
|
| 346 | **/
|
| 347 | typedef
|
| 348 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 349 | (EFIAPI *EFI_CONVERT_POINTER)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 350 | IN UINTN DebugDisposition,
|
| 351 | IN OUT VOID **Address
|
| 352 | );
|
| 353 |
|
| 354 |
|
| 355 | //
|
qhuang8 | ac64461 | 2008-05-27 03:24:01 +0000 | [diff] [blame] | 356 | // These types can be ORed together as needed - for example,
|
AJFISH | 93ce5ac | 2007-07-05 16:04:13 +0000 | [diff] [blame] | 357 | // EVT_TIMER might be Ored with EVT_NOTIFY_WAIT or
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 358 | // EVT_NOTIFY_SIGNAL.
|
| 359 | //
|
AJFISH | 00edb21 | 2007-06-18 20:28:02 +0000 | [diff] [blame] | 360 | #define EVT_TIMER 0x80000000
|
| 361 | #define EVT_RUNTIME 0x40000000
|
AJFISH | 00edb21 | 2007-06-18 20:28:02 +0000 | [diff] [blame] | 362 | #define EVT_NOTIFY_WAIT 0x00000100
|
AJFISH | 93ce5ac | 2007-07-05 16:04:13 +0000 | [diff] [blame] | 363 | #define EVT_NOTIFY_SIGNAL 0x00000200
|
AJFISH | 93ce5ac | 2007-07-05 16:04:13 +0000 | [diff] [blame] | 364 |
|
| 365 | #define EVT_SIGNAL_EXIT_BOOT_SERVICES 0x00000201
|
AJFISH | 93ce5ac | 2007-07-05 16:04:13 +0000 | [diff] [blame] | 366 | #define EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE 0x60000202
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 367 |
|
| 368 | //
|
qhuang8 | ac64461 | 2008-05-27 03:24:01 +0000 | [diff] [blame] | 369 | // The event's NotifyContext pointer points to a runtime memory
|
vanjeff | d0c6472 | 2007-10-16 05:30:18 +0000 | [diff] [blame] | 370 | // address.
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 371 | // The event is deprecated in UEFI2.0 and later specifications.
|
vanjeff | d0c6472 | 2007-10-16 05:30:18 +0000 | [diff] [blame] | 372 | //
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 373 | #define EVT_RUNTIME_CONTEXT 0x20000000
|
| 374 |
|
| 375 |
|
| 376 | /**
|
| 377 | Invoke a notification event
|
| 378 |
|
| 379 | @param Event Event whose notification function is being invoked.
|
| 380 | @param Context Pointer to the notification function's context,
|
| 381 | which is implementation-dependent.
|
| 382 |
|
| 383 | **/
|
| 384 | typedef
|
| 385 | VOID
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 386 | (EFIAPI *EFI_EVENT_NOTIFY)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 387 | IN EFI_EVENT Event,
|
| 388 | IN VOID *Context
|
| 389 | );
|
| 390 |
|
| 391 | /**
|
| 392 | Creates an event.
|
| 393 |
|
| 394 | @param Type The type of event to create and its mode and attributes.
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 395 | @param NotifyTpl The task priority level of event notifications, if needed.
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 396 | @param NotifyFunction Pointer to the event's notification function, if any.
|
| 397 | @param NotifyContext Pointer to the notification function's context; corresponds to parameter
|
| 398 | Context in the notification function.
|
| 399 | @param Event Pointer to the newly created event if the call succeeds; undefined
|
| 400 | otherwise.
|
| 401 |
|
| 402 | @retval EFI_SUCCESS The event structure was created.
|
| 403 | @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
|
| 404 | @retval EFI_OUT_OF_RESOURCES The event could not be allocated.
|
| 405 |
|
| 406 | **/
|
| 407 | typedef
|
| 408 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 409 | (EFIAPI *EFI_CREATE_EVENT)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 410 | IN UINT32 Type,
|
| 411 | IN EFI_TPL NotifyTpl,
|
| 412 | IN EFI_EVENT_NOTIFY NotifyFunction,
|
| 413 | IN VOID *NotifyContext,
|
| 414 | OUT EFI_EVENT *Event
|
| 415 | );
|
| 416 |
|
| 417 | /**
|
| 418 | Creates an event in a group.
|
| 419 |
|
| 420 | @param Type The type of event to create and its mode and attributes.
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 421 | @param NotifyTpl The task priority level of event notifications,if needed.
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 422 | @param NotifyFunction Pointer to the event's notification function, if any.
|
| 423 | @param NotifyContext Pointer to the notification function's context; corresponds to parameter
|
| 424 | Context in the notification function.
|
| 425 | @param EventGroup Pointer to the unique identifier of the group to which this event belongs.
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 426 | If this is NULL, then the function behaves as if the parameters were passed
|
| 427 | to CreateEvent.
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 428 | @param Event Pointer to the newly created event if the call succeeds; undefined
|
| 429 | otherwise.
|
| 430 |
|
| 431 | @retval EFI_SUCCESS The event structure was created.
|
| 432 | @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
|
| 433 | @retval EFI_OUT_OF_RESOURCES The event could not be allocated.
|
| 434 |
|
| 435 | **/
|
| 436 | typedef
|
| 437 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 438 | (EFIAPI *EFI_CREATE_EVENT_EX)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 439 | IN UINT32 Type,
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 440 | IN EFI_TPL NotifyTpl,
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 441 | IN EFI_EVENT_NOTIFY NotifyFunction OPTIONAL,
|
| 442 | IN CONST VOID *NotifyContext OPTIONAL,
|
| 443 | IN CONST EFI_GUID *EventGroup OPTIONAL,
|
| 444 | OUT EFI_EVENT *Event
|
| 445 | );
|
| 446 |
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 447 | ///
|
| 448 | /// Timer delay types
|
| 449 | ///
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 450 | typedef enum {
|
mdkinney | 2a3f6a2 | 2008-12-07 23:08:08 +0000 | [diff] [blame] | 451 | ///
|
| 452 | /// An event's timer settings is to be cancelled and not trigger time is to be set
|
| 453 | ///
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 454 | TimerCancel,
|
mdkinney | 2a3f6a2 | 2008-12-07 23:08:08 +0000 | [diff] [blame] | 455 | ///
|
| 456 | /// An event is to be signalled periodically at a specified interval from the current time.
|
| 457 | ///
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 458 | TimerPeriodic,
|
mdkinney | 2a3f6a2 | 2008-12-07 23:08:08 +0000 | [diff] [blame] | 459 | ///
|
| 460 | /// An event is to be signalled once at a specified interval from the current time.
|
| 461 | ///
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 462 | TimerRelative
|
| 463 | } EFI_TIMER_DELAY;
|
| 464 |
|
| 465 | /**
|
| 466 | Sets the type of timer and the trigger time for a timer event.
|
| 467 |
|
| 468 | @param Event The timer event that is to be signaled at the specified time.
|
| 469 | @param Type The type of time that is specified in TriggerTime.
|
| 470 | @param TriggerTime The number of 100ns units until the timer expires.
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 471 | A TriggerTime of 0 is legal.
|
| 472 | If Type is TimerRelative and TriggerTime is 0, then the timer
|
| 473 | event will be signaled on the next timer tick.
|
| 474 | If Type is TimerPeriodic and TriggerTime is 0, then the timer
|
| 475 | event will be signaled on every timer tick.
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 476 |
|
| 477 | @retval EFI_SUCCESS The event has been set to be signaled at the requested time.
|
| 478 | @retval EFI_INVALID_PARAMETER Event or Type is not valid.
|
| 479 |
|
| 480 | **/
|
| 481 | typedef
|
| 482 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 483 | (EFIAPI *EFI_SET_TIMER)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 484 | IN EFI_EVENT Event,
|
| 485 | IN EFI_TIMER_DELAY Type,
|
| 486 | IN UINT64 TriggerTime
|
| 487 | );
|
| 488 |
|
| 489 | /**
|
| 490 | Signals an event.
|
| 491 |
|
| 492 | @param Event The event to signal.
|
| 493 |
|
| 494 | @retval EFI_SUCCESS The event has been signaled.
|
| 495 |
|
| 496 | **/
|
| 497 | typedef
|
| 498 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 499 | (EFIAPI *EFI_SIGNAL_EVENT)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 500 | IN EFI_EVENT Event
|
| 501 | );
|
| 502 |
|
| 503 | /**
|
| 504 | Stops execution until an event is signaled.
|
| 505 |
|
| 506 | @param NumberOfEvents The number of events in the Event array.
|
| 507 | @param Event An array of EFI_EVENT.
|
| 508 | @param Index Pointer to the index of the event which satisfied the wait condition.
|
| 509 |
|
| 510 | @retval EFI_SUCCESS The event indicated by Index was signaled.
|
| 511 | @retval EFI_INVALID_PARAMETER 1) NumberOfEvents is 0.
|
| 512 | 2) The event indicated by Index is of type
|
| 513 | EVT_NOTIFY_SIGNAL.
|
| 514 | @retval EFI_UNSUPPORTED The current TPL is not TPL_APPLICATION.
|
| 515 |
|
| 516 | **/
|
| 517 | typedef
|
| 518 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 519 | (EFIAPI *EFI_WAIT_FOR_EVENT)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 520 | IN UINTN NumberOfEvents,
|
| 521 | IN EFI_EVENT *Event,
|
| 522 | OUT UINTN *Index
|
| 523 | );
|
| 524 |
|
| 525 | /**
|
| 526 | Closes an event.
|
| 527 |
|
| 528 | @param Event The event to close.
|
| 529 |
|
| 530 | @retval EFI_SUCCESS The event has been closed.
|
| 531 |
|
| 532 | **/
|
| 533 | typedef
|
| 534 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 535 | (EFIAPI *EFI_CLOSE_EVENT)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 536 | IN EFI_EVENT Event
|
| 537 | );
|
| 538 |
|
| 539 | /**
|
| 540 | Checks whether an event is in the signaled state.
|
| 541 |
|
| 542 | @param Event The event to check.
|
| 543 |
|
| 544 | @retval EFI_SUCCESS The event is in the signaled state.
|
| 545 | @retval EFI_NOT_READY The event is not in the signaled state.
|
| 546 | @retval EFI_INVALID_PARAMETER Event is of type EVT_NOTIFY_SIGNAL.
|
| 547 |
|
| 548 | **/
|
| 549 | typedef
|
| 550 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 551 | (EFIAPI *EFI_CHECK_EVENT)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 552 | IN EFI_EVENT Event
|
| 553 | );
|
| 554 |
|
| 555 |
|
| 556 | //
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 557 | // Task priority level
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 558 | //
|
| 559 | #define TPL_APPLICATION 4
|
| 560 | #define TPL_CALLBACK 8
|
| 561 | #define TPL_NOTIFY 16
|
| 562 | #define TPL_HIGH_LEVEL 31
|
| 563 |
|
| 564 |
|
| 565 | /**
|
| 566 | Raises a task's priority level and returns its previous level.
|
| 567 |
|
| 568 | @param NewTpl The new task priority level.
|
| 569 |
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 570 | @return Previous task priority level
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 571 |
|
| 572 | **/
|
| 573 | typedef
|
| 574 | EFI_TPL
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 575 | (EFIAPI *EFI_RAISE_TPL)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 576 | IN EFI_TPL NewTpl
|
| 577 | );
|
| 578 |
|
| 579 | /**
|
| 580 | Restores a task's priority level to its previous value.
|
| 581 |
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 582 | @param OldTpl The previous task priority level to restore.
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 583 |
|
| 584 | **/
|
| 585 | typedef
|
| 586 | VOID
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 587 | (EFIAPI *EFI_RESTORE_TPL)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 588 | IN EFI_TPL OldTpl
|
| 589 | );
|
| 590 |
|
| 591 | /**
|
| 592 | Returns the value of a variable.
|
| 593 |
|
| 594 | @param VariableName A Null-terminated Unicode string that is the name of the
|
| 595 | vendor's variable.
|
| 596 | @param VendorGuid A unique identifier for the vendor.
|
| 597 | @param Attributes If not NULL, a pointer to the memory location to return the
|
| 598 | attributes bitmask for the variable.
|
| 599 | @param DataSize On input, the size in bytes of the return Data buffer.
|
| 600 | On output the size of data returned in Data.
|
| 601 | @param Data The buffer to return the contents of the variable.
|
| 602 |
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 603 | @retval EFI_SUCCESS The function completed successfully.
|
| 604 | @retval EFI_NOT_FOUND The variable was not found.
|
| 605 | @retval EFI_BUFFER_TOO_SMALL The DataSize is too small for the result.
|
| 606 | @retval EFI_INVALID_PARAMETER VariableName is NULL.
|
| 607 | @retval EFI_INVALID_PARAMETER VendorGuid is NULL.
|
| 608 | @retval EFI_INVALID_PARAMETER DataSize is NULL.
|
| 609 | @retval EFI_INVALID_PARAMETER The DataSize is not too small and Data is NULL.
|
| 610 | @retval EFI_DEVICE_ERROR The variable could not be retrieved due to a hardware error.
|
| 611 | @retval EFI_SECURITY_VIOLATION The variable could not be retrieved due to an authentication failure.
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 612 |
|
| 613 | **/
|
| 614 | typedef
|
| 615 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 616 | (EFIAPI *EFI_GET_VARIABLE)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 617 | IN CHAR16 *VariableName,
|
| 618 | IN EFI_GUID *VendorGuid,
|
| 619 | OUT UINT32 *Attributes, OPTIONAL
|
| 620 | IN OUT UINTN *DataSize,
|
| 621 | OUT VOID *Data
|
| 622 | );
|
| 623 |
|
| 624 | /**
|
| 625 | Enumerates the current variable names.
|
| 626 |
|
| 627 | @param VariableNameSize The size of the VariableName buffer.
|
| 628 | @param VariableName On input, supplies the last VariableName that was returned
|
| 629 | by GetNextVariableName(). On output, returns the Nullterminated
|
| 630 | Unicode string of the current variable.
|
| 631 | @param VendorGuid On input, supplies the last VendorGuid that was returned by
|
| 632 | GetNextVariableName(). On output, returns the
|
| 633 | VendorGuid of the current variable.
|
| 634 |
|
| 635 | @retval EFI_SUCCESS The function completed successfully.
|
| 636 | @retval EFI_NOT_FOUND The next variable was not found.
|
| 637 | @retval EFI_BUFFER_TOO_SMALL The VariableNameSize is too small for the result.
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 638 | @retval EFI_INVALID_PARAMETER VariableNameSize is NULL.
|
| 639 | @retval EFI_INVALID_PARAMETER VariableName is NULL.
|
| 640 | @retval EFI_INVALID_PARAMETER VendorGuid is NULL.
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 641 | @retval EFI_DEVICE_ERROR The variable could not be retrieved due to a hardware error.
|
| 642 |
|
| 643 | **/
|
| 644 | typedef
|
| 645 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 646 | (EFIAPI *EFI_GET_NEXT_VARIABLE_NAME)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 647 | IN OUT UINTN *VariableNameSize,
|
| 648 | IN OUT CHAR16 *VariableName,
|
| 649 | IN OUT EFI_GUID *VendorGuid
|
| 650 | );
|
| 651 |
|
| 652 | /**
|
| 653 | Sets the value of a variable.
|
| 654 |
|
| 655 | @param VariableName A Null-terminated Unicode string that is the name of the
|
| 656 | vendor's variable.
|
| 657 | @param VendorGuid A unique identifier for the vendor.
|
| 658 | @param Attributes Attributes bitmask to set for the variable.
|
| 659 | @param DataSize The size in bytes of the Data buffer.
|
| 660 | @param Data The contents for the variable.
|
| 661 |
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 662 | @retval EFI_SUCCESS The firmware has successfully stored the variable and its data as
|
| 663 | defined by the Attributes.
|
| 664 | @retval EFI_INVALID_PARAMETER An invalid combination of attribute bits was supplied, or the
|
| 665 | DataSize exceeds the maximum allowed.
|
| 666 | @retval EFI_INVALID_PARAMETER VariableName is an empty Unicode string.
|
| 667 | @retval EFI_OUT_OF_RESOURCES Not enough storage is available to hold the variable and its data.
|
| 668 | @retval EFI_DEVICE_ERROR The variable could not be retrieved due to a hardware error.
|
| 669 | @retval EFI_WRITE_PROTECTED The variable in question is read-only.
|
| 670 | @retval EFI_WRITE_PROTECTED The variable in question cannot be deleted.
|
| 671 | @retval EFI_SECURITY_VIOLATION The variable could not be retrieved due to an authentication failure.
|
| 672 | @retval EFI_NOT_FOUND The variable trying to be updated or deleted was not found.
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 673 |
|
| 674 | **/
|
| 675 | typedef
|
| 676 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 677 | (EFIAPI *EFI_SET_VARIABLE)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 678 | IN CHAR16 *VariableName,
|
| 679 | IN EFI_GUID *VendorGuid,
|
| 680 | IN UINT32 Attributes,
|
| 681 | IN UINTN DataSize,
|
| 682 | IN VOID *Data
|
| 683 | );
|
| 684 |
|
| 685 |
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 686 | ///
|
| 687 | /// This provides the capabilities of the
|
| 688 | /// real time clock device as exposed through the EFI interfaces.
|
| 689 | ///
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 690 | typedef struct {
|
lgao4 | 1bf7937 | 2008-12-10 08:22:03 +0000 | [diff] [blame] | 691 | ///
|
| 692 | /// Provides the reporting resolution of the real-time clock device in
|
| 693 | /// counts per second. For a normal PC-AT CMOS RTC device, this
|
| 694 | /// value would be 1 Hz, or 1, to indicate that the device only reports
|
| 695 | /// the time to the resolution of 1 second.
|
| 696 | ///
|
AJFISH | 00edb21 | 2007-06-18 20:28:02 +0000 | [diff] [blame] | 697 | UINT32 Resolution;
|
lgao4 | 1bf7937 | 2008-12-10 08:22:03 +0000 | [diff] [blame] | 698 | ///
|
| 699 | /// Provides the timekeeping accuracy of the real-time clock in an
|
| 700 | /// error rate of 1E-6 parts per million. For a clock with an accuracy
|
| 701 | /// of 50 parts per million, the value in this field would be
|
| 702 | /// 50,000,000.
|
| 703 | ///
|
AJFISH | 00edb21 | 2007-06-18 20:28:02 +0000 | [diff] [blame] | 704 | UINT32 Accuracy;
|
lgao4 | 1bf7937 | 2008-12-10 08:22:03 +0000 | [diff] [blame] | 705 | ///
|
lgao4 | de2314f | 2008-12-11 07:36:58 +0000 | [diff] [blame] | 706 | /// A TRUE indicates that a time set operation clears the device's
|
lgao4 | 1bf7937 | 2008-12-10 08:22:03 +0000 | [diff] [blame] | 707 | /// time below the Resolution reporting level. A FALSE
|
| 708 | /// indicates that the state below the Resolution level of the
|
| 709 | /// device is not cleared when the time is set. Normal PC-AT CMOS
|
| 710 | /// RTC devices set this value to FALSE.
|
| 711 | ///
|
AJFISH | 00edb21 | 2007-06-18 20:28:02 +0000 | [diff] [blame] | 712 | BOOLEAN SetsToZero;
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 713 | } EFI_TIME_CAPABILITIES;
|
| 714 |
|
| 715 | /**
|
| 716 | Returns the current time and date information, and the time-keeping capabilities
|
| 717 | of the hardware platform.
|
| 718 |
|
| 719 | @param Time A pointer to storage to receive a snapshot of the current time.
|
| 720 | @param Capabilities An optional pointer to a buffer to receive the real time clock
|
| 721 | device's capabilities.
|
| 722 |
|
| 723 | @retval EFI_SUCCESS The operation completed successfully.
|
| 724 | @retval EFI_INVALID_PARAMETER Time is NULL.
|
| 725 | @retval EFI_DEVICE_ERROR The time could not be retrieved due to hardware error.
|
| 726 |
|
| 727 | **/
|
| 728 | typedef
|
| 729 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 730 | (EFIAPI *EFI_GET_TIME)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 731 | OUT EFI_TIME *Time,
|
| 732 | OUT EFI_TIME_CAPABILITIES *Capabilities OPTIONAL
|
| 733 | );
|
| 734 |
|
| 735 | /**
|
| 736 | Sets the current local time and date information.
|
| 737 |
|
| 738 | @param Time A pointer to the current time.
|
| 739 |
|
| 740 | @retval EFI_SUCCESS The operation completed successfully.
|
| 741 | @retval EFI_INVALID_PARAMETER A time field is out of range.
|
| 742 | @retval EFI_DEVICE_ERROR The time could not be set due due to hardware error.
|
| 743 |
|
| 744 | **/
|
| 745 | typedef
|
| 746 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 747 | (EFIAPI *EFI_SET_TIME)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 748 | IN EFI_TIME *Time
|
| 749 | );
|
| 750 |
|
| 751 | /**
|
| 752 | Returns the current wakeup alarm clock setting.
|
| 753 |
|
| 754 | @param Enabled Indicates if the alarm is currently enabled or disabled.
|
| 755 | @param Pending Indicates if the alarm signal is pending and requires acknowledgement.
|
| 756 | @param Time The current alarm setting.
|
| 757 |
|
| 758 | @retval EFI_SUCCESS The alarm settings were returned.
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 759 | @retval EFI_INVALID_PARAMETER Enabled is NULL.
|
| 760 | @retval EFI_INVALID_PARAMETER Pending is NULL.
|
| 761 | @retval EFI_INVALID_PARAMETER Time is NULL.
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 762 | @retval EFI_DEVICE_ERROR The wakeup time could not be retrieved due to a hardware error.
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 763 | @retval EFI_UNSUPPORTED A wakeup timer is not supported on this platform.
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 764 |
|
| 765 | **/
|
| 766 | typedef
|
| 767 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 768 | (EFIAPI *EFI_GET_WAKEUP_TIME)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 769 | OUT BOOLEAN *Enabled,
|
| 770 | OUT BOOLEAN *Pending,
|
| 771 | OUT EFI_TIME *Time
|
| 772 | );
|
| 773 |
|
| 774 | /**
|
| 775 | Sets the system wakeup alarm clock time.
|
| 776 |
|
| 777 | @param Enabled Enable or disable the wakeup alarm.
|
| 778 | @param Time If Enable is TRUE, the time to set the wakeup alarm for.
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 779 | If Enable is FALSE, then this parameter is optional, and may be NULL.
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 780 |
|
| 781 | @retval EFI_SUCCESS If Enable is TRUE, then the wakeup alarm was enabled. If
|
| 782 | Enable is FALSE, then the wakeup alarm was disabled.
|
| 783 | @retval EFI_INVALID_PARAMETER A time field is out of range.
|
| 784 | @retval EFI_DEVICE_ERROR The wakeup time could not be set due to a hardware error.
|
| 785 | @retval EFI_UNSUPPORTED A wakeup timer is not supported on this platform.
|
| 786 |
|
| 787 | **/
|
| 788 | typedef
|
| 789 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 790 | (EFIAPI *EFI_SET_WAKEUP_TIME)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 791 | IN BOOLEAN Enable,
|
| 792 | IN EFI_TIME *Time OPTIONAL
|
| 793 | );
|
| 794 |
|
| 795 | /**
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 796 | Loads an EFI image into memory.
|
| 797 |
|
| 798 | @param BootPolicy If TRUE, indicates that the request originates from the boot
|
| 799 | manager, and that the boot manager is attempting to load
|
| 800 | FilePath as a boot selection. Ignored if SourceBuffer is
|
| 801 | not NULL.
|
| 802 | @param ParentImageHandle The caller's image handle.
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 803 | @param DevicePath The DeviceHandle specific file path from which the image is
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 804 | loaded.
|
| 805 | @param SourceBuffer If not NULL, a pointer to the memory location containing a copy
|
| 806 | of the image to be loaded.
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 807 | @param SourceSize The size in bytes of SourceBuffer. Ignored if SourceBuffer is NULL.
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 808 | @param ImageHandle Pointer to the returned image handle that is created when the
|
| 809 | image is successfully loaded.
|
| 810 |
|
| 811 | @retval EFI_SUCCESS Image was loaded into memory correctly.
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 812 | @retval EFI_NOT_FOUND Both SourceBuffer and DevicePath are NULL.
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 813 | @retval EFI_INVALID_PARAMETER One or more parametes are invalid.
|
| 814 | @retval EFI_UNSUPPORTED The image type is not supported.
|
| 815 | @retval EFI_OUT_OF_RESOURCES Image was not loaded due to insufficient resources.
|
| 816 | @retval EFI_LOAD_ERROR Image was not loaded because the image format was corrupt or not
|
| 817 | understood.
|
| 818 | @retval EFI_DEVICE_ERROR Image was not loaded because the device returned a read error.
|
| 819 |
|
| 820 | **/
|
| 821 | typedef
|
| 822 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 823 | (EFIAPI *EFI_IMAGE_LOAD)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 824 | IN BOOLEAN BootPolicy,
|
| 825 | IN EFI_HANDLE ParentImageHandle,
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 826 | IN EFI_DEVICE_PATH_PROTOCOL *DevicePath,
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 827 | IN VOID *SourceBuffer OPTIONAL,
|
| 828 | IN UINTN SourceSize,
|
| 829 | OUT EFI_HANDLE *ImageHandle
|
| 830 | );
|
| 831 |
|
| 832 | /**
|
| 833 | Transfers control to a loaded image's entry point.
|
| 834 |
|
| 835 | @param ImageHandle Handle of image to be started.
|
| 836 | @param ExitDataSize Pointer to the size, in bytes, of ExitData.
|
| 837 | @param ExitData Pointer to a pointer to a data buffer that includes a Null-terminated
|
| 838 | Unicode string, optionally followed by additional binary data.
|
| 839 |
|
| 840 | @retval EFI_INVALID_PARAMETER ImageHandle is either an invalid image handle or the image
|
| 841 | has already been initialized with StartImage
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 842 | @return Exit code from image
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 843 |
|
| 844 | **/
|
| 845 | typedef
|
| 846 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 847 | (EFIAPI *EFI_IMAGE_START)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 848 | IN EFI_HANDLE ImageHandle,
|
| 849 | OUT UINTN *ExitDataSize,
|
| 850 | OUT CHAR16 **ExitData OPTIONAL
|
| 851 | );
|
| 852 |
|
| 853 | /**
|
| 854 | Terminates a loaded EFI image and returns control to boot services.
|
| 855 |
|
| 856 | @param ImageHandle Handle that identifies the image.
|
| 857 | @param ExitStatus The image's exit code.
|
| 858 | @param ExitDataSize The size, in bytes, of ExitData.
|
| 859 | @param ExitData Pointer to a data buffer that includes a Null-terminated Unicode string,
|
| 860 | optionally followed by additional binary data.
|
| 861 |
|
| 862 | @retval EFI_SUCCESS The image specified by ImageHandle was unloaded.
|
| 863 | @retval EFI_INVALID_PARAMETER The image specified by ImageHandle has been loaded and
|
| 864 | started with LoadImage() and StartImage(), but the
|
| 865 | image is not the currently executing image.
|
| 866 |
|
| 867 | **/
|
| 868 | typedef
|
| 869 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 870 | (EFIAPI *EFI_EXIT)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 871 | IN EFI_HANDLE ImageHandle,
|
| 872 | IN EFI_STATUS ExitStatus,
|
| 873 | IN UINTN ExitDataSize,
|
| 874 | IN CHAR16 *ExitData OPTIONAL
|
| 875 | );
|
| 876 |
|
| 877 | /**
|
| 878 | Unloads an image.
|
| 879 |
|
| 880 | @param ImageHandle Handle that identifies the image to be unloaded.
|
| 881 |
|
| 882 | @retval EFI_SUCCESS The image has been unloaded.
|
| 883 | @retval EFI_INVALID_PARAMETER ImageHandle is not a valid image handle.
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 884 |
|
| 885 | **/
|
| 886 | typedef
|
| 887 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 888 | (EFIAPI *EFI_IMAGE_UNLOAD)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 889 | IN EFI_HANDLE ImageHandle
|
| 890 | );
|
| 891 |
|
| 892 | /**
|
| 893 | Terminates all boot services.
|
| 894 |
|
| 895 | @param ImageHandle Handle that identifies the exiting image.
|
| 896 | @param MapKey Key to the latest memory map.
|
| 897 |
|
| 898 | @retval EFI_SUCCESS Boot services have been terminated.
|
| 899 | @retval EFI_INVALID_PARAMETER MapKey is incorrect.
|
| 900 |
|
| 901 | **/
|
| 902 | typedef
|
| 903 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 904 | (EFIAPI *EFI_EXIT_BOOT_SERVICES)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 905 | IN EFI_HANDLE ImageHandle,
|
| 906 | IN UINTN MapKey
|
| 907 | );
|
| 908 |
|
| 909 | /**
|
| 910 | Induces a fine-grained stall.
|
| 911 |
|
| 912 | @param Microseconds The number of microseconds to stall execution.
|
| 913 |
|
| 914 | @retval EFI_SUCCESS Execution was stalled at least the requested number of
|
| 915 | Microseconds.
|
| 916 |
|
| 917 | **/
|
| 918 | typedef
|
| 919 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 920 | (EFIAPI *EFI_STALL)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 921 | IN UINTN Microseconds
|
| 922 | );
|
| 923 |
|
| 924 | /**
|
| 925 | Sets the system's watchdog timer.
|
| 926 |
|
| 927 | @param Timeout The number of seconds to set the watchdog timer to.
|
| 928 | @param WatchdogCode The numeric code to log on a watchdog timer timeout event.
|
| 929 | @param DataSize The size, in bytes, of WatchdogData.
|
| 930 | @param WatchdogData A data buffer that includes a Null-terminated Unicode string, optionally
|
| 931 | followed by additional binary data.
|
| 932 |
|
| 933 | @retval EFI_SUCCESS The timeout has been set.
|
| 934 | @retval EFI_INVALID_PARAMETER The supplied WatchdogCode is invalid.
|
| 935 | @retval EFI_UNSUPPORTED The system does not have a watchdog timer.
|
| 936 | @retval EFI_DEVICE_ERROR The watch dog timer could not be programmed due to a hardware
|
| 937 | error.
|
| 938 |
|
| 939 | **/
|
| 940 | typedef
|
| 941 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 942 | (EFIAPI *EFI_SET_WATCHDOG_TIMER)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 943 | IN UINTN Timeout,
|
| 944 | IN UINT64 WatchdogCode,
|
| 945 | IN UINTN DataSize,
|
| 946 | IN CHAR16 *WatchdogData OPTIONAL
|
| 947 | );
|
| 948 |
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 949 | ///
|
| 950 | /// Enumeration of reset types.
|
| 951 | ///
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 952 | typedef enum {
|
mdkinney | 2a3f6a2 | 2008-12-07 23:08:08 +0000 | [diff] [blame] | 953 | ///
|
| 954 | /// Used to induce a system-wide reset. This sets all circuitry within the
|
| 955 | /// system to its initial state. This type of reset is asynchronous to system
|
| 956 | /// operation and operates withgout regard to cycle boundaries. EfiColdReset
|
| 957 | /// is tantamount to a system power cycle.
|
| 958 | ///
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 959 | EfiResetCold,
|
mdkinney | 2a3f6a2 | 2008-12-07 23:08:08 +0000 | [diff] [blame] | 960 | ///
|
| 961 | /// Used to induce a system-wide initialization. The processors are set to their
|
| 962 | /// initial state, and pending cycles are not corrupted. If the system does
|
| 963 | /// not support this reset type, then an EfiResetCold must be performed.
|
| 964 | ///
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 965 | EfiResetWarm,
|
mdkinney | 2a3f6a2 | 2008-12-07 23:08:08 +0000 | [diff] [blame] | 966 | ///
|
| 967 | /// Used to induce en entry into power state equivalent to the ACPI G2/S5 or G3
|
| 968 | /// state. If the system does not support this reset type, then when the system
|
| 969 | /// is rebooted, it should exhibit the EfiResetCold attributes.
|
| 970 | ///
|
| 971 | EfiResetShutdown
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 972 | } EFI_RESET_TYPE;
|
| 973 |
|
| 974 | /**
|
| 975 | Resets the entire platform.
|
| 976 |
|
| 977 | @param ResetType The type of reset to perform.
|
| 978 | @param ResetStatus The status code for the reset.
|
| 979 | @param DataSize The size, in bytes, of WatchdogData.
|
| 980 | @param ResetData For a ResetType of EfiResetCold, EfiResetWarm, or
|
| 981 | EfiResetShutdown the data buffer starts with a Null-terminated
|
| 982 | Unicode string, optionally followed by additional binary data.
|
| 983 |
|
| 984 | **/
|
| 985 | typedef
|
| 986 | VOID
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 987 | (EFIAPI *EFI_RESET_SYSTEM)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 988 | IN EFI_RESET_TYPE ResetType,
|
| 989 | IN EFI_STATUS ResetStatus,
|
| 990 | IN UINTN DataSize,
|
zliu3 | b058028 | 2008-11-29 04:01:15 +0000 | [diff] [blame] | 991 | IN VOID *ResetData OPTIONAL
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 992 | );
|
| 993 |
|
| 994 | /**
|
| 995 | Returns a monotonically increasing count for the platform.
|
| 996 |
|
| 997 | @param Count Pointer to returned value.
|
| 998 |
|
| 999 | @retval EFI_SUCCESS The next monotonic count was returned.
|
| 1000 | @retval EFI_INVALID_PARAMETER Count is NULL.
|
| 1001 | @retval EFI_DEVICE_ERROR The device is not functioning properly.
|
| 1002 |
|
| 1003 | **/
|
| 1004 | typedef
|
| 1005 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 1006 | (EFIAPI *EFI_GET_NEXT_MONOTONIC_COUNT)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1007 | OUT UINT64 *Count
|
| 1008 | );
|
| 1009 |
|
| 1010 | /**
|
| 1011 | Returns the next high 32 bits of the platform's monotonic counter.
|
| 1012 |
|
| 1013 | @param HighCount Pointer to returned value.
|
| 1014 |
|
| 1015 | @retval EFI_SUCCESS The next high monotonic count was returned.
|
| 1016 | @retval EFI_INVALID_PARAMETER HighCount is NULL.
|
| 1017 | @retval EFI_DEVICE_ERROR The device is not functioning properly.
|
| 1018 |
|
| 1019 | **/
|
| 1020 | typedef
|
| 1021 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 1022 | (EFIAPI *EFI_GET_NEXT_HIGH_MONO_COUNT)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1023 | OUT UINT32 *HighCount
|
| 1024 | );
|
| 1025 |
|
| 1026 | /**
|
| 1027 | Computes and returns a 32-bit CRC for a data buffer.
|
| 1028 |
|
| 1029 | @param Data A pointer to the buffer on which the 32-bit CRC is to be computed.
|
| 1030 | @param DataSize The number of bytes in the buffer Data.
|
| 1031 | @param Crc32 The 32-bit CRC that was computed for the data buffer specified by Data
|
| 1032 | and DataSize.
|
| 1033 |
|
| 1034 | @retval EFI_SUCCESS The 32-bit CRC was computed for the data buffer and returned in
|
| 1035 | Crc32.
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 1036 | @retval EFI_INVALID_PARAMETER Data is NULL.
|
| 1037 | @retval EFI_INVALID_PARAMETER Crc32 is NULL.
|
| 1038 | @retval EFI_INVALID_PARAMETER DataSize is 0.
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1039 |
|
| 1040 | **/
|
| 1041 | typedef
|
| 1042 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 1043 | (EFIAPI *EFI_CALCULATE_CRC32)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1044 | IN VOID *Data,
|
| 1045 | IN UINTN DataSize,
|
| 1046 | OUT UINT32 *Crc32
|
| 1047 | );
|
| 1048 |
|
| 1049 | /**
|
| 1050 | Copies the contents of one buffer to another buffer.
|
| 1051 |
|
| 1052 | @param Destination Pointer to the destination buffer of the memory copy.
|
| 1053 | @param Source Pointer to the source buffer of the memory copy.
|
| 1054 | @param Length Number of bytes to copy from Source to Destination.
|
| 1055 |
|
| 1056 | **/
|
| 1057 | typedef
|
| 1058 | VOID
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 1059 | (EFIAPI *EFI_COPY_MEM)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1060 | IN VOID *Destination,
|
| 1061 | IN VOID *Source,
|
| 1062 | IN UINTN Length
|
| 1063 | );
|
| 1064 |
|
| 1065 | /**
|
| 1066 | The SetMem() function fills a buffer with a specified value.
|
| 1067 |
|
| 1068 | @param Buffer Pointer to the buffer to fill.
|
| 1069 | @param Size Number of bytes in Buffer to fill.
|
| 1070 | @param Value Value to fill Buffer with.
|
| 1071 |
|
| 1072 | **/
|
| 1073 | typedef
|
| 1074 | VOID
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 1075 | (EFIAPI *EFI_SET_MEM)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1076 | IN VOID *Buffer,
|
| 1077 | IN UINTN Size,
|
| 1078 | IN UINT8 Value
|
| 1079 | );
|
| 1080 |
|
mdkinney | 2a3f6a2 | 2008-12-07 23:08:08 +0000 | [diff] [blame] | 1081 | ///
|
| 1082 | /// Enumeration of EFI Interface Types
|
| 1083 | ///
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1084 | typedef enum {
|
mdkinney | 2a3f6a2 | 2008-12-07 23:08:08 +0000 | [diff] [blame] | 1085 | ///
|
| 1086 | /// Indicates that the supplied protocol interface is supplied in native form.
|
| 1087 | ///
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1088 | EFI_NATIVE_INTERFACE
|
| 1089 | } EFI_INTERFACE_TYPE;
|
| 1090 |
|
| 1091 | /**
|
| 1092 | Installs a protocol interface on a device handle. If the handle does not exist, it is created and added
|
| 1093 | to the list of handles in the system. InstallMultipleProtocolInterfaces() performs
|
| 1094 | more error checking than InstallProtocolInterface(), so it is recommended that
|
| 1095 | InstallMultipleProtocolInterfaces() be used in place of
|
| 1096 | InstallProtocolInterface()
|
| 1097 |
|
| 1098 | @param Handle A pointer to the EFI_HANDLE on which the interface is to be installed.
|
| 1099 | @param Protocol The numeric ID of the protocol interface.
|
| 1100 | @param InterfaceType Indicates whether Interface is supplied in native form.
|
| 1101 | @param Interface A pointer to the protocol interface.
|
| 1102 |
|
| 1103 | @retval EFI_SUCCESS The protocol interface was installed.
|
| 1104 | @retval EFI_OUT_OF_RESOURCES Space for a new handle could not be allocated.
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 1105 | @retval EFI_INVALID_PARAMETER Handle is NULL.
|
| 1106 | @retval EFI_INVALID_PARAMETER Protocol is NULL.
|
| 1107 | @retval EFI_INVALID_PARAMETER InterfaceType is not EFI_NATIVE_INTERFACE.
|
| 1108 | @retval EFI_INVALID_PARAMETER Protocol is already installed on the handle specified by Handle.
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1109 |
|
| 1110 | **/
|
| 1111 | typedef
|
| 1112 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 1113 | (EFIAPI *EFI_INSTALL_PROTOCOL_INTERFACE)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1114 | IN OUT EFI_HANDLE *Handle,
|
| 1115 | IN EFI_GUID *Protocol,
|
| 1116 | IN EFI_INTERFACE_TYPE InterfaceType,
|
| 1117 | IN VOID *Interface
|
| 1118 | );
|
| 1119 |
|
| 1120 | /**
|
| 1121 | Installs one or more protocol interfaces into the boot services environment.
|
| 1122 |
|
| 1123 | @param Handle The handle to install the new protocol interfaces on, or NULL if a new
|
| 1124 | handle is to be allocated.
|
| 1125 | @param ... A variable argument list containing pairs of protocol GUIDs and protocol
|
| 1126 | interfaces.
|
| 1127 |
|
| 1128 | @retval EFI_SUCCESS All the protocol interface was installed.
|
| 1129 | @retval EFI_OUT_OF_RESOURCES There was not enough memory in pool to install all the protocols.
|
| 1130 | @retval EFI_ALREADY_STARTED A Device Path Protocol instance was passed in that is already present in
|
| 1131 | the handle database.
|
| 1132 |
|
| 1133 | **/
|
| 1134 | typedef
|
| 1135 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 1136 | (EFIAPI *EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1137 | IN OUT EFI_HANDLE *Handle,
|
| 1138 | ...
|
| 1139 | );
|
| 1140 |
|
| 1141 | /**
|
| 1142 | Reinstalls a protocol interface on a device handle.
|
| 1143 |
|
| 1144 | @param Handle Handle on which the interface is to be reinstalled.
|
| 1145 | @param Protocol The numeric ID of the interface.
|
| 1146 | @param OldInterface A pointer to the old interface. NULL can be used if a structure is not
|
| 1147 | associated with Protocol.
|
| 1148 | @param NewInterface A pointer to the new interface.
|
| 1149 |
|
| 1150 | @retval EFI_SUCCESS The protocol interface was reinstalled.
|
| 1151 | @retval EFI_NOT_FOUND The OldInterface on the handle was not found.
|
| 1152 | @retval EFI_ACCESS_DENIED The protocol interface could not be reinstalled,
|
| 1153 | because OldInterface is still being used by a
|
| 1154 | driver that will not release it.
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 1155 | @retval EFI_INVALID_PARAMETER Handle is not a valid EFI_HANDLE.
|
| 1156 | @retval EFI_INVALID_PARAMETER Protocol is NULL.
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1157 |
|
| 1158 | **/
|
| 1159 | typedef
|
| 1160 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 1161 | (EFIAPI *EFI_REINSTALL_PROTOCOL_INTERFACE)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1162 | IN EFI_HANDLE Handle,
|
| 1163 | IN EFI_GUID *Protocol,
|
| 1164 | IN VOID *OldInterface,
|
| 1165 | IN VOID *NewInterface
|
| 1166 | );
|
| 1167 |
|
| 1168 | /**
|
| 1169 | Removes a protocol interface from a device handle. It is recommended that
|
| 1170 | UninstallMultipleProtocolInterfaces() be used in place of
|
| 1171 | UninstallProtocolInterface().
|
| 1172 |
|
| 1173 | @param Handle The handle on which the interface was installed.
|
| 1174 | @param Protocol The numeric ID of the interface.
|
| 1175 | @param Interface A pointer to the interface.
|
| 1176 |
|
| 1177 | @retval EFI_SUCCESS The interface was removed.
|
| 1178 | @retval EFI_NOT_FOUND The interface was not found.
|
| 1179 | @retval EFI_ACCESS_DENIED The interface was not removed because the interface
|
| 1180 | is still being used by a driver.
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 1181 | @retval EFI_INVALID_PARAMETER Handle is not a valid EFI_HANDLE.
|
| 1182 | @retval EFI_INVALID_PARAMETER Protocol is NULL.
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1183 |
|
| 1184 | **/
|
| 1185 | typedef
|
| 1186 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 1187 | (EFIAPI *EFI_UNINSTALL_PROTOCOL_INTERFACE)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1188 | IN EFI_HANDLE Handle,
|
| 1189 | IN EFI_GUID *Protocol,
|
| 1190 | IN VOID *Interface
|
| 1191 | );
|
| 1192 |
|
| 1193 | /**
|
| 1194 | Removes one or more protocol interfaces into the boot services environment.
|
| 1195 |
|
| 1196 | @param Handle The handle to remove the protocol interfaces from.
|
| 1197 | @param ... A variable argument list containing pairs of protocol GUIDs and
|
| 1198 | protocol interfaces.
|
| 1199 |
|
| 1200 | @retval EFI_SUCCESS All the protocol interfaces were removed.
|
| 1201 | @retval EFI_INVALID_PARAMETER One of the protocol interfaces was not previously installed on Handle.
|
| 1202 |
|
| 1203 | **/
|
| 1204 | typedef
|
| 1205 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 1206 | (EFIAPI *EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1207 | IN EFI_HANDLE Handle,
|
| 1208 | ...
|
| 1209 | );
|
| 1210 |
|
| 1211 | /**
|
| 1212 | Queries a handle to determine if it supports a specified protocol.
|
| 1213 |
|
| 1214 | @param Handle The handle being queried.
|
| 1215 | @param Protocol The published unique identifier of the protocol.
|
| 1216 | @param Interface Supplies the address where a pointer to the corresponding Protocol
|
| 1217 | Interface is returned.
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 1218 |
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1219 | @retval EFI_SUCCESS The interface information for the specified protocol was returned.
|
| 1220 | @retval EFI_UNSUPPORTED The device does not support the specified protocol.
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 1221 | @retval EFI_INVALID_PARAMETER Handle is not a valid EFI_HANDLE.
|
| 1222 | @retval EFI_INVALID_PARAMETER Protocol is NULL.
|
| 1223 | @retval EFI_INVALID_PARAMETER Interface is NULL.
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1224 |
|
| 1225 | **/
|
| 1226 | typedef
|
| 1227 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 1228 | (EFIAPI *EFI_HANDLE_PROTOCOL)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1229 | IN EFI_HANDLE Handle,
|
| 1230 | IN EFI_GUID *Protocol,
|
| 1231 | OUT VOID **Interface
|
| 1232 | );
|
| 1233 |
|
| 1234 | #define EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL 0x00000001
|
| 1235 | #define EFI_OPEN_PROTOCOL_GET_PROTOCOL 0x00000002
|
| 1236 | #define EFI_OPEN_PROTOCOL_TEST_PROTOCOL 0x00000004
|
| 1237 | #define EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER 0x00000008
|
| 1238 | #define EFI_OPEN_PROTOCOL_BY_DRIVER 0x00000010
|
| 1239 | #define EFI_OPEN_PROTOCOL_EXCLUSIVE 0x00000020
|
| 1240 |
|
| 1241 | /**
|
| 1242 | Queries a handle to determine if it supports a specified protocol. If the protocol is supported by the
|
| 1243 | handle, it opens the protocol on behalf of the calling agent.
|
| 1244 |
|
| 1245 | @param Handle The handle for the protocol interface that is being opened.
|
| 1246 | @param Protocol The published unique identifier of the protocol.
|
| 1247 | @param Interface Supplies the address where a pointer to the corresponding Protocol
|
| 1248 | Interface is returned.
|
| 1249 | @param AgentHandle The handle of the agent that is opening the protocol interface
|
| 1250 | specified by Protocol and Interface.
|
| 1251 | @param ControllerHandle If the agent that is opening a protocol is a driver that follows the
|
| 1252 | UEFI Driver Model, then this parameter is the controller handle
|
| 1253 | that requires the protocol interface. If the agent does not follow
|
| 1254 | the UEFI Driver Model, then this parameter is optional and may
|
| 1255 | be NULL.
|
| 1256 | @param Attributes The open mode of the protocol interface specified by Handle
|
| 1257 | and Protocol.
|
| 1258 |
|
| 1259 | @retval EFI_SUCCESS An item was added to the open list for the protocol interface, and the
|
| 1260 | protocol interface was returned in Interface.
|
| 1261 | @retval EFI_UNSUPPORTED Handle does not support Protocol.
|
| 1262 | @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
|
| 1263 | @retval EFI_ACCESS_DENIED Required attributes can't be supported in current environment.
|
| 1264 | @retval EFI_ALREADY_STARTED Item on the open list already has requierd attributes whose agent
|
| 1265 | handle is the same as AgentHandle.
|
| 1266 |
|
| 1267 | **/
|
| 1268 | typedef
|
| 1269 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 1270 | (EFIAPI *EFI_OPEN_PROTOCOL)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1271 | IN EFI_HANDLE Handle,
|
| 1272 | IN EFI_GUID *Protocol,
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 1273 | OUT VOID **Interface, OPTIONAL
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1274 | IN EFI_HANDLE AgentHandle,
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 1275 | IN EFI_HANDLE ControllerHandle,
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1276 | IN UINT32 Attributes
|
| 1277 | );
|
| 1278 |
|
| 1279 |
|
| 1280 | /**
|
| 1281 | Closes a protocol on a handle that was opened using OpenProtocol().
|
| 1282 |
|
| 1283 | @param Handle The handle for the protocol interface that was previously opened
|
| 1284 | with OpenProtocol(), and is now being closed.
|
| 1285 | @param Protocol The published unique identifier of the protocol.
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1286 | @param AgentHandle The handle of the agent that is closing the protocol interface.
|
| 1287 | @param ControllerHandle If the agent that opened a protocol is a driver that follows the
|
| 1288 | UEFI Driver Model, then this parameter is the controller handle
|
| 1289 | that required the protocol interface.
|
| 1290 |
|
| 1291 | @retval EFI_SUCCESS The protocol instance was closed.
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 1292 | @retval EFI_INVALID_PARAMETER 1) Handle is not a valid EFI_HANDLE.
|
| 1293 | 2) AgentHandle is not a valid EFI_HANDLE.
|
| 1294 | 3) ControllerHandle is not NULL and ControllerHandle is not a valid EFI_HANDLE.
|
| 1295 | 4) Protocol is NULL.
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1296 | @retval EFI_NOT_FOUND 1) Handle does not support the protocol specified by Protocol.
|
| 1297 | 2) The protocol interface specified by Handle and Protocol is not
|
| 1298 | currently open by AgentHandle and ControllerHandle.
|
| 1299 |
|
| 1300 | **/
|
| 1301 | typedef
|
| 1302 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 1303 | (EFIAPI *EFI_CLOSE_PROTOCOL)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1304 | IN EFI_HANDLE Handle,
|
| 1305 | IN EFI_GUID *Protocol,
|
| 1306 | IN EFI_HANDLE AgentHandle,
|
| 1307 | IN EFI_HANDLE ControllerHandle
|
| 1308 | );
|
| 1309 |
|
mdkinney | 2a3f6a2 | 2008-12-07 23:08:08 +0000 | [diff] [blame] | 1310 | ///
|
| 1311 | /// EFI Oprn Protocol Information Entry
|
| 1312 | ///
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1313 | typedef struct {
|
| 1314 | EFI_HANDLE AgentHandle;
|
| 1315 | EFI_HANDLE ControllerHandle;
|
| 1316 | UINT32 Attributes;
|
| 1317 | UINT32 OpenCount;
|
| 1318 | } EFI_OPEN_PROTOCOL_INFORMATION_ENTRY;
|
| 1319 |
|
| 1320 | /**
|
| 1321 | Retrieves the list of agents that currently have a protocol interface opened.
|
| 1322 |
|
| 1323 | @param Handle The handle for the protocol interface that is being queried.
|
| 1324 | @param Protocol The published unique identifier of the protocol.
|
| 1325 | @param EntryBuffer A pointer to a buffer of open protocol information in the form of
|
| 1326 | EFI_OPEN_PROTOCOL_INFORMATION_ENTRY structures.
|
| 1327 | @param EntryCount A pointer to the number of entries in EntryBuffer.
|
| 1328 |
|
| 1329 | @retval EFI_SUCCESS The open protocol information was returned in EntryBuffer, and the
|
| 1330 | number of entries was returned EntryCount.
|
| 1331 | @retval EFI_OUT_OF_RESOURCES There are not enough resources available to allocate EntryBuffer.
|
| 1332 | @retval EFI_NOT_FOUND Handle does not support the protocol specified by Protocol.
|
| 1333 |
|
| 1334 | **/
|
| 1335 | typedef
|
| 1336 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 1337 | (EFIAPI *EFI_OPEN_PROTOCOL_INFORMATION)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1338 | IN EFI_HANDLE Handle,
|
| 1339 | IN EFI_GUID *Protocol,
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 1340 | OUT EFI_OPEN_PROTOCOL_INFORMATION_ENTRY **EntryBuffer,
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1341 | OUT UINTN *EntryCount
|
| 1342 | );
|
| 1343 |
|
| 1344 | /**
|
| 1345 | Retrieves the list of protocol interface GUIDs that are installed on a handle in a buffer allocated
|
| 1346 | from pool.
|
| 1347 |
|
| 1348 | @param Handle The handle from which to retrieve the list of protocol interface
|
| 1349 | GUIDs.
|
| 1350 | @param ProtocolBuffer A pointer to the list of protocol interface GUID pointers that are
|
| 1351 | installed on Handle.
|
| 1352 | @param ProtocolBufferCount A pointer to the number of GUID pointers present in
|
| 1353 | ProtocolBuffer.
|
| 1354 |
|
| 1355 | @retval EFI_SUCCESS The list of protocol interface GUIDs installed on Handle was returned in
|
| 1356 | ProtocolBuffer. The number of protocol interface GUIDs was
|
| 1357 | returned in ProtocolBufferCount.
|
| 1358 | @retval EFI_OUT_OF_RESOURCES There is not enough pool memory to store the results.
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 1359 | @retval EFI_INVALID_PARAMETER Handle is NULL.
|
| 1360 | @retval EFI_INVALID_PARAMETER Handle is not a valid EFI_HANDLE.
|
| 1361 | @retval EFI_INVALID_PARAMETER ProtocolBuffer is NULL.
|
| 1362 | @retval EFI_INVALID_PARAMETER ProtocolBufferCount is NULL.
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1363 |
|
| 1364 | **/
|
| 1365 | typedef
|
| 1366 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 1367 | (EFIAPI *EFI_PROTOCOLS_PER_HANDLE)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1368 | IN EFI_HANDLE Handle,
|
| 1369 | OUT EFI_GUID ***ProtocolBuffer,
|
| 1370 | OUT UINTN *ProtocolBufferCount
|
| 1371 | );
|
| 1372 |
|
| 1373 | /**
|
| 1374 | Creates an event that is to be signaled whenever an interface is installed for a specified protocol.
|
| 1375 |
|
| 1376 | @param Protocol The numeric ID of the protocol for which the event is to be registered.
|
| 1377 | @param Event Event that is to be signaled whenever a protocol interface is registered
|
| 1378 | for Protocol.
|
| 1379 | @param Registration A pointer to a memory location to receive the registration value.
|
| 1380 |
|
| 1381 | @retval EFI_SUCCESS The notification event has been registered.
|
| 1382 | @retval EFI_OUT_OF_RESOURCES Space for the notification event could not be allocated.
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 1383 | @retval EFI_INVALID_PARAMETER Protocol is NULL.
|
| 1384 | @retval EFI_INVALID_PARAMETER Event is NULL.
|
| 1385 | @retval EFI_INVALID_PARAMETER Registration is NULL.
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1386 |
|
| 1387 | **/
|
| 1388 | typedef
|
| 1389 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 1390 | (EFIAPI *EFI_REGISTER_PROTOCOL_NOTIFY)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1391 | IN EFI_GUID *Protocol,
|
| 1392 | IN EFI_EVENT Event,
|
| 1393 | OUT VOID **Registration
|
| 1394 | );
|
| 1395 |
|
mdkinney | 2a3f6a2 | 2008-12-07 23:08:08 +0000 | [diff] [blame] | 1396 | ///
|
| 1397 | /// Enumeration of EFI Locate Search Types
|
| 1398 | ///
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1399 | typedef enum {
|
mdkinney | 2a3f6a2 | 2008-12-07 23:08:08 +0000 | [diff] [blame] | 1400 | ///
|
| 1401 | /// Retrieve all the handles in the handle database.
|
| 1402 | ///
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1403 | AllHandles,
|
mdkinney | 2a3f6a2 | 2008-12-07 23:08:08 +0000 | [diff] [blame] | 1404 | ///
|
| 1405 | /// Retrieve the next handle fron a RegisterProtocolNotify() event.
|
| 1406 | ///
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1407 | ByRegisterNotify,
|
mdkinney | 2a3f6a2 | 2008-12-07 23:08:08 +0000 | [diff] [blame] | 1408 | ///
|
| 1409 | /// Retrieve the set of handles from the handle database that support a
|
| 1410 | /// specified protocol.
|
| 1411 | ///
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1412 | ByProtocol
|
| 1413 | } EFI_LOCATE_SEARCH_TYPE;
|
| 1414 |
|
| 1415 | /**
|
| 1416 | Returns an array of handles that support a specified protocol.
|
| 1417 |
|
| 1418 | @param SearchType Specifies which handle(s) are to be returned.
|
| 1419 | @param Protocol Specifies the protocol to search by.
|
| 1420 | @param SearchKey Specifies the search key.
|
| 1421 | @param BufferSize On input, the size in bytes of Buffer. On output, the size in bytes of
|
| 1422 | the array returned in Buffer (if the buffer was large enough) or the
|
| 1423 | size, in bytes, of the buffer needed to obtain the array (if the buffer was
|
| 1424 | not large enough).
|
| 1425 | @param Buffer The buffer in which the array is returned.
|
| 1426 |
|
| 1427 | @retval EFI_SUCCESS The array of handles was returned.
|
| 1428 | @retval EFI_NOT_FOUND No handles match the search.
|
| 1429 | @retval EFI_BUFFER_TOO_SMALL The BufferSize is too small for the result.
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 1430 | @retval EFI_INVALID_PARAMETER SearchType is not a member of EFI_LOCATE_SEARCH_TYPE.
|
| 1431 | @retval EFI_INVALID_PARAMETER SearchType is ByRegisterNotify and SearchKey is NULL.
|
| 1432 | @retval EFI_INVALID_PARAMETER SearchType is ByProtocol and Protocol is NULL.
|
| 1433 | @retval EFI_INVALID_PARAMETER One or more matches are found and BufferSize is NULL.
|
| 1434 | @retval EFI_INVALID_PARAMETER BufferSize is large enough for the result and Buffer is NULL.
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1435 |
|
| 1436 | **/
|
| 1437 | typedef
|
| 1438 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 1439 | (EFIAPI *EFI_LOCATE_HANDLE)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1440 | IN EFI_LOCATE_SEARCH_TYPE SearchType,
|
| 1441 | IN EFI_GUID *Protocol, OPTIONAL
|
| 1442 | IN VOID *SearchKey, OPTIONAL
|
| 1443 | IN OUT UINTN *BufferSize,
|
| 1444 | OUT EFI_HANDLE *Buffer
|
| 1445 | );
|
| 1446 |
|
| 1447 | /**
|
| 1448 | Locates the handle to a device on the device path that supports the specified protocol.
|
| 1449 |
|
| 1450 | @param Protocol Specifies the protocol to search for.
|
| 1451 | @param DevicePath On input, a pointer to a pointer to the device path. On output, the device
|
| 1452 | path pointer is modified to point to the remaining part of the device
|
| 1453 | path.
|
| 1454 | @param Device A pointer to the returned device handle.
|
| 1455 |
|
| 1456 | @retval EFI_SUCCESS The resulting handle was returned.
|
| 1457 | @retval EFI_NOT_FOUND No handles match the search.
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 1458 | @retval EFI_INVALID_PARAMETER Protocol is NULL.
|
| 1459 | @retval EFI_INVALID_PARAMETER DevicePath is NULL.
|
| 1460 | @retval EFI_INVALID_PARAMETER A handle matched the search and Device is NULL.
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1461 |
|
| 1462 | **/
|
| 1463 | typedef
|
| 1464 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 1465 | (EFIAPI *EFI_LOCATE_DEVICE_PATH)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1466 | IN EFI_GUID *Protocol,
|
| 1467 | IN OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath,
|
| 1468 | OUT EFI_HANDLE *Device
|
| 1469 | );
|
| 1470 |
|
| 1471 | /**
|
| 1472 | Adds, updates, or removes a configuration table entry from the EFI System Table.
|
| 1473 |
|
| 1474 | @param Guid A pointer to the GUID for the entry to add, update, or remove.
|
| 1475 | @param Table A pointer to the configuration table for the entry to add, update, or
|
| 1476 | remove. May be NULL.
|
| 1477 |
|
| 1478 | @retval EFI_SUCCESS The (Guid, Table) pair was added, updated, or removed.
|
| 1479 | @retval EFI_NOT_FOUND An attempt was made to delete a nonexistent entry.
|
| 1480 | @retval EFI_INVALID_PARAMETER Guid is not valid.
|
| 1481 | @retval EFI_OUT_OF_RESOURCES There is not enough memory available to complete the operation.
|
| 1482 |
|
| 1483 | **/
|
| 1484 | typedef
|
| 1485 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 1486 | (EFIAPI *EFI_INSTALL_CONFIGURATION_TABLE)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1487 | IN EFI_GUID *Guid,
|
| 1488 | IN VOID *Table
|
| 1489 | );
|
| 1490 |
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1491 | /**
|
| 1492 | Returns an array of handles that support the requested protocol in a buffer allocated from pool.
|
| 1493 |
|
| 1494 | @param SearchType Specifies which handle(s) are to be returned.
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 1495 | @param Protocol Provides the protocol to search by.
|
| 1496 | This parameter is only valid for a SearchType of ByProtocol.
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1497 | @param SearchKey Supplies the search key depending on the SearchType.
|
| 1498 | @param NoHandles The number of handles returned in Buffer.
|
| 1499 | @param Buffer A pointer to the buffer to return the requested array of handles that
|
| 1500 | support Protocol.
|
| 1501 |
|
| 1502 | @retval EFI_SUCCESS The array of handles was returned in Buffer, and the number of
|
| 1503 | handles in Buffer was returned in NoHandles.
|
| 1504 | @retval EFI_NOT_FOUND No handles match the search.
|
| 1505 | @retval EFI_OUT_OF_RESOURCES There is not enough pool memory to store the matching results.
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 1506 | @retval EFI_INVALID_PARAMETER NoHandles is NULL.
|
| 1507 | @retval EFI_INVALID_PARAMETER Buffer is NULL.
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1508 |
|
| 1509 | **/
|
| 1510 | typedef
|
| 1511 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 1512 | (EFIAPI *EFI_LOCATE_HANDLE_BUFFER)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1513 | IN EFI_LOCATE_SEARCH_TYPE SearchType,
|
| 1514 | IN EFI_GUID *Protocol, OPTIONAL
|
| 1515 | IN VOID *SearchKey, OPTIONAL
|
| 1516 | IN OUT UINTN *NoHandles,
|
| 1517 | OUT EFI_HANDLE **Buffer
|
| 1518 | );
|
| 1519 |
|
| 1520 | /**
|
| 1521 | Returns the first protocol instance that matches the given protocol.
|
| 1522 |
|
| 1523 | @param Protocol Provides the protocol to search for.
|
| 1524 | @param Registration Optional registration key returned from
|
| 1525 | RegisterProtocolNotify().
|
| 1526 | @param Interface On return, a pointer to the first interface that matches Protocol and
|
| 1527 | Registration.
|
| 1528 |
|
| 1529 | @retval EFI_SUCCESS A protocol instance matching Protocol was found and returned in
|
| 1530 | Interface.
|
| 1531 | @retval EFI_NOT_FOUND No protocol instances were found that match Protocol and
|
| 1532 | Registration.
|
| 1533 | @retval EFI_INVALID_PARAMETER Interface is NULL.
|
| 1534 |
|
| 1535 | **/
|
| 1536 | typedef
|
| 1537 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 1538 | (EFIAPI *EFI_LOCATE_PROTOCOL)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1539 | IN EFI_GUID *Protocol,
|
| 1540 | IN VOID *Registration, OPTIONAL
|
| 1541 | OUT VOID **Interface
|
| 1542 | );
|
| 1543 |
|
mdkinney | 2a3f6a2 | 2008-12-07 23:08:08 +0000 | [diff] [blame] | 1544 | ///
|
| 1545 | /// EFI Capsule Block Descriptor
|
| 1546 | ///
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1547 | typedef struct {
|
lgao4 | 1bf7937 | 2008-12-10 08:22:03 +0000 | [diff] [blame] | 1548 | ///
|
| 1549 | /// Length in bytes of the data pointed to by DataBlock/ContinuationPointer.
|
| 1550 | ///
|
mdkinney | 2a3f6a2 | 2008-12-07 23:08:08 +0000 | [diff] [blame] | 1551 | UINT64 Length;
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1552 | union {
|
lgao4 | 1bf7937 | 2008-12-10 08:22:03 +0000 | [diff] [blame] | 1553 | ///
|
| 1554 | /// Physical address of the data block. This member of the union is
|
| 1555 | /// used if Length is not equal to zero.
|
| 1556 | ///
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1557 | EFI_PHYSICAL_ADDRESS DataBlock;
|
lgao4 | 1bf7937 | 2008-12-10 08:22:03 +0000 | [diff] [blame] | 1558 | ///
|
| 1559 | /// Physical address of another block of
|
| 1560 | /// EFI_CAPSULE_BLOCK_DESCRIPTOR structures. This
|
| 1561 | /// member of the union is used if Length is equal to zero. If
|
| 1562 | /// ContinuationPointer is zero this entry represents the end of the list.
|
| 1563 | ///
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1564 | EFI_PHYSICAL_ADDRESS ContinuationPointer;
|
| 1565 | } Union;
|
yshang1 | 45ad556 | 2007-07-03 05:39:08 +0000 | [diff] [blame] | 1566 | } EFI_CAPSULE_BLOCK_DESCRIPTOR;
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1567 |
|
mdkinney | 2a3f6a2 | 2008-12-07 23:08:08 +0000 | [diff] [blame] | 1568 | ///
|
| 1569 | /// EFI Capsule Header
|
| 1570 | ///
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1571 | typedef struct {
|
lgao4 | 1bf7937 | 2008-12-10 08:22:03 +0000 | [diff] [blame] | 1572 | ///
|
| 1573 | /// A GUID that defines the contents of a capsule.
|
| 1574 | ///
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1575 | EFI_GUID CapsuleGuid;
|
lgao4 | 1bf7937 | 2008-12-10 08:22:03 +0000 | [diff] [blame] | 1576 | ///
|
| 1577 | /// The size of the capsule header. This may be larger than the size of
|
| 1578 | /// the EFI_CAPSULE_HEADER since CapsuleGuid may imply
|
| 1579 | /// extended header entries
|
| 1580 | ///
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1581 | UINT32 HeaderSize;
|
lgao4 | 1bf7937 | 2008-12-10 08:22:03 +0000 | [diff] [blame] | 1582 | ///
|
| 1583 | /// Bit-mapped list describing the capsule attributes. The Flag values
|
lgao4 | f6d2bcc | 2008-12-12 08:51:16 +0000 | [diff] [blame] | 1584 | /// of 0x0000 - 0xFFFF are defined by CapsuleGuid. Flag values
|
jji4 | a0d58c2 | 2009-03-26 09:30:21 +0000 | [diff] [blame] | 1585 | /// of 0x10000 - 0xFFFFFFFF are defined by this specification
|
lgao4 | 1bf7937 | 2008-12-10 08:22:03 +0000 | [diff] [blame] | 1586 | ///
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1587 | UINT32 Flags;
|
lgao4 | 1bf7937 | 2008-12-10 08:22:03 +0000 | [diff] [blame] | 1588 | ///
|
| 1589 | /// Size in bytes of the capsule.
|
| 1590 | ///
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1591 | UINT32 CapsuleImageSize;
|
yshang1 | 45ad556 | 2007-07-03 05:39:08 +0000 | [diff] [blame] | 1592 | } EFI_CAPSULE_HEADER;
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1593 |
|
lgao4 | 1bf7937 | 2008-12-10 08:22:03 +0000 | [diff] [blame] | 1594 | ///
|
| 1595 | /// The EFI System Table entry must point to an array of capsules
|
| 1596 | /// that contain the same CapsuleGuid value. The array must be
|
| 1597 | /// prefixed by a UINT32 that represents the size of the array of capsules.
|
| 1598 | ///
|
lgao4 | 176a6bb | 2007-11-27 07:06:01 +0000 | [diff] [blame] | 1599 | typedef struct {
|
lgao4 | 1bf7937 | 2008-12-10 08:22:03 +0000 | [diff] [blame] | 1600 | ///
|
| 1601 | /// the size of the array of capsules.
|
| 1602 | ///
|
lgao4 | 176a6bb | 2007-11-27 07:06:01 +0000 | [diff] [blame] | 1603 | UINT32 CapsuleArrayNumber;
|
lgao4 | 1bf7937 | 2008-12-10 08:22:03 +0000 | [diff] [blame] | 1604 | ///
|
| 1605 | /// Point to an array of capsules that contain the same CapsuleGuid value.
|
| 1606 | ///
|
lgao4 | 176a6bb | 2007-11-27 07:06:01 +0000 | [diff] [blame] | 1607 | VOID* CapsulePtr[1];
|
| 1608 | } EFI_CAPSULE_TABLE;
|
| 1609 |
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1610 | #define CAPSULE_FLAGS_PERSIST_ACROSS_RESET 0x00010000
|
| 1611 | #define CAPSULE_FLAGS_POPULATE_SYSTEM_TABLE 0x00020000
|
| 1612 |
|
| 1613 | /**
|
| 1614 | Passes capsules to the firmware with both virtual and physical mapping. Depending on the intended
|
| 1615 | consumption, the firmware may process the capsule immediately. If the payload should persist
|
| 1616 | across a system reset, the reset value returned from EFI_QueryCapsuleCapabilities must
|
| 1617 | be passed into ResetSystem() and will cause the capsule to be processed by the firmware as
|
| 1618 | part of the reset process.
|
| 1619 |
|
| 1620 | @param CapsuleHeaderArray Virtual pointer to an array of virtual pointers to the capsules
|
| 1621 | being passed into update capsule.
|
| 1622 | @param CapsuleCount Number of pointers to EFI_CAPSULE_HEADER in
|
| 1623 | CaspuleHeaderArray.
|
| 1624 | @param ScatterGatherList Physical pointer to a set of
|
| 1625 | EFI_CAPSULE_BLOCK_DESCRIPTOR that describes the
|
| 1626 | location in physical memory of a set of capsules.
|
| 1627 |
|
| 1628 | @retval EFI_SUCCESS Valid capsule was passed. If
|
| 1629 | CAPSULE_FLAGS_PERSIT_ACROSS_RESET is not set, the
|
| 1630 | capsule has been successfully processed by the firmware.
|
jji4 | a0d58c2 | 2009-03-26 09:30:21 +0000 | [diff] [blame] | 1631 | @retval EFI_INVALID_PARAMETER CapsuleSize or HeaderSize is NULL.
|
| 1632 | @retval EFI_INVALID_PARAMETER CapsuleCount is 0.
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1633 | @retval EFI_DEVICE_ERROR The capsule update was started, but failed due to a device error.
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 1634 | @retval EFI_UNSUPPORTED The capsule type is not supported on this platform.
|
| 1635 | @retval EFI_OUT_OF_RESOURCES There were insufficient resources to process the capsule.
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1636 |
|
| 1637 | **/
|
| 1638 | typedef
|
| 1639 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 1640 | (EFIAPI *EFI_UPDATE_CAPSULE)(
|
yshang1 | 531febc | 2007-07-03 05:44:35 +0000 | [diff] [blame] | 1641 | IN EFI_CAPSULE_HEADER **CapsuleHeaderArray,
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1642 | IN UINTN CapsuleCount,
|
| 1643 | IN EFI_PHYSICAL_ADDRESS ScatterGatherList OPTIONAL
|
| 1644 | );
|
| 1645 |
|
| 1646 | /**
|
| 1647 | Returns if the capsule can be supported via UpdateCapsule().
|
| 1648 |
|
| 1649 | @param CapsuleHeaderArray Virtual pointer to an array of virtual pointers to the capsules
|
| 1650 | being passed into update capsule.
|
| 1651 | @param CapsuleCount Number of pointers to EFI_CAPSULE_HEADER in
|
| 1652 | CaspuleHeaderArray.
|
| 1653 | @param MaxiumCapsuleSize On output the maximum size that UpdateCapsule() can
|
| 1654 | support as an argument to UpdateCapsule() via
|
| 1655 | CapsuleHeaderArray and ScatterGatherList.
|
| 1656 | @param ResetType Returns the type of reset required for the capsule update.
|
| 1657 |
|
| 1658 | @retval EFI_SUCCESS Valid answer returned.
|
| 1659 | @retval EFI_UNSUPPORTED The capsule type is not supported on this platform, and
|
| 1660 | MaximumCapsuleSize and ResetType are undefined.
|
| 1661 | @retval EFI_INVALID_PARAMETER MaximumCapsuleSize is NULL.
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 1662 | @retval EFI_OUT_OF_RESOURCES There were insufficient resources to process the query request.
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1663 |
|
| 1664 | **/
|
| 1665 | typedef
|
| 1666 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 1667 | (EFIAPI *EFI_QUERY_CAPSULE_CAPABILITIES)(
|
yshang1 | 531febc | 2007-07-03 05:44:35 +0000 | [diff] [blame] | 1668 | IN EFI_CAPSULE_HEADER **CapsuleHeaderArray,
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1669 | IN UINTN CapsuleCount,
|
| 1670 | OUT UINT64 *MaximumCapsuleSize,
|
| 1671 | OUT EFI_RESET_TYPE *ResetType
|
| 1672 | );
|
| 1673 |
|
| 1674 | /**
|
| 1675 | Returns information about the EFI variables.
|
| 1676 |
|
| 1677 | @param Attributes Attributes bitmask to specify the type of variables on
|
| 1678 | which to return information.
|
| 1679 | @param MaximumVariableStorageSize On output the maximum size of the storage space
|
| 1680 | available for the EFI variables associated with the
|
| 1681 | attributes specified.
|
| 1682 | @param RemainingVariableStorageSize Returns the remaining size of the storage space
|
| 1683 | available for the EFI variables associated with the
|
| 1684 | attributes specified.
|
| 1685 | @param MaximumVariableSize Returns the maximum size of the individual EFI
|
| 1686 | variables associated with the attributes specified.
|
| 1687 |
|
| 1688 | @retval EFI_SUCCESS Valid answer returned.
|
| 1689 | @retval EFI_INVALID_PARAMETER An invalid combination of attribute bits was supplied
|
| 1690 | @retval EFI_UNSUPPORTED The attribute is not supported on this platform, and the
|
| 1691 | MaximumVariableStorageSize,
|
| 1692 | RemainingVariableStorageSize, MaximumVariableSize
|
| 1693 | are undefined.
|
| 1694 |
|
| 1695 | **/
|
| 1696 | typedef
|
| 1697 | EFI_STATUS
|
klu2 | 8b13229 | 2008-06-24 07:14:18 +0000 | [diff] [blame] | 1698 | (EFIAPI *EFI_QUERY_VARIABLE_INFO)(
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1699 | IN UINT32 Attributes,
|
| 1700 | OUT UINT64 *MaximumVariableStorageSize,
|
| 1701 | OUT UINT64 *RemainingVariableStorageSize,
|
| 1702 | OUT UINT64 *MaximumVariableSize
|
| 1703 | );
|
| 1704 |
|
| 1705 |
|
| 1706 | //
|
| 1707 | // EFI Runtime Services Table
|
| 1708 | //
|
qhuang8 | 0763673 | 2008-12-16 15:33:49 +0000 | [diff] [blame] | 1709 | #define EFI_SYSTEM_TABLE_SIGNATURE SIGNATURE_64 ('I','B','I',' ','S','Y','S','T')
|
mdkinney | 2a3f6a2 | 2008-12-07 23:08:08 +0000 | [diff] [blame] | 1710 | #define EFI_SYSTEM_TABLE_REVISION ((2 << 16) | (10))
|
| 1711 | #define EFI_2_10_SYSTEM_TABLE_REVISION ((2 << 16) | (10))
|
| 1712 | #define EFI_2_00_SYSTEM_TABLE_REVISION ((2 << 16) | (00))
|
| 1713 | #define EFI_1_10_SYSTEM_TABLE_REVISION ((1 << 16) | (10))
|
| 1714 | #define EFI_1_02_SYSTEM_TABLE_REVISION ((1 << 16) | (02))
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1715 |
|
qhuang8 | 0763673 | 2008-12-16 15:33:49 +0000 | [diff] [blame] | 1716 | #define EFI_RUNTIME_SERVICES_SIGNATURE SIGNATURE_64 ('R','U','N','T','S','E','R','V')
|
yshang1 | d1f9500 | 2007-06-19 10:12:02 +0000 | [diff] [blame] | 1717 | #define EFI_RUNTIME_SERVICES_REVISION EFI_2_10_SYSTEM_TABLE_REVISION
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1718 |
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 1719 | ///
|
| 1720 | /// EFI Runtime Services Table
|
| 1721 | ///
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1722 | typedef struct {
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 1723 | ///
|
| 1724 | /// The table header for the EFI Runtime Services Table.
|
| 1725 | ///
|
AJFISH | c9a0a0f | 2007-10-24 19:12:45 +0000 | [diff] [blame] | 1726 | EFI_TABLE_HEADER Hdr;
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1727 |
|
AJFISH | 00edb21 | 2007-06-18 20:28:02 +0000 | [diff] [blame] | 1728 | //
|
| 1729 | // Time Services
|
| 1730 | //
|
| 1731 | EFI_GET_TIME GetTime;
|
| 1732 | EFI_SET_TIME SetTime;
|
| 1733 | EFI_GET_WAKEUP_TIME GetWakeupTime;
|
| 1734 | EFI_SET_WAKEUP_TIME SetWakeupTime;
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1735 |
|
AJFISH | 00edb21 | 2007-06-18 20:28:02 +0000 | [diff] [blame] | 1736 | //
|
| 1737 | // Virtual Memory Services
|
| 1738 | //
|
| 1739 | EFI_SET_VIRTUAL_ADDRESS_MAP SetVirtualAddressMap;
|
| 1740 | EFI_CONVERT_POINTER ConvertPointer;
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1741 |
|
AJFISH | 00edb21 | 2007-06-18 20:28:02 +0000 | [diff] [blame] | 1742 | //
|
| 1743 | // Variable Services
|
| 1744 | //
|
| 1745 | EFI_GET_VARIABLE GetVariable;
|
| 1746 | EFI_GET_NEXT_VARIABLE_NAME GetNextVariableName;
|
| 1747 | EFI_SET_VARIABLE SetVariable;
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1748 |
|
AJFISH | 00edb21 | 2007-06-18 20:28:02 +0000 | [diff] [blame] | 1749 | //
|
| 1750 | // Miscellaneous Services
|
| 1751 | //
|
| 1752 | EFI_GET_NEXT_HIGH_MONO_COUNT GetNextHighMonotonicCount;
|
| 1753 | EFI_RESET_SYSTEM ResetSystem;
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1754 |
|
AJFISH | 00edb21 | 2007-06-18 20:28:02 +0000 | [diff] [blame] | 1755 | //
|
| 1756 | // UEFI 2.0 Capsule Services
|
| 1757 | //
|
| 1758 | EFI_UPDATE_CAPSULE UpdateCapsule;
|
| 1759 | EFI_QUERY_CAPSULE_CAPABILITIES QueryCapsuleCapabilities;
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1760 |
|
AJFISH | 00edb21 | 2007-06-18 20:28:02 +0000 | [diff] [blame] | 1761 | //
|
| 1762 | // Miscellaneous UEFI 2.0 Service
|
| 1763 | //
|
| 1764 | EFI_QUERY_VARIABLE_INFO QueryVariableInfo;
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1765 | } EFI_RUNTIME_SERVICES;
|
| 1766 |
|
| 1767 |
|
qhuang8 | 0763673 | 2008-12-16 15:33:49 +0000 | [diff] [blame] | 1768 | #define EFI_BOOT_SERVICES_SIGNATURE SIGNATURE_64 ('B','O','O','T','S','E','R','V')
|
yshang1 | d1f9500 | 2007-06-19 10:12:02 +0000 | [diff] [blame] | 1769 | #define EFI_BOOT_SERVICES_REVISION EFI_2_10_SYSTEM_TABLE_REVISION
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1770 |
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 1771 | ///
|
| 1772 | /// EFI Boot Services Table
|
| 1773 | ///
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1774 | typedef struct {
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 1775 | ///
|
| 1776 | /// The table header for the EFI Boot Services Table.
|
| 1777 | ///
|
AJFISH | c9a0a0f | 2007-10-24 19:12:45 +0000 | [diff] [blame] | 1778 | EFI_TABLE_HEADER Hdr;
|
vanjeff | d0c6472 | 2007-10-16 05:30:18 +0000 | [diff] [blame] | 1779 |
|
AJFISH | 00edb21 | 2007-06-18 20:28:02 +0000 | [diff] [blame] | 1780 | //
|
| 1781 | // Task Priority Services
|
| 1782 | //
|
| 1783 | EFI_RAISE_TPL RaiseTPL;
|
| 1784 | EFI_RESTORE_TPL RestoreTPL;
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1785 |
|
AJFISH | 00edb21 | 2007-06-18 20:28:02 +0000 | [diff] [blame] | 1786 | //
|
| 1787 | // Memory Services
|
| 1788 | //
|
| 1789 | EFI_ALLOCATE_PAGES AllocatePages;
|
| 1790 | EFI_FREE_PAGES FreePages;
|
| 1791 | EFI_GET_MEMORY_MAP GetMemoryMap;
|
| 1792 | EFI_ALLOCATE_POOL AllocatePool;
|
| 1793 | EFI_FREE_POOL FreePool;
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1794 |
|
AJFISH | 00edb21 | 2007-06-18 20:28:02 +0000 | [diff] [blame] | 1795 | //
|
| 1796 | // Event & Timer Services
|
| 1797 | //
|
| 1798 | EFI_CREATE_EVENT CreateEvent;
|
| 1799 | EFI_SET_TIMER SetTimer;
|
| 1800 | EFI_WAIT_FOR_EVENT WaitForEvent;
|
| 1801 | EFI_SIGNAL_EVENT SignalEvent;
|
| 1802 | EFI_CLOSE_EVENT CloseEvent;
|
| 1803 | EFI_CHECK_EVENT CheckEvent;
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1804 |
|
AJFISH | 00edb21 | 2007-06-18 20:28:02 +0000 | [diff] [blame] | 1805 | //
|
| 1806 | // Protocol Handler Services
|
| 1807 | //
|
| 1808 | EFI_INSTALL_PROTOCOL_INTERFACE InstallProtocolInterface;
|
| 1809 | EFI_REINSTALL_PROTOCOL_INTERFACE ReinstallProtocolInterface;
|
| 1810 | EFI_UNINSTALL_PROTOCOL_INTERFACE UninstallProtocolInterface;
|
| 1811 | EFI_HANDLE_PROTOCOL HandleProtocol;
|
| 1812 | VOID *Reserved;
|
| 1813 | EFI_REGISTER_PROTOCOL_NOTIFY RegisterProtocolNotify;
|
| 1814 | EFI_LOCATE_HANDLE LocateHandle;
|
| 1815 | EFI_LOCATE_DEVICE_PATH LocateDevicePath;
|
| 1816 | EFI_INSTALL_CONFIGURATION_TABLE InstallConfigurationTable;
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1817 |
|
AJFISH | 00edb21 | 2007-06-18 20:28:02 +0000 | [diff] [blame] | 1818 | //
|
| 1819 | // Image Services
|
| 1820 | //
|
| 1821 | EFI_IMAGE_LOAD LoadImage;
|
| 1822 | EFI_IMAGE_START StartImage;
|
| 1823 | EFI_EXIT Exit;
|
| 1824 | EFI_IMAGE_UNLOAD UnloadImage;
|
| 1825 | EFI_EXIT_BOOT_SERVICES ExitBootServices;
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1826 |
|
AJFISH | 00edb21 | 2007-06-18 20:28:02 +0000 | [diff] [blame] | 1827 | //
|
| 1828 | // Miscellaneous Services
|
| 1829 | //
|
| 1830 | EFI_GET_NEXT_MONOTONIC_COUNT GetNextMonotonicCount;
|
| 1831 | EFI_STALL Stall;
|
| 1832 | EFI_SET_WATCHDOG_TIMER SetWatchdogTimer;
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1833 |
|
AJFISH | 00edb21 | 2007-06-18 20:28:02 +0000 | [diff] [blame] | 1834 | //
|
| 1835 | // DriverSupport Services
|
| 1836 | //
|
| 1837 | EFI_CONNECT_CONTROLLER ConnectController;
|
| 1838 | EFI_DISCONNECT_CONTROLLER DisconnectController;
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1839 |
|
AJFISH | 00edb21 | 2007-06-18 20:28:02 +0000 | [diff] [blame] | 1840 | //
|
| 1841 | // Open and Close Protocol Services
|
| 1842 | //
|
| 1843 | EFI_OPEN_PROTOCOL OpenProtocol;
|
| 1844 | EFI_CLOSE_PROTOCOL CloseProtocol;
|
| 1845 | EFI_OPEN_PROTOCOL_INFORMATION OpenProtocolInformation;
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1846 |
|
AJFISH | 00edb21 | 2007-06-18 20:28:02 +0000 | [diff] [blame] | 1847 | //
|
| 1848 | // Library Services
|
| 1849 | //
|
| 1850 | EFI_PROTOCOLS_PER_HANDLE ProtocolsPerHandle;
|
| 1851 | EFI_LOCATE_HANDLE_BUFFER LocateHandleBuffer;
|
| 1852 | EFI_LOCATE_PROTOCOL LocateProtocol;
|
| 1853 | EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES InstallMultipleProtocolInterfaces;
|
| 1854 | EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES UninstallMultipleProtocolInterfaces;
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1855 |
|
AJFISH | 00edb21 | 2007-06-18 20:28:02 +0000 | [diff] [blame] | 1856 | //
|
| 1857 | // 32-bit CRC Services
|
| 1858 | //
|
| 1859 | EFI_CALCULATE_CRC32 CalculateCrc32;
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1860 |
|
AJFISH | 00edb21 | 2007-06-18 20:28:02 +0000 | [diff] [blame] | 1861 | //
|
| 1862 | // Miscellaneous Services
|
| 1863 | //
|
| 1864 | EFI_COPY_MEM CopyMem;
|
| 1865 | EFI_SET_MEM SetMem;
|
AJFISH | 00edb21 | 2007-06-18 20:28:02 +0000 | [diff] [blame] | 1866 | EFI_CREATE_EVENT_EX CreateEventEx;
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1867 | } EFI_BOOT_SERVICES;
|
| 1868 |
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 1869 | ///
|
| 1870 | /// Contains a set of GUID/pointer pairs comprised of the ConfigurationTable field in the
|
| 1871 | /// EFI System Table.
|
| 1872 | ///
|
mdkinney | 2a3f6a2 | 2008-12-07 23:08:08 +0000 | [diff] [blame] | 1873 | typedef struct {
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 1874 | ///
|
| 1875 | /// The 128-bit GUID value that uniquely identifies the system configuration table.
|
| 1876 | ///
|
AJFISH | 00edb21 | 2007-06-18 20:28:02 +0000 | [diff] [blame] | 1877 | EFI_GUID VendorGuid;
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 1878 | ///
|
| 1879 | /// A pointer to the table associated with VendorGuid.
|
| 1880 | ///
|
AJFISH | 00edb21 | 2007-06-18 20:28:02 +0000 | [diff] [blame] | 1881 | VOID *VendorTable;
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1882 | } EFI_CONFIGURATION_TABLE;
|
| 1883 |
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 1884 | ///
|
| 1885 | /// EFI System Table
|
| 1886 | ///
|
mdkinney | 2a3f6a2 | 2008-12-07 23:08:08 +0000 | [diff] [blame] | 1887 | typedef struct {
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 1888 | ///
|
| 1889 | /// The table header for the EFI System Table.
|
| 1890 | ///
|
AJFISH | c9a0a0f | 2007-10-24 19:12:45 +0000 | [diff] [blame] | 1891 | EFI_TABLE_HEADER Hdr;
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 1892 | ///
|
| 1893 | /// A pointer to a null terminated Unicode string that identifies
|
| 1894 | /// the vendor that produces the system firmware for the platform.
|
| 1895 | ///
|
AJFISH | 00edb21 | 2007-06-18 20:28:02 +0000 | [diff] [blame] | 1896 | CHAR16 *FirmwareVendor;
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 1897 | ///
|
| 1898 | /// A firmware vendor specific value that identifies the revision
|
| 1899 | /// of the system firmware for the platform.
|
| 1900 | ///
|
AJFISH | 00edb21 | 2007-06-18 20:28:02 +0000 | [diff] [blame] | 1901 | UINT32 FirmwareRevision;
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 1902 | ///
|
| 1903 | /// The handle for the active console input device.
|
| 1904 | ///
|
AJFISH | 00edb21 | 2007-06-18 20:28:02 +0000 | [diff] [blame] | 1905 | EFI_HANDLE ConsoleInHandle;
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 1906 | ///
|
gikidy | 11ca63e | 2009-04-30 09:26:15 +0000 | [diff] [blame] | 1907 | /// A pointer to the EFI_SIMPLE_TEXT_INPUT_PROTOCOL interface that is
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 1908 | /// associated with ConsoleInHandle.
|
| 1909 | ///
|
AJFISH | 00edb21 | 2007-06-18 20:28:02 +0000 | [diff] [blame] | 1910 | EFI_SIMPLE_TEXT_INPUT_PROTOCOL *ConIn;
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 1911 | ///
|
| 1912 | /// The handle for the active console output device.
|
| 1913 | ///
|
AJFISH | 00edb21 | 2007-06-18 20:28:02 +0000 | [diff] [blame] | 1914 | EFI_HANDLE ConsoleOutHandle;
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 1915 | ///
|
gikidy | 11ca63e | 2009-04-30 09:26:15 +0000 | [diff] [blame] | 1916 | /// A pointer to the EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL interface
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 1917 | /// that is associated with ConsoleOutHandle.
|
| 1918 | ///
|
AJFISH | 00edb21 | 2007-06-18 20:28:02 +0000 | [diff] [blame] | 1919 | EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *ConOut;
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 1920 | ///
|
| 1921 | /// The handle for the active standard error console device.
|
| 1922 | ///
|
AJFISH | 00edb21 | 2007-06-18 20:28:02 +0000 | [diff] [blame] | 1923 | EFI_HANDLE StandardErrorHandle;
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 1924 | ///
|
gikidy | 11ca63e | 2009-04-30 09:26:15 +0000 | [diff] [blame] | 1925 | /// A pointer to the EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL interface
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 1926 | /// that is associated with StandardErrorHandle.
|
| 1927 | ///
|
AJFISH | 00edb21 | 2007-06-18 20:28:02 +0000 | [diff] [blame] | 1928 | EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *StdErr;
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 1929 | ///
|
| 1930 | /// A pointer to the EFI Runtime Services Table.
|
| 1931 | ///
|
AJFISH | 00edb21 | 2007-06-18 20:28:02 +0000 | [diff] [blame] | 1932 | EFI_RUNTIME_SERVICES *RuntimeServices;
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 1933 | ///
|
| 1934 | /// A pointer to the EFI Boot Services Table.
|
| 1935 | ///
|
AJFISH | 00edb21 | 2007-06-18 20:28:02 +0000 | [diff] [blame] | 1936 | EFI_BOOT_SERVICES *BootServices;
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 1937 | ///
|
| 1938 | /// The number of system configuration tables in the buffer ConfigurationTable.
|
| 1939 | ///
|
AJFISH | 00edb21 | 2007-06-18 20:28:02 +0000 | [diff] [blame] | 1940 | UINTN NumberOfTableEntries;
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 1941 | ///
|
| 1942 | /// A pointer to the system configuration tables.
|
| 1943 | /// The number of entries in the table is NumberOfTableEntries.
|
| 1944 | ///
|
AJFISH | 00edb21 | 2007-06-18 20:28:02 +0000 | [diff] [blame] | 1945 | EFI_CONFIGURATION_TABLE *ConfigurationTable;
|
mdkinney | 2a3f6a2 | 2008-12-07 23:08:08 +0000 | [diff] [blame] | 1946 | } EFI_SYSTEM_TABLE;
|
| 1947 |
|
| 1948 | /**
|
| 1949 | This is the declaration of an EFI image entry point. This entry point is
|
| 1950 | the same for UEFI Applications, UEFI OS Loaders, and UEFI Drivers including
|
| 1951 | both device drivers and bus drivers.
|
| 1952 |
|
| 1953 | @param ImageHandle The firmware allocated handle for the UEFI image.
|
| 1954 | @param SystemTable A pointer to the EFI System Table.
|
| 1955 |
|
| 1956 | @retval EFI_SUCCESS The operation completed successfully.
|
| 1957 | @retval Others Some unexpected error happened.
|
| 1958 | **/
|
| 1959 | typedef
|
| 1960 | EFI_STATUS
|
| 1961 | (EFIAPI *EFI_IMAGE_ENTRY_POINT)(
|
| 1962 | IN EFI_HANDLE ImageHandle,
|
| 1963 | IN EFI_SYSTEM_TABLE *SystemTable
|
| 1964 | );
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 1965 |
|
| 1966 | //
|
AJFISH | 95cba3e | 2007-07-31 15:52:44 +0000 | [diff] [blame] | 1967 | // EFI Load Options Attributes
|
| 1968 | //
|
| 1969 | #define LOAD_OPTION_ACTIVE 0x00000001
|
| 1970 | #define LOAD_OPTION_FORCE_RECONNECT 0x00000002
|
AJFISH | 95cba3e | 2007-07-31 15:52:44 +0000 | [diff] [blame] | 1971 | #define LOAD_OPTION_HIDDEN 0x00000008
|
| 1972 | #define LOAD_OPTION_CATEGORY 0x00001F00
|
| 1973 |
|
| 1974 | #define LOAD_OPTION_CATEGORY_BOOT 0x00000000
|
| 1975 | #define LOAD_OPTION_CATEGORY_APP 0x00000100
|
| 1976 |
|
| 1977 | #define EFI_BOOT_OPTION_SUPPORT_KEY 0x00000001
|
| 1978 | #define EFI_BOOT_OPTION_SUPPORT_APP 0x00000002
|
| 1979 | #define EFI_BOOT_OPTION_SUPPORT_COUNT 0x00000300
|
| 1980 |
|
mdkinney | 2a3f6a2 | 2008-12-07 23:08:08 +0000 | [diff] [blame] | 1981 | ///
|
| 1982 | /// EFI Boot Key Data
|
| 1983 | ///
|
AJFISH | 95cba3e | 2007-07-31 15:52:44 +0000 | [diff] [blame] | 1984 | typedef union {
|
| 1985 | struct {
|
lgao4 | 1bf7937 | 2008-12-10 08:22:03 +0000 | [diff] [blame] | 1986 | ///
|
| 1987 | /// Indicates the revision of the EFI_KEY_OPTION structure. This revision level should be 0.
|
| 1988 | ///
|
AJFISH | 95cba3e | 2007-07-31 15:52:44 +0000 | [diff] [blame] | 1989 | UINT32 Revision : 8;
|
lgao4 | 1bf7937 | 2008-12-10 08:22:03 +0000 | [diff] [blame] | 1990 | ///
|
| 1991 | /// Either the left or right Shift keys must be pressed (1) or must not be pressed (0).
|
| 1992 | ///
|
AJFISH | 95cba3e | 2007-07-31 15:52:44 +0000 | [diff] [blame] | 1993 | UINT32 ShiftPressed : 1;
|
lgao4 | 1bf7937 | 2008-12-10 08:22:03 +0000 | [diff] [blame] | 1994 | ///
|
| 1995 | /// Either the left or right Control keys must be pressed (1) or must not be pressed (0).
|
| 1996 | ///
|
AJFISH | 95cba3e | 2007-07-31 15:52:44 +0000 | [diff] [blame] | 1997 | UINT32 ControlPressed : 1;
|
lgao4 | 1bf7937 | 2008-12-10 08:22:03 +0000 | [diff] [blame] | 1998 | ///
|
| 1999 | /// Either the left or right Alt keys must be pressed (1) or must not be pressed (0).
|
| 2000 | ///
|
AJFISH | 95cba3e | 2007-07-31 15:52:44 +0000 | [diff] [blame] | 2001 | UINT32 AltPressed : 1;
|
lgao4 | 1bf7937 | 2008-12-10 08:22:03 +0000 | [diff] [blame] | 2002 | ///
|
| 2003 | /// Either the left or right Logo keys must be pressed (1) or must not be pressed (0).
|
| 2004 | ///
|
AJFISH | 95cba3e | 2007-07-31 15:52:44 +0000 | [diff] [blame] | 2005 | UINT32 LogoPressed : 1;
|
lgao4 | 1bf7937 | 2008-12-10 08:22:03 +0000 | [diff] [blame] | 2006 | ///
|
| 2007 | /// The Menu key must be pressed (1) or must not be pressed (0).
|
| 2008 | ///
|
AJFISH | 95cba3e | 2007-07-31 15:52:44 +0000 | [diff] [blame] | 2009 | UINT32 MenuPressed : 1;
|
lgao4 | 1bf7937 | 2008-12-10 08:22:03 +0000 | [diff] [blame] | 2010 | ///
|
| 2011 | /// The SysReq key must be pressed (1) or must not be pressed (0).
|
| 2012 | ///
|
gikidy | 298530b | 2009-04-09 07:54:37 +0000 | [diff] [blame] | 2013 | UINT32 SysReqPressed : 1;
|
AJFISH | 95cba3e | 2007-07-31 15:52:44 +0000 | [diff] [blame] | 2014 | UINT32 Reserved : 16;
|
lgao4 | 1bf7937 | 2008-12-10 08:22:03 +0000 | [diff] [blame] | 2015 | ///
|
| 2016 | /// Specifies the actual number of entries in EFI_KEY_OPTION.Keys, from 0-3. If
|
| 2017 | /// zero, then only the shift state is considered. If more than one, then the boot option will
|
| 2018 | /// only be launched if all of the specified keys are pressed with the same shift state.
|
| 2019 | ///
|
AJFISH | 95cba3e | 2007-07-31 15:52:44 +0000 | [diff] [blame] | 2020 | UINT32 InputKeyCount : 2;
|
xli24 | e0c047a | 2008-10-20 15:31:22 +0000 | [diff] [blame] | 2021 | } Options;
|
AJFISH | 95cba3e | 2007-07-31 15:52:44 +0000 | [diff] [blame] | 2022 | UINT32 PackedValue;
|
mdkinney | 2a3f6a2 | 2008-12-07 23:08:08 +0000 | [diff] [blame] | 2023 | } EFI_BOOT_KEY_DATA;
|
AJFISH | 95cba3e | 2007-07-31 15:52:44 +0000 | [diff] [blame] | 2024 |
|
mdkinney | 2a3f6a2 | 2008-12-07 23:08:08 +0000 | [diff] [blame] | 2025 | ///
|
| 2026 | /// EFI Key Option
|
| 2027 | ///
|
AJFISH | 95cba3e | 2007-07-31 15:52:44 +0000 | [diff] [blame] | 2028 | typedef struct {
|
lgao4 | 1bf7937 | 2008-12-10 08:22:03 +0000 | [diff] [blame] | 2029 | ///
|
| 2030 | /// Specifies options about how the key will be processed.
|
| 2031 | ///
|
| 2032 | EFI_BOOT_KEY_DATA KeyData;
|
| 2033 | ///
|
| 2034 | /// The CRC-32 which should match the CRC-32 of the entire EFI_LOAD_OPTION to
|
| 2035 | /// which BootOption refers. If the CRC-32s do not match this value, then this key
|
| 2036 | /// option is ignored.
|
| 2037 | ///
|
mdkinney | 2a3f6a2 | 2008-12-07 23:08:08 +0000 | [diff] [blame] | 2038 | UINT32 BootOptionCrc;
|
lgao4 | 1bf7937 | 2008-12-10 08:22:03 +0000 | [diff] [blame] | 2039 | ///
|
| 2040 | /// The Boot#### option which will be invoked if this key is pressed and the boot option
|
| 2041 | /// is active (LOAD_OPTION_ACTIVE is set).
|
| 2042 | ///
|
mdkinney | 2a3f6a2 | 2008-12-07 23:08:08 +0000 | [diff] [blame] | 2043 | UINT16 BootOption;
|
lgao4 | 1bf7937 | 2008-12-10 08:22:03 +0000 | [diff] [blame] | 2044 | ///
|
| 2045 | /// The key codes to compare against those returned by the
|
| 2046 | /// EFI_SIMPLE_TEXT_INPUT and EFI_SIMPLE_TEXT_INPUT_EX protocols.
|
| 2047 | /// The number of key codes (0-3) is specified by the EFI_KEY_CODE_COUNT field in KeyOptions.
|
| 2048 | ///
|
| 2049 | //EFI_INPUT_KEY Keys[];
|
AJFISH | 95cba3e | 2007-07-31 15:52:44 +0000 | [diff] [blame] | 2050 | } EFI_KEY_OPTION;
|
| 2051 |
|
| 2052 | //
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 2053 | // EFI File location to boot from on removable media devices
|
| 2054 | //
|
| 2055 | #define EFI_REMOVABLE_MEDIA_FILE_NAME_IA32 L"\\EFI\\BOOT\\BOOTIA32.EFI"
|
| 2056 | #define EFI_REMOVABLE_MEDIA_FILE_NAME_IA64 L"\\EFI\\BOOT\\BOOTIA64.EFI"
|
| 2057 | #define EFI_REMOVABLE_MEDIA_FILE_NAME_X64 L"\\EFI\\BOOT\\BOOTX64.EFI"
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 2058 |
|
| 2059 | #if defined (MDE_CPU_IA32)
|
| 2060 | #define EFI_REMOVABLE_MEDIA_FILE_NAME EFI_REMOVABLE_MEDIA_FILE_NAME_IA32
|
| 2061 | #elif defined (MDE_CPU_IPF)
|
| 2062 | #define EFI_REMOVABLE_MEDIA_FILE_NAME EFI_REMOVABLE_MEDIA_FILE_NAME_IA64
|
| 2063 | #elif defined (MDE_CPU_X64)
|
| 2064 | #define EFI_REMOVABLE_MEDIA_FILE_NAME EFI_REMOVABLE_MEDIA_FILE_NAME_X64
|
| 2065 | #elif defined (MDE_CPU_EBC)
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 2066 | #else
|
| 2067 | #error Unknown Processor Type
|
| 2068 | #endif
|
| 2069 |
|
yshang1 | 959ccb2 | 2007-06-08 11:31:52 +0000 | [diff] [blame] | 2070 | #include <Uefi/UefiPxe.h>
|
| 2071 | #include <Uefi/UefiGpt.h>
|
| 2072 | #include <Uefi/UefiInternalFormRepresentation.h>
|
| 2073 |
|
| 2074 | #endif
|