Add support for some UEFI 2.0 protocols
* DevicePath[To|From]Text * BlockIo2 * DiskIo2 * Ex calls for Simple File System Signed-off-by: Pete Batard <pete@akeo.ie> Signed-off-by: Nigel Croxon <nigel.croxon@hpe.com>
This commit is contained in:
parent
1b10394e06
commit
7993cbcc72
@ -543,5 +543,48 @@ typedef union {
|
|||||||
|
|
||||||
} EFI_DEV_PATH_PTR;
|
} EFI_DEV_PATH_PTR;
|
||||||
|
|
||||||
|
#define EFI_DEVICE_PATH_TO_TEXT_PROTOCOL_GUID \
|
||||||
|
{ 0x8b843e20, 0x8132, 0x4852, {0x90, 0xcc, 0x55, 0x1a, 0x4e, 0x4a, 0x7f, 0x1c} }
|
||||||
|
|
||||||
|
typedef
|
||||||
|
CHAR16*
|
||||||
|
(EFIAPI *EFI_DEVICE_PATH_TO_TEXT_NODE) (
|
||||||
|
IN CONST EFI_DEVICE_PATH_PROTOCOL *DeviceNode,
|
||||||
|
IN BOOLEAN DisplayOnly,
|
||||||
|
IN BOOLEAN AllowShortcuts
|
||||||
|
);
|
||||||
|
|
||||||
|
typedef
|
||||||
|
CHAR16*
|
||||||
|
(EFIAPI *EFI_DEVICE_PATH_TO_TEXT_PATH) (
|
||||||
|
IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath,
|
||||||
|
IN BOOLEAN DisplayOnly,
|
||||||
|
IN BOOLEAN AllowShortcuts
|
||||||
|
);
|
||||||
|
|
||||||
|
typedef struct _EFI_DEVICE_PATH_TO_TEXT_PROTOCOL {
|
||||||
|
EFI_DEVICE_PATH_TO_TEXT_NODE ConvertDeviceNodeToText;
|
||||||
|
EFI_DEVICE_PATH_TO_TEXT_PATH ConvertDevicePathToText;
|
||||||
|
} EFI_DEVICE_PATH_TO_TEXT_PROTOCOL;
|
||||||
|
|
||||||
|
#define EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL_GUID \
|
||||||
|
{ 0x5c99a21, 0xc70f, 0x4ad2, {0x8a, 0x5f, 0x35, 0xdf, 0x33, 0x43, 0xf5, 0x1e} }
|
||||||
|
|
||||||
|
typedef
|
||||||
|
EFI_DEVICE_PATH_PROTOCOL*
|
||||||
|
(EFIAPI *EFI_DEVICE_PATH_FROM_TEXT_NODE) (
|
||||||
|
IN CONST CHAR16 *TextDeviceNode
|
||||||
|
);
|
||||||
|
|
||||||
|
typedef
|
||||||
|
EFI_DEVICE_PATH_PROTOCOL*
|
||||||
|
(EFIAPI *EFI_DEVICE_PATH_FROM_TEXT_PATH) (
|
||||||
|
IN CONST CHAR16 *TextDevicePath
|
||||||
|
);
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
EFI_DEVICE_PATH_FROM_TEXT_NODE ConvertTextToDeviceNode;
|
||||||
|
EFI_DEVICE_PATH_FROM_TEXT_PATH ConvertTextToDevicePath;
|
||||||
|
} EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -37,6 +37,8 @@ extern EFI_BOOT_SERVICES *BS;
|
|||||||
extern EFI_RUNTIME_SERVICES *RT;
|
extern EFI_RUNTIME_SERVICES *RT;
|
||||||
|
|
||||||
extern EFI_GUID DevicePathProtocol;
|
extern EFI_GUID DevicePathProtocol;
|
||||||
|
extern EFI_GUID DevicePathToTextProtocol;
|
||||||
|
extern EFI_GUID DevicePathFromTextProtocol;
|
||||||
extern EFI_GUID LoadedImageProtocol;
|
extern EFI_GUID LoadedImageProtocol;
|
||||||
extern EFI_GUID TextInProtocol;
|
extern EFI_GUID TextInProtocol;
|
||||||
extern EFI_GUID TextOutProtocol;
|
extern EFI_GUID TextOutProtocol;
|
||||||
@ -45,7 +47,9 @@ extern EFI_GUID EdidDiscoveredProtocol;
|
|||||||
extern EFI_GUID EdidActiveProtocol;
|
extern EFI_GUID EdidActiveProtocol;
|
||||||
extern EFI_GUID EdidOverrideProtocol;
|
extern EFI_GUID EdidOverrideProtocol;
|
||||||
extern EFI_GUID BlockIoProtocol;
|
extern EFI_GUID BlockIoProtocol;
|
||||||
|
extern EFI_GUID BlockIo2Protocol;
|
||||||
extern EFI_GUID DiskIoProtocol;
|
extern EFI_GUID DiskIoProtocol;
|
||||||
|
extern EFI_GUID DiskIo2Protocol;
|
||||||
extern EFI_GUID FileSystemProtocol;
|
extern EFI_GUID FileSystemProtocol;
|
||||||
extern EFI_GUID LoadFileProtocol;
|
extern EFI_GUID LoadFileProtocol;
|
||||||
extern EFI_GUID DeviceIoProtocol;
|
extern EFI_GUID DeviceIoProtocol;
|
||||||
@ -67,7 +71,6 @@ extern EFI_GUID PciIoProtocol;
|
|||||||
extern EFI_GUID DriverBindingProtocol;
|
extern EFI_GUID DriverBindingProtocol;
|
||||||
extern EFI_GUID ComponentNameProtocol;
|
extern EFI_GUID ComponentNameProtocol;
|
||||||
extern EFI_GUID ComponentName2Protocol;
|
extern EFI_GUID ComponentName2Protocol;
|
||||||
extern EFI_GUID LoadedImageProtocol;
|
|
||||||
extern EFI_GUID HashProtocol;
|
extern EFI_GUID HashProtocol;
|
||||||
extern EFI_GUID PlatformDriverOverrideProtocol;
|
extern EFI_GUID PlatformDriverOverrideProtocol;
|
||||||
extern EFI_GUID BusSpecificDriverOverrideProtocol;
|
extern EFI_GUID BusSpecificDriverOverrideProtocol;
|
||||||
|
160
inc/efiprot.h
160
inc/efiprot.h
@ -125,6 +125,59 @@ typedef struct _EFI_BLOCK_IO_PROTOCOL {
|
|||||||
typedef struct _EFI_BLOCK_IO_PROTOCOL _EFI_BLOCK_IO;
|
typedef struct _EFI_BLOCK_IO_PROTOCOL _EFI_BLOCK_IO;
|
||||||
typedef EFI_BLOCK_IO_PROTOCOL EFI_BLOCK_IO;
|
typedef EFI_BLOCK_IO_PROTOCOL EFI_BLOCK_IO;
|
||||||
|
|
||||||
|
#define EFI_BLOCK_IO2_PROTOCOL_GUID \
|
||||||
|
{ 0xa77b2472, 0xe282, 0x4e9f, {0xa2, 0x45, 0xc2, 0xc0, 0xe2, 0x7b, 0xbc, 0xc1} }
|
||||||
|
|
||||||
|
INTERFACE_DECL(_EFI_BLOCK_IO2_PROTOCOL);
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
EFI_EVENT Event;
|
||||||
|
EFI_STATUS TransactionStatus;
|
||||||
|
} EFI_BLOCK_IO2_TOKEN;
|
||||||
|
|
||||||
|
typedef
|
||||||
|
EFI_STATUS
|
||||||
|
(EFIAPI *EFI_BLOCK_RESET_EX) (
|
||||||
|
IN struct _EFI_BLOCK_IO2_PROTOCOL *This,
|
||||||
|
IN BOOLEAN ExtendedVerification
|
||||||
|
);
|
||||||
|
|
||||||
|
typedef
|
||||||
|
EFI_STATUS
|
||||||
|
(EFIAPI *EFI_BLOCK_READ_EX) (
|
||||||
|
IN struct _EFI_BLOCK_IO2_PROTOCOL *This,
|
||||||
|
IN UINT32 MediaId,
|
||||||
|
IN EFI_LBA LBA,
|
||||||
|
IN OUT EFI_BLOCK_IO2_TOKEN *Token,
|
||||||
|
IN UINTN BufferSize,
|
||||||
|
OUT VOID *Buffer
|
||||||
|
);
|
||||||
|
|
||||||
|
typedef
|
||||||
|
EFI_STATUS
|
||||||
|
(EFIAPI *EFI_BLOCK_WRITE_EX) (
|
||||||
|
IN struct _EFI_BLOCK_IO2_PROTOCOL *This,
|
||||||
|
IN UINT32 MediaId,
|
||||||
|
IN EFI_LBA LBA,
|
||||||
|
IN OUT EFI_BLOCK_IO2_TOKEN *Token,
|
||||||
|
IN UINTN BufferSize,
|
||||||
|
IN VOID *Buffer
|
||||||
|
);
|
||||||
|
|
||||||
|
typedef
|
||||||
|
EFI_STATUS
|
||||||
|
(EFIAPI *EFI_BLOCK_FLUSH_EX) (
|
||||||
|
IN struct _EFI_BLOCK_IO2_PROTOCOL *This,
|
||||||
|
IN OUT EFI_BLOCK_IO2_TOKEN *Token
|
||||||
|
);
|
||||||
|
|
||||||
|
typedef struct _EFI_BLOCK_IO2_PROTOCOL {
|
||||||
|
EFI_BLOCK_IO_MEDIA *Media;
|
||||||
|
EFI_BLOCK_RESET_EX Reset;
|
||||||
|
EFI_BLOCK_READ_EX ReadBlocksEx;
|
||||||
|
EFI_BLOCK_WRITE_EX WriteBlocksEx;
|
||||||
|
EFI_BLOCK_FLUSH_EX FlushBlocksEx;
|
||||||
|
} EFI_BLOCK_IO2_PROTOCOL;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Disk Block IO protocol
|
// Disk Block IO protocol
|
||||||
@ -170,6 +223,62 @@ typedef struct _EFI_DISK_IO_PROTOCOL {
|
|||||||
typedef struct _EFI_DISK_IO_PROTOCOL _EFI_DISK_IO;
|
typedef struct _EFI_DISK_IO_PROTOCOL _EFI_DISK_IO;
|
||||||
typedef EFI_DISK_IO_PROTOCOL EFI_DISK_IO;
|
typedef EFI_DISK_IO_PROTOCOL EFI_DISK_IO;
|
||||||
|
|
||||||
|
|
||||||
|
#define EFI_DISK_IO2_PROTOCOL_GUID \
|
||||||
|
{ 0x151c8eae, 0x7f2c, 0x472c, {0x9e, 0x54, 0x98, 0x28, 0x19, 0x4f, 0x6a, 0x88} }
|
||||||
|
|
||||||
|
#define EFI_DISK_IO2_PROTOCOL_REVISION 0x00020000
|
||||||
|
|
||||||
|
INTERFACE_DECL(_EFI_DISK_IO2_PROTOCOL);
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
EFI_EVENT Event;
|
||||||
|
EFI_STATUS TransactionStatus;
|
||||||
|
} EFI_DISK_IO2_TOKEN;
|
||||||
|
|
||||||
|
typedef
|
||||||
|
EFI_STATUS
|
||||||
|
(EFIAPI *EFI_DISK_CANCEL_EX) (
|
||||||
|
IN struct _EFI_DISK_IO2_PROTOCOL *This
|
||||||
|
);
|
||||||
|
|
||||||
|
typedef
|
||||||
|
EFI_STATUS
|
||||||
|
(EFIAPI *EFI_DISK_READ_EX) (
|
||||||
|
IN struct _EFI_DISK_IO2_PROTOCOL *This,
|
||||||
|
IN UINT32 MediaId,
|
||||||
|
IN UINT64 Offset,
|
||||||
|
IN OUT EFI_DISK_IO2_TOKEN *Token,
|
||||||
|
IN UINTN BufferSize,
|
||||||
|
OUT VOID *Buffer
|
||||||
|
);
|
||||||
|
|
||||||
|
typedef
|
||||||
|
EFI_STATUS
|
||||||
|
(EFIAPI *EFI_DISK_WRITE_EX) (
|
||||||
|
IN struct _EFI_DISK_IO2_PROTOCOL *This,
|
||||||
|
IN UINT32 MediaId,
|
||||||
|
IN UINT64 Offset,
|
||||||
|
IN OUT EFI_DISK_IO2_TOKEN *Token,
|
||||||
|
IN UINTN BufferSize,
|
||||||
|
IN VOID *Buffer
|
||||||
|
);
|
||||||
|
|
||||||
|
typedef
|
||||||
|
EFI_STATUS
|
||||||
|
(EFIAPI *EFI_DISK_FLUSH_EX) (
|
||||||
|
IN struct _EFI_DISK_IO2_PROTOCOL *This,
|
||||||
|
IN OUT EFI_DISK_IO2_TOKEN *Token
|
||||||
|
);
|
||||||
|
|
||||||
|
typedef struct _EFI_DISK_IO2_PROTOCOL {
|
||||||
|
UINT64 Revision;
|
||||||
|
EFI_DISK_CANCEL_EX Cancel;
|
||||||
|
EFI_DISK_READ_EX ReadDiskEx;
|
||||||
|
EFI_DISK_WRITE_EX WriteDiskEx;
|
||||||
|
EFI_DISK_FLUSH_EX FlushDiskEx;
|
||||||
|
} EFI_DISK_IO2_PROTOCOL;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Simple file system protocol
|
// Simple file system protocol
|
||||||
//
|
//
|
||||||
@ -293,9 +402,50 @@ EFI_STATUS
|
|||||||
IN struct _EFI_FILE_HANDLE *File
|
IN struct _EFI_FILE_HANDLE *File
|
||||||
);
|
);
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
EFI_EVENT Event;
|
||||||
|
EFI_STATUS Status;
|
||||||
|
UINTN BufferSize;
|
||||||
|
VOID *Buffer;
|
||||||
|
} EFI_FILE_IO_TOKEN;
|
||||||
|
|
||||||
|
typedef
|
||||||
|
EFI_STATUS
|
||||||
|
(EFIAPI *EFI_FILE_OPEN_EX)(
|
||||||
|
IN struct _EFI_FILE_HANDLE *File,
|
||||||
|
OUT struct _EFI_FILE_HANDLE **NewHandle,
|
||||||
|
IN CHAR16 *FileName,
|
||||||
|
IN UINT64 OpenMode,
|
||||||
|
IN UINT64 Attributes,
|
||||||
|
IN OUT EFI_FILE_IO_TOKEN *Token
|
||||||
|
);
|
||||||
|
|
||||||
|
typedef
|
||||||
|
EFI_STATUS
|
||||||
|
(EFIAPI *EFI_FILE_READ_EX) (
|
||||||
|
IN struct _EFI_FILE_HANDLE *File,
|
||||||
|
IN OUT EFI_FILE_IO_TOKEN *Token
|
||||||
|
);
|
||||||
|
|
||||||
|
typedef
|
||||||
|
EFI_STATUS
|
||||||
|
(EFIAPI *EFI_FILE_WRITE_EX) (
|
||||||
|
IN struct _EFI_FILE_HANDLE *File,
|
||||||
|
IN OUT EFI_FILE_IO_TOKEN *Token
|
||||||
|
);
|
||||||
|
|
||||||
|
typedef
|
||||||
|
EFI_STATUS
|
||||||
|
(EFIAPI *EFI_FILE_FLUSH_EX) (
|
||||||
|
IN struct _EFI_FILE_HANDLE *File,
|
||||||
|
IN OUT EFI_FILE_IO_TOKEN *Token
|
||||||
|
);
|
||||||
|
|
||||||
|
#define EFI_FILE_PROTOCOL_REVISION 0x00010000
|
||||||
|
#define EFI_FILE_PROTOCOL_REVISION2 0x00020000
|
||||||
|
#define EFI_FILE_PROTOCOL_LATEST_REVISION EFI_FILE_PROTOCOL_REVISION2
|
||||||
|
#define EFI_FILE_HANDLE_REVISION EFI_FILE_PROTOCOL_REVISION
|
||||||
|
|
||||||
#define EFI_FILE_HANDLE_REVISION 0x00010000
|
|
||||||
typedef struct _EFI_FILE_HANDLE {
|
typedef struct _EFI_FILE_HANDLE {
|
||||||
UINT64 Revision;
|
UINT64 Revision;
|
||||||
EFI_FILE_OPEN Open;
|
EFI_FILE_OPEN Open;
|
||||||
@ -308,7 +458,13 @@ typedef struct _EFI_FILE_HANDLE {
|
|||||||
EFI_FILE_GET_INFO GetInfo;
|
EFI_FILE_GET_INFO GetInfo;
|
||||||
EFI_FILE_SET_INFO SetInfo;
|
EFI_FILE_SET_INFO SetInfo;
|
||||||
EFI_FILE_FLUSH Flush;
|
EFI_FILE_FLUSH Flush;
|
||||||
} EFI_FILE, *EFI_FILE_HANDLE;
|
EFI_FILE_OPEN_EX OpenEx;
|
||||||
|
EFI_FILE_READ_EX ReadEx;
|
||||||
|
EFI_FILE_WRITE_EX WriteEx;
|
||||||
|
EFI_FILE_FLUSH_EX FlushEx;
|
||||||
|
} EFI_FILE_PROTOCOL, *EFI_FILE_HANDLE;
|
||||||
|
|
||||||
|
typedef EFI_FILE_PROTOCOL EFI_FILE;
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
|
28
lib/data.c
28
lib/data.c
@ -87,16 +87,20 @@ EFI_GUID NullGuid = { 0,0,0,{0,0,0,0,0,0,0,0} };
|
|||||||
// Protocol IDs
|
// Protocol IDs
|
||||||
//
|
//
|
||||||
|
|
||||||
EFI_GUID DevicePathProtocol = DEVICE_PATH_PROTOCOL;
|
EFI_GUID DevicePathProtocol = EFI_DEVICE_PATH_PROTOCOL_GUID;
|
||||||
EFI_GUID LoadedImageProtocol = LOADED_IMAGE_PROTOCOL;
|
EFI_GUID DevicePathToTextProtocol = EFI_DEVICE_PATH_TO_TEXT_PROTOCOL_GUID;
|
||||||
|
EFI_GUID DevicePathFromTextProtocol = EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL_GUID;
|
||||||
|
EFI_GUID LoadedImageProtocol = EFI_LOADED_IMAGE_PROTOCOL_GUID;
|
||||||
EFI_GUID TextInProtocol = SIMPLE_TEXT_INPUT_PROTOCOL;
|
EFI_GUID TextInProtocol = SIMPLE_TEXT_INPUT_PROTOCOL;
|
||||||
EFI_GUID TextOutProtocol = SIMPLE_TEXT_OUTPUT_PROTOCOL;
|
EFI_GUID TextOutProtocol = SIMPLE_TEXT_OUTPUT_PROTOCOL;
|
||||||
EFI_GUID BlockIoProtocol = BLOCK_IO_PROTOCOL;
|
EFI_GUID BlockIoProtocol = EFI_BLOCK_IO_PROTOCOL_GUID;
|
||||||
EFI_GUID DiskIoProtocol = DISK_IO_PROTOCOL;
|
EFI_GUID BlockIo2Protocol = EFI_BLOCK_IO_PROTOCOL_GUID;
|
||||||
EFI_GUID FileSystemProtocol = SIMPLE_FILE_SYSTEM_PROTOCOL;
|
EFI_GUID DiskIoProtocol = EFI_DISK_IO_PROTOCOL_GUID;
|
||||||
EFI_GUID LoadFileProtocol = LOAD_FILE_PROTOCOL;
|
EFI_GUID DiskIo2Protocol = EFI_DISK_IO2_PROTOCOL_GUID;
|
||||||
EFI_GUID DeviceIoProtocol = DEVICE_IO_PROTOCOL;
|
EFI_GUID FileSystemProtocol = EFI_SIMPLE_FILE_SYSTEM_PROTOCOL_GUID;
|
||||||
EFI_GUID UnicodeCollationProtocol = UNICODE_COLLATION_PROTOCOL;
|
EFI_GUID LoadFileProtocol = EFI_LOAD_FILE_PROTOCOL_GUID;
|
||||||
|
EFI_GUID DeviceIoProtocol = EFI_DEVICE_IO_PROTOCOL_GUID;
|
||||||
|
EFI_GUID UnicodeCollationProtocol = EFI_UNICODE_COLLATION_PROTOCOL_GUID;
|
||||||
EFI_GUID SerialIoProtocol = SERIAL_IO_PROTOCOL;
|
EFI_GUID SerialIoProtocol = SERIAL_IO_PROTOCOL;
|
||||||
EFI_GUID SimpleNetworkProtocol = EFI_SIMPLE_NETWORK_PROTOCOL;
|
EFI_GUID SimpleNetworkProtocol = EFI_SIMPLE_NETWORK_PROTOCOL;
|
||||||
EFI_GUID PxeBaseCodeProtocol = EFI_PXE_BASE_CODE_PROTOCOL;
|
EFI_GUID PxeBaseCodeProtocol = EFI_PXE_BASE_CODE_PROTOCOL;
|
||||||
@ -104,10 +108,10 @@ EFI_GUID PxeCallbackProtocol = EFI_PXE_BASE_CODE_CALLBACK_PROTOCOL;
|
|||||||
EFI_GUID NetworkInterfaceIdentifierProtocol = EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL;
|
EFI_GUID NetworkInterfaceIdentifierProtocol = EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL;
|
||||||
EFI_GUID UiProtocol = EFI_UI_PROTOCOL;
|
EFI_GUID UiProtocol = EFI_UI_PROTOCOL;
|
||||||
EFI_GUID PciIoProtocol = EFI_PCI_IO_PROTOCOL;
|
EFI_GUID PciIoProtocol = EFI_PCI_IO_PROTOCOL;
|
||||||
EFI_GUID DriverBindingProtocol = DRIVER_BINDING_PROTOCOL;
|
EFI_GUID DriverBindingProtocol = EFI_DRIVER_BINDING_PROTOCOL_GUID;
|
||||||
EFI_GUID ComponentNameProtocol = COMPONENT_NAME_PROTOCOL;
|
EFI_GUID ComponentNameProtocol = EFI_COMPONENT_NAME_PROTOCOL_GUID;
|
||||||
EFI_GUID ComponentName2Protocol = COMPONENT_NAME2_PROTOCOL;
|
EFI_GUID ComponentName2Protocol = EFI_COMPONENT_NAME2_PROTOCOL_GUID;
|
||||||
EFI_GUID HashProtocol = HASH_PROTOCOL;
|
EFI_GUID HashProtocol = EFI_HASH_PROTOCOL_GUID;
|
||||||
EFI_GUID PlatformDriverOverrideProtocol = EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL_GUID;
|
EFI_GUID PlatformDriverOverrideProtocol = EFI_PLATFORM_DRIVER_OVERRIDE_PROTOCOL_GUID;
|
||||||
EFI_GUID BusSpecificDriverOverrideProtocol = EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL_GUID;
|
EFI_GUID BusSpecificDriverOverrideProtocol = EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL_GUID;
|
||||||
EFI_GUID DriverFamilyOverrideProtocol = EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL_GUID;
|
EFI_GUID DriverFamilyOverrideProtocol = EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL_GUID;
|
||||||
|
Loading…
Reference in New Issue
Block a user