EFI_TAPE_IO_PROTOCOL as defined in the UEFI 2.0.\r
Provide services to control and access a tape device.\r
\r
- Copyright (c) 2006, Intel Corporation \r
- All rights reserved. This program and the accompanying materials \r
- are licensed and made available under the terms and conditions of the BSD License \r
- which accompanies this distribution. The full text of the license may be found at \r
- http://opensource.org/licenses/bsd-license.php \r
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
-\r
- Module Name: TapeIo.h\r
+Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>\r
+This program and the accompanying materials are licensed and made available under \r
+the terms and conditions of the BSD License that accompanies this distribution. \r
+The full text of the license may be found at\r
+http://opensource.org/licenses/bsd-license.php. \r
+ \r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
\r
**/\r
\r
\r
typedef struct _EFI_TAPE_IO_PROTOCOL EFI_TAPE_IO_PROTOCOL;\r
\r
-typedef struct {\r
+typedef struct _EFI_TAPE_HEADER {\r
UINT64 Signature;\r
UINT32 Revision;\r
UINT32 BootDescSize;\r
CHAR8 SystemName[256]; // UTF-8\r
CHAR8 TapeTitle[120]; // UTF-8\r
CHAR8 pad[468]; // pad to 1024\r
-} TAPE_HEADER;\r
+} EFI_TAPE_HEADER;\r
\r
/**\r
Reads from the tape.\r
\r
@param This A pointer to the EFI_TAPE_IO_PROTOCOL instance.\r
- @param BufferSize Size of the buffer in bytes pointed to by Buffer.\r
- @param Buffer Pointer to the buffer for data to be read into.\r
+ @param BufferSize The size of the buffer in bytes pointed to by Buffer.\r
+ @param Buffer The pointer to the buffer for data to be read into.\r
\r
@retval EFI_SUCCESS Data was successfully transferred from the media.\r
@retval EFI_END_OF_FILE A filemark was encountered which limited the data\r
The transfer was aborted since the current position of the\r
media may be incorrect.\r
@retval EFI_INVALID_PARAMETER A NULL Buffer was specified with a non-zero\r
- BufferSize or the device is operating in fixed block\r
+ BufferSize, or the device is operating in fixed block\r
size mode and the BufferSize was not a multiple of\r
device's fixed block size\r
@retval EFI_DEVICE_ERROR A device error occurred while attempting to transfer data\r
**/\r
typedef \r
EFI_STATUS\r
-(EFIAPI *EFI_TAPE_READ) (\r
+(EFIAPI *EFI_TAPE_READ)(\r
IN EFI_TAPE_IO_PROTOCOL *This,\r
IN OUT UINTN *BufferSize,\r
OUT VOID *Buffer\r
- )\r
-; \r
+ ); \r
\r
/**\r
Writes to the tape.\r
\r
@param This A pointer to the EFI_TAPE_IO_PROTOCOL instance.\r
@param BufferSize Size of the buffer in bytes pointed to by Buffer.\r
- @param Buffer Pointer to the buffer for data to be written from.\r
+ @param Buffer The pointer to the buffer for data to be written from.\r
\r
@retval EFI_SUCCESS Data was successfully transferred to the media.\r
@retval EFI_END_OF_MEDIA The logical end of media has been reached. Data may have\r
@retval EFI_WRITE_PROTECTED The media in the device is write-protected. The transfer\r
was aborted since a write cannot be completed.\r
@retval EFI_INVALID_PARAMETER A NULL Buffer was specified with a non-zero\r
- BufferSize or the device is operating in fixed block\r
+ BufferSize, or the device is operating in fixed block\r
size mode and the BufferSize was not a multiple of\r
device's fixed block size\r
@retval EFI_DEVICE_ERROR A device error occurred while attempting to transfer data\r
**/\r
typedef \r
EFI_STATUS\r
-(EFIAPI *EFI_TAPE_WRITE) (\r
+(EFIAPI *EFI_TAPE_WRITE)(\r
IN EFI_TAPE_IO_PROTOCOL *This,\r
IN UINTN *BufferSize,\r
IN VOID *Buffer\r
- )\r
-; \r
+ ); \r
\r
\r
/**\r
**/\r
typedef \r
EFI_STATUS\r
-(EFIAPI *EFI_TAPE_REWIND) (\r
+(EFIAPI *EFI_TAPE_REWIND)(\r
IN EFI_TAPE_IO_PROTOCOL *This\r
- )\r
-; \r
+ ); \r
\r
\r
/**\r
@param This A pointer to the EFI_TAPE_IO_PROTOCOL instance.\r
@param Direction Direction and number of data blocks or filemarks to space over on media.\r
@param Type Type of mark to space over on media.\r
+ The following Type marks are mandatory:\r
+ BLOCK type : 0 \r
+ FILEMARK type : 1\r
\r
@retval EFI_SUCCESS The media was successfully repositioned.\r
@retval EFI_END_OF_MEDIA Beginning or end of media was reached before the\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_TAPE_SPACE) (\r
+(EFIAPI *EFI_TAPE_SPACE)(\r
IN EFI_TAPE_IO_PROTOCOL *This,\r
- INTN Direction,\r
- UINTN Type\r
- )\r
-; \r
+ IN INTN Direction,\r
+ IN UINTN Type\r
+ ); \r
\r
\r
/**\r
**/\r
typedef \r
EFI_STATUS\r
-(EFIAPI *EFI_TAPE_WRITEFM) (\r
+(EFIAPI *EFI_TAPE_WRITEFM)(\r
IN EFI_TAPE_IO_PROTOCOL *This,\r
IN UINTN Count\r
- )\r
-; \r
+ ); \r
\r
\r
/**\r
**/\r
typedef \r
EFI_STATUS\r
-(EFIAPI *EFI_TAPE_RESET) (\r
+(EFIAPI *EFI_TAPE_RESET)(\r
IN EFI_TAPE_IO_PROTOCOL *This,\r
IN BOOLEAN ExtendedVerification\r
- )\r
-; \r
-\r
+ ); \r
+\r
+///\r
+/// The EFI_TAPE_IO_PROTOCOL provides basic sequential operations for tape devices. \r
+/// These include read, write, rewind, space, write filemarks and reset functions. \r
+/// Per this specification, a boot application uses the services of this protocol \r
+/// to load the bootloader image from tape.\r
+///\r
struct _EFI_TAPE_IO_PROTOCOL {\r
EFI_TAPE_READ TapeRead;\r
EFI_TAPE_WRITE TapeWrite;\r