+++ /dev/null
-/*++\r
- Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>\r
- 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:\r
-\r
- TapeIo.h\r
- \r
-Abstract: \r
- EFI_TAPE_IO_PROTOCOL as defined in the UEFI 2.0.\r
- Provide services to control and access a tape device.\r
-\r
-Revision History\r
-\r
---*/\r
-\r
-#ifndef __EFI_TAPE_IO_PROTOCOL_H__\r
-#define __EFI_TAPE_IO_PROTOCOL_H__\r
-\r
-#define EFI_TAPE_IO_PROTOCOL_GUID \\r
- { \\r
- 0x1e93e633, 0xd65a, 0x459e, {0xab, 0x84, 0x93, 0xd9, 0xec, 0x26, 0x6d, 0x18 } \\r
- }\r
-\r
-typedef struct _EFI_TAPE_IO_PROTOCOL EFI_TAPE_IO_PROTOCOL;\r
-\r
-typedef struct {\r
- UINT64 Signature;\r
- UINT32 Revision;\r
- UINT32 BootDescSize;\r
- UINT32 BootDescCRC;\r
- EFI_GUID TapeGUID;\r
- EFI_GUID TapeType;\r
- EFI_GUID TapeUnique;\r
- UINT32 BLLocation;\r
- UINT32 BLBlocksize;\r
- UINT32 BLFilesize;\r
- CHAR8 OSVersion[40];\r
- CHAR8 AppVersion[40];\r
- CHAR8 CreationDate[10];\r
- CHAR8 CreationTime[10];\r
- CHAR8 SystemName[256]; // UTF-8\r
- CHAR8 TapeTitle[120]; // UTF-8\r
- CHAR8 pad[468]; // pad to 1024\r
-} TAPE_HEADER;\r
-\r
-typedef \r
-EFI_STATUS\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
- Routine Description:\r
- Reads from the tape.\r
-\r
- Arguments:\r
- This - A pointer to the EFI_TAPE_IO_PROTOCOL instance.\r
- BufferSize - Size of the buffer in bytes pointed to by Buffer.\r
- Buffer - Pointer to the buffer for data to be read into.\r
-\r
- Returns:\r
- EFI_SUCCESS - Data was successfully transferred from the media.\r
- EFI_END_OF_FILE - A filemark was encountered which limited the data\r
- transferred by the read operation or the head is positioned\r
- just after a filemark.\r
- EFI_NO_MEDIA - No media is loaded in the device.\r
- EFI_NOT_READY - The transfer failed since the device was not ready (e.g. not\r
- online). The transfer may be retried at a later time.\r
- EFI_UNSUPPORTED - The device does not support this type of transfer.\r
- EFI_TIMEOUT - The transfer failed to complete within the timeout specified.\r
- EFI_MEDIA_CHANGED - The media in the device was changed since the last access.\r
- The transfer was aborted since the current position of the\r
- media may be incorrect.\r
- EFI_INVALID_PARAMETER - A NULL Buffer was specified with a non-zero\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
- EFI_DEVICE_ERROR - A device error occurred while attempting to transfer data\r
- from the media.\r
- \r
---*/\r
-; \r
-\r
-typedef \r
-EFI_STATUS\r
-(EFIAPI *EFI_TAPE_WRITE) (\r
- IN EFI_TAPE_IO_PROTOCOL *This,\r
- IN UINTN *BufferSize,\r
- IN VOID *Buffer\r
- )\r
-/*++\r
-\r
- Routine Description:\r
- Writes to the tape.\r
-\r
- Arguments:\r
- This - A pointer to the EFI_TAPE_IO_PROTOCOL instance.\r
- BufferSize - Size of the buffer in bytes pointed to by Buffer.\r
- Buffer - Pointer to the buffer for data to be written from.\r
- \r
- Returns:\r
- EFI_SUCCESS - Data was successfully transferred to the media.\r
- EFI_END_OF_MEDIA - The logical end of media has been reached. Data may have\r
- been successfully transferred to the media.\r
- EFI_NO_MEDIA - No media is loaded in the device.\r
- EFI_NOT_READY - The transfer failed since the device was not ready (e.g. not\r
- online). The transfer may be retried at a later time.\r
- EFI_UNSUPPORTED - The device does not support this type of transfer.\r
- EFI_TIMEOUT - The transfer failed to complete within the timeout specified.\r
- EFI_MEDIA_CHANGED - The media in the device was changed since the last access.\r
- The transfer was aborted since the current position of the\r
- media may be incorrect.\r
- EFI_WRITE_PROTECTED - The media in the device is write-protected. The transfer\r
- was aborted since a write cannot be completed.\r
- EFI_INVALID_PARAMETER - A NULL Buffer was specified with a non-zero\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
- EFI_DEVICE_ERROR A device error occurred while attempting to transfer data\r
- from the media.\r
- \r
---*/\r
-; \r
- \r
-\r
-typedef \r
-EFI_STATUS\r
-(EFIAPI *EFI_TAPE_REWIND) (\r
- IN EFI_TAPE_IO_PROTOCOL *This\r
- )\r
-/*++\r
-\r
- Routine Description:\r
- Rewinds the tape.\r
-\r
- Arguments:\r
- This - A pointer to the EFI_TAPE_IO_PROTOCOL instance.\r
-\r
- Returns:\r
- EFI_SUCCESS - The media was successfully repositioned.\r
- EFI_NO_MEDIA - No media is loaded in the device.\r
- EFI_NOT_READY - Repositioning the media failed since the device was not\r
- ready (e.g. not online). The transfer may be retried at a later time.\r
- EFI_UNSUPPORTED - The device does not support this type of media repositioning.\r
- EFI_TIMEOUT - Repositioning of the media did not complete within the timeout specified.\r
- EFI_DEVICE_ERROR - A device error occurred while attempting to reposition the media.\r
-\r
---*/\r
-; \r
-\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_TAPE_SPACE) (\r
- IN EFI_TAPE_IO_PROTOCOL *This,\r
- INTN Direction,\r
- UINTN Type\r
- )\r
-/*++\r
-\r
- Routine Description:\r
- Positions the tape.\r
-\r
- Arguments:\r
- This - A pointer to the EFI_TAPE_IO_PROTOCOL instance.\r
- Direction - Direction and number of data blocks or filemarks to space over on media.\r
- Type - Type of mark to space over on media.\r
- \r
- Returns:\r
- EFI_SUCCESS - The media was successfully repositioned.\r
- EFI_END_OF_MEDIA - Beginning or end of media was reached before the\r
- indicated number of data blocks or filemarks were found.\r
- EFI_NO_MEDIA - No media is loaded in the device.\r
- EFI_NOT_READY - The reposition failed since the device was not ready (e.g. not\r
- online). The reposition may be retried at a later time.\r
- EFI_UNSUPPORTED - The device does not support this type of repositioning.\r
- EFI_TIMEOUT - The repositioning failed to complete within the timeout specified.\r
- EFI_MEDIA_CHANGED - The media in the device was changed since the last access.\r
- Repositioning the media was aborted since the current\r
- position of the media may be incorrect.\r
- EFI_DEVICE_ERROR - A device error occurred while attempting to reposition the media.\r
- \r
---*/\r
-; \r
-\r
-typedef \r
-EFI_STATUS\r
-(EFIAPI *EFI_TAPE_WRITEFM) (\r
- IN EFI_TAPE_IO_PROTOCOL *This,\r
- IN UINTN Count\r
- )\r
-/*++\r
-\r
- Routine Description:\r
- Writes filemarks to the media.\r
-\r
- Arguments:\r
- This - A pointer to the EFI_TAPE_IO_PROTOCOL instance.\r
- Count - Number of filemarks to write to the media.\r
-\r
- Returns:\r
- EFI_SUCCESS - Data was successfully transferred from the media.\r
- EFI_NO_MEDIA - No media is loaded in the device.\r
- EFI_NOT_READY - The transfer failed since the device was not ready (e.g. not\r
- online). The transfer may be retried at a later time.\r
- EFI_UNSUPPORTED - The device does not support this type of repositioning.\r
- EFI_TIMEOUT - The transfer failed to complete within the timeout specified.\r
- EFI_MEDIA_CHANGED - The media in the device was changed since the last access.\r
- The transfer was aborted since the current position of the\r
- media may be incorrect.\r
- EFI_DEVICE_ERROR - A device error occurred while attempting to transfer data from the media.\r
-\r
---*/\r
-; \r
-\r
-typedef \r
-EFI_STATUS\r
-(EFIAPI *EFI_TAPE_RESET) (\r
- IN EFI_TAPE_IO_PROTOCOL *This,\r
- IN BOOLEAN ExtendedVerification\r
- )\r
-/*++\r
-\r
- Routine Description:\r
- Resets the tape device.\r
-\r
- Arguments:\r
- This - A pointer to the EFI_TAPE_IO_PROTOCOL instance.\r
- ExtendedVerification - Indicates whether the parent bus should also be reset.\r
-\r
- Returns:\r
- EFI_SUCCESS - The bus and/or device were successfully reset.\r
- EFI_NO_MEDIA - No media is loaded in the device.\r
- EFI_NOT_READY - The reset failed since the device and/or bus was not ready.\r
- The reset may be retried at a later time.\r
- EFI_UNSUPPORTED - The device does not support this type of reset.\r
- EFI_TIMEOUT - The reset did not complete within the timeout allowed.\r
- EFI_DEVICE_ERROR - A device error occurred while attempting to reset the bus and/or device.\r
-\r
---*/\r
-; \r
-\r
-struct _EFI_TAPE_IO_PROTOCOL {\r
- EFI_TAPE_READ TapeRead;\r
- EFI_TAPE_WRITE TapeWrite;\r
- EFI_TAPE_REWIND TapeRewind;\r
- EFI_TAPE_SPACE TapeSpace;\r
- EFI_TAPE_WRITEFM TapeWriteFM;\r
- EFI_TAPE_RESET TapeReset;\r
-};\r
-\r
-extern EFI_GUID gEfiTapeIoProtocolGuid;\r
-\r
-#endif\r