mirror of
				https://git.proxmox.com/git/mirror_edk2
				synced 2025-10-30 23:50:23 +00:00 
			
		
		
		
	 9344f09215
			
		
	
	
		9344f09215
		
	
	
	
	
		
			
			https://bugzilla.tianocore.org/show_bug.cgi?id=1373 Replace BSD 2-Clause License with BSD+Patent License. This change is based on the following emails: https://lists.01.org/pipermail/edk2-devel/2019-February/036260.html https://lists.01.org/pipermail/edk2-devel/2018-October/030385.html RFCs with detailed process for the license change: V3: https://lists.01.org/pipermail/edk2-devel/2019-March/038116.html V2: https://lists.01.org/pipermail/edk2-devel/2019-March/037669.html V1: https://lists.01.org/pipermail/edk2-devel/2019-March/037500.html Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
		
			
				
	
	
		
			232 lines
		
	
	
		
			9.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			232 lines
		
	
	
		
			9.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
|   EFI_TAPE_IO_PROTOCOL as defined in the UEFI 2.0.
 | |
|   Provide services to control and access a tape device.
 | |
| 
 | |
| Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 | |
| SPDX-License-Identifier: BSD-2-Clause-Patent
 | |
| 
 | |
| **/
 | |
| 
 | |
| #ifndef __EFI_TAPE_IO_PROTOCOL_H__
 | |
| #define __EFI_TAPE_IO_PROTOCOL_H__
 | |
| 
 | |
| #define EFI_TAPE_IO_PROTOCOL_GUID \
 | |
|   { \
 | |
|     0x1e93e633, 0xd65a, 0x459e, {0xab, 0x84, 0x93, 0xd9, 0xec, 0x26, 0x6d, 0x18 } \
 | |
|   }
 | |
| 
 | |
| typedef struct _EFI_TAPE_IO_PROTOCOL EFI_TAPE_IO_PROTOCOL;
 | |
| 
 | |
| typedef struct _EFI_TAPE_HEADER {
 | |
|   UINT64     Signature;
 | |
|   UINT32     Revision;
 | |
|   UINT32     BootDescSize;
 | |
|   UINT32     BootDescCRC;
 | |
|   EFI_GUID   TapeGUID;
 | |
|   EFI_GUID   TapeType;
 | |
|   EFI_GUID   TapeUnique;
 | |
|   UINT32     BLLocation;
 | |
|   UINT32     BLBlocksize;
 | |
|   UINT32     BLFilesize;
 | |
|   CHAR8      OSVersion[40];
 | |
|   CHAR8      AppVersion[40];
 | |
|   CHAR8      CreationDate[10];
 | |
|   CHAR8      CreationTime[10];
 | |
|   CHAR8      SystemName[256];  // UTF-8
 | |
|   CHAR8      TapeTitle[120];   // UTF-8
 | |
|   CHAR8      pad[468];         // pad to 1024
 | |
| } EFI_TAPE_HEADER;
 | |
| 
 | |
| /**
 | |
|   Reads from the tape.
 | |
| 
 | |
|   @param  This       A pointer to the EFI_TAPE_IO_PROTOCOL instance.
 | |
|   @param  BufferSize The size of the buffer in bytes pointed to by Buffer.
 | |
|   @param  Buffer     The pointer to the buffer for data to be read into.
 | |
| 
 | |
|   @retval EFI_SUCCESS           Data was successfully transferred from the media.
 | |
|   @retval EFI_END_OF_FILE       A filemark was encountered which limited the data
 | |
|                                 transferred by the read operation or the head is positioned
 | |
|                                 just after a filemark.
 | |
|   @retval EFI_NO_MEDIA          No media is loaded in the device.
 | |
|   @retval EFI_NOT_READY         The transfer failed since the device was not ready (e.g. not
 | |
|                                 online). The transfer may be retried at a later time.
 | |
|   @retval EFI_UNSUPPORTED       The device does not support this type of transfer.
 | |
|   @retval EFI_TIMEOUT           The transfer failed to complete within the timeout specified.
 | |
|   @retval EFI_MEDIA_CHANGED     The media in the device was changed since the last access.
 | |
|                                 The transfer was aborted since the current position of the
 | |
|                                 media may be incorrect.
 | |
|   @retval EFI_INVALID_PARAMETER A NULL Buffer was specified with a non-zero
 | |
|                                 BufferSize, or the device is operating in fixed block
 | |
|                                 size mode and the BufferSize was not a multiple of
 | |
|                                 device's fixed block size
 | |
|   @retval EFI_DEVICE_ERROR      A device error occurred while attempting to transfer data
 | |
|                                 from the media.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_TAPE_READ)(
 | |
|   IN EFI_TAPE_IO_PROTOCOL *This,
 | |
|   IN OUT UINTN            *BufferSize,
 | |
|   OUT VOID                *Buffer
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Writes to the tape.
 | |
| 
 | |
|   @param  This       A pointer to the EFI_TAPE_IO_PROTOCOL instance.
 | |
|   @param  BufferSize Size of the buffer in bytes pointed to by Buffer.
 | |
|   @param  Buffer     The pointer to the buffer for data to be written from.
 | |
| 
 | |
|   @retval EFI_SUCCESS           Data was successfully transferred to the media.
 | |
|   @retval EFI_END_OF_MEDIA      The logical end of media has been reached. Data may have
 | |
|                                 been successfully transferred to the media.
 | |
|   @retval EFI_NO_MEDIA          No media is loaded in the device.
 | |
|   @retval EFI_NOT_READY         The transfer failed since the device was not ready (e.g. not
 | |
|                                 online). The transfer may be retried at a later time.
 | |
|   @retval EFI_UNSUPPORTED       The device does not support this type of transfer.
 | |
|   @retval EFI_TIMEOUT           The transfer failed to complete within the timeout specified.
 | |
|   @retval EFI_MEDIA_CHANGED     The media in the device was changed since the last access.
 | |
|                                 The transfer was aborted since the current position of the
 | |
|                                 media may be incorrect.
 | |
|   @retval EFI_WRITE_PROTECTED   The media in the device is write-protected. The transfer
 | |
|                                 was aborted since a write cannot be completed.
 | |
|   @retval EFI_INVALID_PARAMETER A NULL Buffer was specified with a non-zero
 | |
|                                 BufferSize, or the device is operating in fixed block
 | |
|                                 size mode and the BufferSize was not a multiple of
 | |
|                                 device's fixed block size
 | |
|   @retval EFI_DEVICE_ERROR      A device error occurred while attempting to transfer data
 | |
|                                 from the media.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_TAPE_WRITE)(
 | |
|   IN EFI_TAPE_IO_PROTOCOL *This,
 | |
|   IN UINTN                *BufferSize,
 | |
|   IN VOID                 *Buffer
 | |
|   );
 | |
| 
 | |
| 
 | |
| /**
 | |
|   Rewinds the tape.
 | |
| 
 | |
|   @param  This A pointer to the EFI_TAPE_IO_PROTOCOL instance.
 | |
| 
 | |
|   @retval EFI_SUCCESS      The media was successfully repositioned.
 | |
|   @retval EFI_NO_MEDIA     No media is loaded in the device.
 | |
|   @retval EFI_NOT_READY    Repositioning the media failed since the device was not
 | |
|                            ready (e.g. not online). The transfer may be retried at a later time.
 | |
|   @retval EFI_UNSUPPORTED  The device does not support this type of media repositioning.
 | |
|   @retval EFI_TIMEOUT      Repositioning of the media did not complete within the timeout specified.
 | |
|   @retval EFI_DEVICE_ERROR A device error occurred while attempting to reposition the media.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_TAPE_REWIND)(
 | |
|   IN EFI_TAPE_IO_PROTOCOL *This
 | |
|   );
 | |
| 
 | |
| 
 | |
| /**
 | |
|   Positions the tape.
 | |
| 
 | |
|   @param  This      A pointer to the EFI_TAPE_IO_PROTOCOL instance.
 | |
|   @param  Direction Direction and number of data blocks or filemarks to space over on media.
 | |
|   @param  Type      Type of mark to space over on media.
 | |
|                     The following Type marks are mandatory:
 | |
|                     BLOCK type    : 0
 | |
|                     FILEMARK type : 1
 | |
| 
 | |
|   @retval EFI_SUCCESS       The media was successfully repositioned.
 | |
|   @retval EFI_END_OF_MEDIA  Beginning or end of media was reached before the
 | |
|                             indicated number of data blocks or filemarks were found.
 | |
|   @retval EFI_NO_MEDIA      No media is loaded in the device.
 | |
|   @retval EFI_NOT_READY     The reposition failed since the device was not ready (e.g. not
 | |
|                             online). The reposition may be retried at a later time.
 | |
|   @retval EFI_UNSUPPORTED   The device does not support this type of repositioning.
 | |
|   @retval EFI_TIMEOUT       The repositioning failed to complete within the timeout specified.
 | |
|   @retval EFI_MEDIA_CHANGED The media in the device was changed since the last access.
 | |
|                             Repositioning the media was aborted since the current
 | |
|                             position of the media may be incorrect.
 | |
|   @retval EFI_DEVICE_ERROR  A device error occurred while attempting to reposition the media.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_TAPE_SPACE)(
 | |
|   IN EFI_TAPE_IO_PROTOCOL *This,
 | |
|   IN INTN                 Direction,
 | |
|   IN UINTN                Type
 | |
|   );
 | |
| 
 | |
| 
 | |
| /**
 | |
|   Writes filemarks to the media.
 | |
| 
 | |
|   @param  This  A pointer to the EFI_TAPE_IO_PROTOCOL instance.
 | |
|   @param  Count Number of filemarks to write to the media.
 | |
| 
 | |
|   @retval EFI_SUCCESS       Data was successfully transferred from the media.
 | |
|   @retval EFI_NO_MEDIA      No media is loaded in the device.
 | |
|   @retval EFI_NOT_READY     The transfer failed since the device was not ready (e.g. not
 | |
|                             online). The transfer may be retried at a later time.
 | |
|   @retval EFI_UNSUPPORTED   The device does not support this type of repositioning.
 | |
|   @retval EFI_TIMEOUT       The transfer failed to complete within the timeout specified.
 | |
|   @retval EFI_MEDIA_CHANGED The media in the device was changed since the last access.
 | |
|                             The transfer was aborted since the current position of the
 | |
|                             media may be incorrect.
 | |
|   @retval EFI_DEVICE_ERROR  A device error occurred while attempting to transfer data from the media.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_TAPE_WRITEFM)(
 | |
|   IN EFI_TAPE_IO_PROTOCOL *This,
 | |
|   IN UINTN                Count
 | |
|   );
 | |
| 
 | |
| 
 | |
| /**
 | |
|   Resets the tape device.
 | |
| 
 | |
|   @param  This                 A pointer to the EFI_TAPE_IO_PROTOCOL instance.
 | |
|   @param  ExtendedVerification Indicates whether the parent bus should also be reset.
 | |
| 
 | |
|   @retval  EFI_SUCCESS      The bus and/or device were successfully reset.
 | |
|   @retval  EFI_NO_MEDIA     No media is loaded in the device.
 | |
|   @retval  EFI_NOT_READY    The reset failed since the device and/or bus was not ready.
 | |
|                             The reset may be retried at a later time.
 | |
|   @retval  EFI_UNSUPPORTED  The device does not support this type of reset.
 | |
|   @retval  EFI_TIMEOUT      The reset did not complete within the timeout allowed.
 | |
|   @retval  EFI_DEVICE_ERROR A device error occurred while attempting to reset the bus and/or device.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_TAPE_RESET)(
 | |
|   IN EFI_TAPE_IO_PROTOCOL *This,
 | |
|   IN BOOLEAN              ExtendedVerification
 | |
|   );
 | |
| 
 | |
| ///
 | |
| /// The EFI_TAPE_IO_PROTOCOL provides basic sequential operations for tape devices.
 | |
| /// These include read, write, rewind, space, write filemarks and reset functions.
 | |
| /// Per this specification, a boot application uses the services of this protocol
 | |
| /// to load the bootloader image from tape.
 | |
| ///
 | |
| struct _EFI_TAPE_IO_PROTOCOL {
 | |
|   EFI_TAPE_READ           TapeRead;
 | |
|   EFI_TAPE_WRITE          TapeWrite;
 | |
|   EFI_TAPE_REWIND         TapeRewind;
 | |
|   EFI_TAPE_SPACE          TapeSpace;
 | |
|   EFI_TAPE_WRITEFM        TapeWriteFM;
 | |
|   EFI_TAPE_RESET          TapeReset;
 | |
| };
 | |
| 
 | |
| extern EFI_GUID gEfiTapeIoProtocolGuid;
 | |
| 
 | |
| #endif
 |