TianoCore EDK2 master
|
#include "ScsiDisk.h"
Go to the source code of this file.
Functions | |
VOID * | AllocateAlignedBuffer (IN SCSI_DISK_DEV *ScsiDiskDevice, IN UINTN BufferSize) |
VOID | FreeAlignedBuffer (IN VOID *Buffer, IN UINTN BufferSize) |
UINTN | RemoveTrailingSpaces (IN OUT CHAR8 *String) |
EFI_STATUS EFIAPI | InitializeScsiDisk (IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable) |
EFI_STATUS EFIAPI | ScsiDiskDriverBindingSupported (IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE Controller, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL) |
EFI_STATUS EFIAPI | ScsiDiskDriverBindingStart (IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE Controller, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL) |
EFI_STATUS EFIAPI | ScsiDiskDriverBindingStop (IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE Controller, IN UINTN NumberOfChildren, IN EFI_HANDLE *ChildHandleBuffer OPTIONAL) |
EFI_STATUS EFIAPI | ScsiDiskReset (IN EFI_BLOCK_IO_PROTOCOL *This, IN BOOLEAN ExtendedVerification) |
EFI_STATUS EFIAPI | ScsiDiskReadBlocks (IN EFI_BLOCK_IO_PROTOCOL *This, IN UINT32 MediaId, IN EFI_LBA Lba, IN UINTN BufferSize, OUT VOID *Buffer) |
EFI_STATUS EFIAPI | ScsiDiskWriteBlocks (IN EFI_BLOCK_IO_PROTOCOL *This, IN UINT32 MediaId, IN EFI_LBA Lba, IN UINTN BufferSize, IN VOID *Buffer) |
EFI_STATUS EFIAPI | ScsiDiskFlushBlocks (IN EFI_BLOCK_IO_PROTOCOL *This) |
EFI_STATUS EFIAPI | ScsiDiskResetEx (IN EFI_BLOCK_IO2_PROTOCOL *This, IN BOOLEAN ExtendedVerification) |
EFI_STATUS EFIAPI | ScsiDiskReadBlocksEx (IN 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) |
EFI_STATUS EFIAPI | ScsiDiskWriteBlocksEx (IN 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) |
EFI_STATUS EFIAPI | ScsiDiskFlushBlocksEx (IN EFI_BLOCK_IO2_PROTOCOL *This, IN OUT EFI_BLOCK_IO2_TOKEN *Token) |
VOID EFIAPI | ScsiDiskAsyncUnmapNotify (IN EFI_EVENT Event, IN VOID *Context) |
EFI_STATUS | ScsiDiskUnmap (IN SCSI_DISK_DEV *ScsiDiskDevice, IN UINT64 Lba, IN UINTN Blocks, IN EFI_ERASE_BLOCK_TOKEN *Token OPTIONAL) |
EFI_STATUS EFIAPI | ScsiDiskEraseBlocks (IN EFI_ERASE_BLOCK_PROTOCOL *This, IN UINT32 MediaId, IN EFI_LBA Lba, IN OUT EFI_ERASE_BLOCK_TOKEN *Token, IN UINTN Size) |
EFI_STATUS EFIAPI | ScsiDiskReceiveData (IN EFI_STORAGE_SECURITY_COMMAND_PROTOCOL *This, IN UINT32 MediaId OPTIONAL, IN UINT64 Timeout, IN UINT8 SecurityProtocolId, IN UINT16 SecurityProtocolSpecificData, IN UINTN PayloadBufferSize, OUT VOID *PayloadBuffer, OUT UINTN *PayloadTransferSize) |
EFI_STATUS EFIAPI | ScsiDiskSendData (IN EFI_STORAGE_SECURITY_COMMAND_PROTOCOL *This, IN UINT32 MediaId OPTIONAL, IN UINT64 Timeout, IN UINT8 SecurityProtocolId, IN UINT16 SecurityProtocolSpecificData, IN UINTN PayloadBufferSize, OUT VOID *PayloadBuffer) |
EFI_STATUS | ScsiDiskDetectMedia (IN SCSI_DISK_DEV *ScsiDiskDevice, IN BOOLEAN MustReadCapacity, OUT BOOLEAN *MediaChange) |
EFI_STATUS | ScsiDiskInquiryDevice (IN OUT SCSI_DISK_DEV *ScsiDiskDevice, OUT BOOLEAN *NeedRetry) |
EFI_STATUS | ScsiDiskTestUnitReady (IN SCSI_DISK_DEV *ScsiDiskDevice, OUT BOOLEAN *NeedRetry, OUT EFI_SCSI_SENSE_DATA **SenseDataArray, OUT UINTN *NumberOfSenseKeys) |
EFI_STATUS | DetectMediaParsingSenseKeys (OUT SCSI_DISK_DEV *ScsiDiskDevice, IN EFI_SCSI_SENSE_DATA *SenseData, IN UINTN NumberOfSenseKeys, OUT UINTN *Action) |
EFI_STATUS | ScsiDiskReadCapacity (IN OUT SCSI_DISK_DEV *ScsiDiskDevice, OUT BOOLEAN *NeedRetry, OUT EFI_SCSI_SENSE_DATA **SenseDataArray, OUT UINTN *NumberOfSenseKeys) |
EFI_STATUS | CheckHostAdapterStatus (IN UINT8 HostAdapterStatus) |
EFI_STATUS | CheckTargetStatus (IN UINT8 TargetStatus) |
EFI_STATUS | ScsiDiskRequestSenseKeys (IN OUT SCSI_DISK_DEV *ScsiDiskDevice, OUT BOOLEAN *NeedRetry, OUT EFI_SCSI_SENSE_DATA **SenseDataArray, OUT UINTN *NumberOfSenseKeys, IN BOOLEAN AskResetIfError) |
VOID | GetMediaInfo (IN OUT SCSI_DISK_DEV *ScsiDiskDevice, IN EFI_SCSI_DISK_CAPACITY_DATA *Capacity10, IN EFI_SCSI_DISK_CAPACITY_DATA16 *Capacity16) |
VOID | ParseInquiryData (IN OUT SCSI_DISK_DEV *ScsiDiskDevice) |
EFI_STATUS | ScsiDiskReadSectors (IN SCSI_DISK_DEV *ScsiDiskDevice, OUT VOID *Buffer, IN EFI_LBA Lba, IN UINTN NumberOfBlocks) |
EFI_STATUS | ScsiDiskWriteSectors (IN SCSI_DISK_DEV *ScsiDiskDevice, IN VOID *Buffer, IN EFI_LBA Lba, IN UINTN NumberOfBlocks) |
EFI_STATUS | ScsiDiskAsyncReadSectors (IN SCSI_DISK_DEV *ScsiDiskDevice, OUT VOID *Buffer, IN EFI_LBA Lba, IN UINTN NumberOfBlocks, IN EFI_BLOCK_IO2_TOKEN *Token) |
EFI_STATUS | ScsiDiskAsyncWriteSectors (IN SCSI_DISK_DEV *ScsiDiskDevice, IN VOID *Buffer, IN EFI_LBA Lba, IN UINTN NumberOfBlocks, IN EFI_BLOCK_IO2_TOKEN *Token) |
EFI_STATUS | ScsiDiskRead10 (IN SCSI_DISK_DEV *ScsiDiskDevice, OUT BOOLEAN *NeedRetry, IN UINT64 Timeout, OUT UINT8 *DataBuffer, IN OUT UINT32 *DataLength, IN UINT32 StartLba, IN UINT32 SectorCount) |
EFI_STATUS | ScsiDiskWrite10 (IN SCSI_DISK_DEV *ScsiDiskDevice, OUT BOOLEAN *NeedRetry, IN UINT64 Timeout, IN UINT8 *DataBuffer, IN OUT UINT32 *DataLength, IN UINT32 StartLba, IN UINT32 SectorCount) |
EFI_STATUS | ScsiDiskRead16 (IN SCSI_DISK_DEV *ScsiDiskDevice, OUT BOOLEAN *NeedRetry, IN UINT64 Timeout, OUT UINT8 *DataBuffer, IN OUT UINT32 *DataLength, IN UINT64 StartLba, IN UINT32 SectorCount) |
EFI_STATUS | ScsiDiskWrite16 (IN SCSI_DISK_DEV *ScsiDiskDevice, OUT BOOLEAN *NeedRetry, IN UINT64 Timeout, IN UINT8 *DataBuffer, IN OUT UINT32 *DataLength, IN UINT64 StartLba, IN UINT32 SectorCount) |
VOID EFIAPI | ScsiDiskNotify (IN EFI_EVENT Event, IN VOID *Context) |
EFI_STATUS | ScsiDiskAsyncRead10 (IN SCSI_DISK_DEV *ScsiDiskDevice, IN UINT64 Timeout, IN UINT8 TimesRetry, OUT UINT8 *DataBuffer, IN UINT32 DataLength, IN UINT32 StartLba, IN UINT32 SectorCount, IN OUT SCSI_BLKIO2_REQUEST *BlkIo2Req, IN EFI_BLOCK_IO2_TOKEN *Token) |
EFI_STATUS | ScsiDiskAsyncWrite10 (IN SCSI_DISK_DEV *ScsiDiskDevice, IN UINT64 Timeout, IN UINT8 TimesRetry, IN UINT8 *DataBuffer, IN UINT32 DataLength, IN UINT32 StartLba, IN UINT32 SectorCount, IN OUT SCSI_BLKIO2_REQUEST *BlkIo2Req, IN EFI_BLOCK_IO2_TOKEN *Token) |
EFI_STATUS | ScsiDiskAsyncRead16 (IN SCSI_DISK_DEV *ScsiDiskDevice, IN UINT64 Timeout, IN UINT8 TimesRetry, OUT UINT8 *DataBuffer, IN UINT32 DataLength, IN UINT64 StartLba, IN UINT32 SectorCount, IN OUT SCSI_BLKIO2_REQUEST *BlkIo2Req, IN EFI_BLOCK_IO2_TOKEN *Token) |
EFI_STATUS | ScsiDiskAsyncWrite16 (IN SCSI_DISK_DEV *ScsiDiskDevice, IN UINT64 Timeout, IN UINT8 TimesRetry, IN UINT8 *DataBuffer, IN UINT32 DataLength, IN UINT64 StartLba, IN UINT32 SectorCount, IN OUT SCSI_BLKIO2_REQUEST *BlkIo2Req, IN EFI_BLOCK_IO2_TOKEN *Token) |
BOOLEAN | ScsiDiskIsNoMedia (IN EFI_SCSI_SENSE_DATA *SenseData, IN UINTN SenseCounts) |
BOOLEAN | ScsiDiskIsMediaError (IN EFI_SCSI_SENSE_DATA *SenseData, IN UINTN SenseCounts) |
BOOLEAN | ScsiDiskIsHardwareError (IN EFI_SCSI_SENSE_DATA *SenseData, IN UINTN SenseCounts) |
BOOLEAN | ScsiDiskIsMediaChange (IN EFI_SCSI_SENSE_DATA *SenseData, IN UINTN SenseCounts) |
BOOLEAN | ScsiDiskIsResetBefore (IN EFI_SCSI_SENSE_DATA *SenseData, IN UINTN SenseCounts) |
BOOLEAN | ScsiDiskIsDriveReady (IN EFI_SCSI_SENSE_DATA *SenseData, IN UINTN SenseCounts, OUT BOOLEAN *RetryLater) |
BOOLEAN | ScsiDiskHaveSenseKey (IN EFI_SCSI_SENSE_DATA *SenseData, IN UINTN SenseCounts) |
VOID | ReleaseScsiDiskDeviceResources (IN SCSI_DISK_DEV *ScsiDiskDevice) |
BOOLEAN | DetermineInstallBlockIo (IN EFI_HANDLE ChildHandle) |
VOID *EFIAPI | GetParentProtocol (IN EFI_GUID *ProtocolGuid, IN EFI_HANDLE ChildHandle) |
BOOLEAN | DetermineInstallEraseBlock (IN SCSI_DISK_DEV *ScsiDiskDevice, IN EFI_HANDLE ChildHandle) |
BOOLEAN | DetermineInstallStorageSecurity (IN SCSI_DISK_DEV *ScsiDiskDevice, IN EFI_HANDLE ChildHandle) |
EFI_STATUS EFIAPI | ScsiDiskInfoInquiry (IN EFI_DISK_INFO_PROTOCOL *This, IN OUT VOID *InquiryData, IN OUT UINT32 *InquiryDataSize) |
EFI_STATUS EFIAPI | ScsiDiskInfoIdentify (IN EFI_DISK_INFO_PROTOCOL *This, IN OUT VOID *IdentifyData, IN OUT UINT32 *IdentifyDataSize) |
EFI_STATUS EFIAPI | ScsiDiskInfoSenseData (IN EFI_DISK_INFO_PROTOCOL *This, IN OUT VOID *SenseData, IN OUT UINT32 *SenseDataSize, OUT UINT8 *SenseDataNumber) |
EFI_STATUS EFIAPI | ScsiDiskInfoWhichIde (IN EFI_DISK_INFO_PROTOCOL *This, OUT UINT32 *IdeChannel, OUT UINT32 *IdeDevice) |
EFI_STATUS | AtapiIdentifyDevice (IN OUT SCSI_DISK_DEV *ScsiDiskDevice) |
VOID | InitializeInstallDiskInfo (IN SCSI_DISK_DEV *ScsiDiskDevice, IN EFI_HANDLE ChildHandle) |
Variables | |
EFI_DRIVER_BINDING_PROTOCOL | gScsiDiskDriverBinding |
EFI_DISK_INFO_PROTOCOL | gScsiDiskInfoProtocolTemplate |
SCSI disk driver that layers on every SCSI IO protocol in the system.
Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.
Copyright (c) 1985 - 2022, American Megatrends International LLC.
SPDX-License-Identifier: BSD-2-Clause-Patent
Definition in file ScsiDisk.c.
VOID * AllocateAlignedBuffer | ( | IN SCSI_DISK_DEV * | ScsiDiskDevice, |
IN UINTN | BufferSize | ||
) |
Allocates an aligned buffer for SCSI disk.
This function allocates an aligned buffer for the SCSI disk to perform SCSI IO operations. The alignment requirement is from SCSI IO interface.
ScsiDiskDevice | The SCSI disk involved for the operation. |
BufferSize | The request buffer size. |
Definition at line 42 of file ScsiDisk.c.
EFI_STATUS AtapiIdentifyDevice | ( | IN OUT SCSI_DISK_DEV * | ScsiDiskDevice | ) |
Issues ATA IDENTIFY DEVICE command to identify ATAPI device.
This function tries to fill 512-byte ATAPI_IDENTIFY_DATA for ATAPI device to implement Identify() interface for DiskInfo protocol. The ATA command is sent via SCSI Request Packet.
ScsiDiskDevice | The pointer of SCSI_DISK_DEV |
EFI_SUCCESS | The ATAPI device identify data were retrieved successfully. |
others | Some error occurred during the identification that ATAPI device. |
Definition at line 6311 of file ScsiDisk.c.
EFI_STATUS CheckHostAdapterStatus | ( | IN UINT8 | HostAdapterStatus | ) |
Check the HostAdapter status and re-interpret it in EFI_STATUS.
HostAdapterStatus | Host Adapter status |
EFI_SUCCESS | Host adapter is OK. |
EFI_TIMEOUT | Timeout. |
EFI_NOT_READY | Adapter NOT ready. |
EFI_DEVICE_ERROR | Adapter device error. |
Definition at line 3194 of file ScsiDisk.c.
EFI_STATUS CheckTargetStatus | ( | IN UINT8 | TargetStatus | ) |
Check the target status and re-interpret it in EFI_STATUS.
TargetStatus | Target status |
EFI_NOT_READY | Device is NOT ready. |
EFI_DEVICE_ERROR | |
EFI_SUCCESS |
Definition at line 3234 of file ScsiDisk.c.
EFI_STATUS DetectMediaParsingSenseKeys | ( | OUT SCSI_DISK_DEV * | ScsiDiskDevice, |
IN EFI_SCSI_SENSE_DATA * | SenseData, | ||
IN UINTN | NumberOfSenseKeys, | ||
OUT UINTN * | Action | ||
) |
Parsing Sense Keys which got from request sense command.
ScsiDiskDevice | The pointer of SCSI_DISK_DEV |
SenseData | The pointer of EFI_SCSI_SENSE_DATA |
NumberOfSenseKeys | The number of sense key |
Action | The pointer of action which indicates what is need to do next |
EFI_DEVICE_ERROR | Indicates that error occurs |
EFI_SUCCESS | Successfully to complete the parsing |
Definition at line 2923 of file ScsiDisk.c.
BOOLEAN DetermineInstallBlockIo | ( | IN EFI_HANDLE | ChildHandle | ) |
Determine if Block Io & Block Io2 should be produced.
ChildHandle | Child Handle to retrieve Parent information. |
TRUE | Should produce Block Io & Block Io2. |
FALSE | Should not produce Block Io & Block Io2. |
Definition at line 5850 of file ScsiDisk.c.
BOOLEAN DetermineInstallEraseBlock | ( | IN SCSI_DISK_DEV * | ScsiDiskDevice, |
IN EFI_HANDLE | ChildHandle | ||
) |
Determine if EFI Erase Block Protocol should be produced.
ScsiDiskDevice | The pointer of SCSI_DISK_DEV. |
ChildHandle | Handle of device. |
TRUE | Should produce EFI Erase Block Protocol. |
FALSE | Should not produce EFI Erase Block Protocol. |
Definition at line 5951 of file ScsiDisk.c.
BOOLEAN DetermineInstallStorageSecurity | ( | IN SCSI_DISK_DEV * | ScsiDiskDevice, |
IN EFI_HANDLE | ChildHandle | ||
) |
Determine if EFI Storage Security Command Protocol should be produced.
ScsiDiskDevice | The pointer of SCSI_DISK_DEV. |
ChildHandle | Handle of device. |
TRUE | Should produce EFI Storage Security Command Protocol. |
FALSE | Should not produce EFI Storage Security Command Protocol. |
Definition at line 6096 of file ScsiDisk.c.
Frees an aligned buffer for SCSI disk.
This function frees an aligned buffer for the SCSI disk to perform SCSI IO operations.
Buffer | The aligned buffer to be freed. |
BufferSize | The request buffer size. |
Definition at line 61 of file ScsiDisk.c.
VOID GetMediaInfo | ( | IN OUT SCSI_DISK_DEV * | ScsiDiskDevice, |
IN EFI_SCSI_DISK_CAPACITY_DATA * | Capacity10, | ||
IN EFI_SCSI_DISK_CAPACITY_DATA16 * | Capacity16 | ||
) |
Get information from media read capacity command.
ScsiDiskDevice | The pointer of SCSI_DISK_DEV |
Capacity10 | The pointer of EFI_SCSI_DISK_CAPACITY_DATA |
Capacity16 | The pointer of EFI_SCSI_DISK_CAPACITY_DATA16 |
Definition at line 3373 of file ScsiDisk.c.
VOID *EFIAPI GetParentProtocol | ( | IN EFI_GUID * | ProtocolGuid, |
IN EFI_HANDLE | ChildHandle | ||
) |
Search protocol database and check to see if the protocol specified by ProtocolGuid is present on a ControllerHandle and opened by ChildHandle with an attribute of EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER. If the ControllerHandle is found, then the protocol specified by ProtocolGuid will be opened on it.
ProtocolGuid | ProtocolGuid pointer. |
ChildHandle | Child Handle to retrieve Parent information. |
Definition at line 5896 of file ScsiDisk.c.
VOID InitializeInstallDiskInfo | ( | IN SCSI_DISK_DEV * | ScsiDiskDevice, |
IN EFI_HANDLE | ChildHandle | ||
) |
Initialize the installation of DiskInfo protocol.
This function prepares for the installation of DiskInfo protocol on the child handle. By default, it installs DiskInfo protocol with SCSI interface GUID. If it further detects that the physical device is an ATAPI/AHCI device, it then updates interface GUID to be IDE/AHCI interface GUID.
ScsiDiskDevice | The pointer of SCSI_DISK_DEV. |
ChildHandle | Child handle to install DiskInfo protocol. |
Definition at line 6347 of file ScsiDisk.c.
EFI_STATUS EFIAPI InitializeScsiDisk | ( | IN EFI_HANDLE | ImageHandle, |
IN EFI_SYSTEM_TABLE * | SystemTable | ||
) |
The user Entry Point for module ScsiDisk.
The user code starts with this function.
ImageHandle | The firmware allocated handle for the EFI image. |
SystemTable | A pointer to the EFI System Table. |
EFI_SUCCESS | The entry point is executed successfully. |
other | Some error occurs when executing this entry point. |
Definition at line 112 of file ScsiDisk.c.
VOID ParseInquiryData | ( | IN OUT SCSI_DISK_DEV * | ScsiDiskDevice | ) |
Parse Inquiry data.
ScsiDiskDevice | The pointer of SCSI_DISK_DEV |
Definition at line 3434 of file ScsiDisk.c.
VOID ReleaseScsiDiskDeviceResources | ( | IN SCSI_DISK_DEV * | ScsiDiskDevice | ) |
Release resource about disk device.
ScsiDiskDevice | The pointer of SCSI_DISK_DEV |
Definition at line 5816 of file ScsiDisk.c.
Remove trailing spaces from the string.
String | The ASCII string to remove the trailing spaces. |
the | new length of the string. |
Definition at line 79 of file ScsiDisk.c.
EFI_STATUS ScsiDiskAsyncRead10 | ( | IN SCSI_DISK_DEV * | ScsiDiskDevice, |
IN UINT64 | Timeout, | ||
IN UINT8 | TimesRetry, | ||
OUT UINT8 * | DataBuffer, | ||
IN UINT32 | DataLength, | ||
IN UINT32 | StartLba, | ||
IN UINT32 | SectorCount, | ||
IN OUT SCSI_BLKIO2_REQUEST * | BlkIo2Req, | ||
IN EFI_BLOCK_IO2_TOKEN * | Token | ||
) |
Submit Async Read(10) command.
ScsiDiskDevice | The pointer of ScsiDiskDevice. |
Timeout | The time to complete the command. |
TimesRetry | The number of times the command has been retried. |
DataBuffer | The buffer to fill with the read out data. |
DataLength | The length of buffer. |
StartLba | The start logic block address. |
SectorCount | The number of blocks to read. |
BlkIo2Req | The upstream BlockIo2 request. |
Token | The pointer to the token associated with the non-blocking read request. |
EFI_OUT_OF_RESOURCES | The request could not be completed due to a lack of resources. |
Definition at line 5006 of file ScsiDisk.c.
EFI_STATUS ScsiDiskAsyncRead16 | ( | IN SCSI_DISK_DEV * | ScsiDiskDevice, |
IN UINT64 | Timeout, | ||
IN UINT8 | TimesRetry, | ||
OUT UINT8 * | DataBuffer, | ||
IN UINT32 | DataLength, | ||
IN UINT64 | StartLba, | ||
IN UINT32 | SectorCount, | ||
IN OUT SCSI_BLKIO2_REQUEST * | BlkIo2Req, | ||
IN EFI_BLOCK_IO2_TOKEN * | Token | ||
) |
Submit Async Read(16) command.
ScsiDiskDevice | The pointer of ScsiDiskDevice. |
Timeout | The time to complete the command. |
TimesRetry | The number of times the command has been retried. |
DataBuffer | The buffer to fill with the read out data. |
DataLength | The length of buffer. |
StartLba | The start logic block address. |
SectorCount | The number of blocks to read. |
BlkIo2Req | The upstream BlockIo2 request. |
Token | The pointer to the token associated with the non-blocking read request. |
EFI_OUT_OF_RESOURCES | The request could not be completed due to a lack of resources. |
Definition at line 5242 of file ScsiDisk.c.
EFI_STATUS ScsiDiskAsyncReadSectors | ( | IN SCSI_DISK_DEV * | ScsiDiskDevice, |
OUT VOID * | Buffer, | ||
IN EFI_LBA | Lba, | ||
IN UINTN | NumberOfBlocks, | ||
IN EFI_BLOCK_IO2_TOKEN * | Token | ||
) |
Asynchronously read sector from SCSI Disk.
ScsiDiskDevice | The pointer of SCSI_DISK_DEV. |
Buffer | The buffer to fill in the read out data. |
Lba | Logic block address. |
NumberOfBlocks | The number of blocks to read. |
Token | A pointer to the token associated with the non-blocking read request. |
EFI_INVALID_PARAMETER | Token is NULL or Token->Event is NULL. |
EFI_DEVICE_ERROR | Indicates a device error. |
EFI_SUCCESS | Operation is successful. |
Definition at line 3787 of file ScsiDisk.c.
Internal helper notify function which process the result of an asynchronous SCSI UNMAP Command and signal the event passed from EraseBlocks.
Event | The instance of EFI_EVENT. |
Context | The parameter passed in. |
Definition at line 1468 of file ScsiDisk.c.
EFI_STATUS ScsiDiskAsyncWrite10 | ( | IN SCSI_DISK_DEV * | ScsiDiskDevice, |
IN UINT64 | Timeout, | ||
IN UINT8 | TimesRetry, | ||
IN UINT8 * | DataBuffer, | ||
IN UINT32 | DataLength, | ||
IN UINT32 | StartLba, | ||
IN UINT32 | SectorCount, | ||
IN OUT SCSI_BLKIO2_REQUEST * | BlkIo2Req, | ||
IN EFI_BLOCK_IO2_TOKEN * | Token | ||
) |
Submit Async Write(10) command.
ScsiDiskDevice | The pointer of ScsiDiskDevice. |
Timeout | The time to complete the command. |
TimesRetry | The number of times the command has been retried. |
DataBuffer | The buffer contains the data to write. |
DataLength | The length of buffer. |
StartLba | The start logic block address. |
SectorCount | The number of blocks to write. |
BlkIo2Req | The upstream BlockIo2 request. |
Token | The pointer to the token associated with the non-blocking read request. |
EFI_OUT_OF_RESOURCES | The request could not be completed due to a lack of resources. |
Definition at line 5124 of file ScsiDisk.c.
EFI_STATUS ScsiDiskAsyncWrite16 | ( | IN SCSI_DISK_DEV * | ScsiDiskDevice, |
IN UINT64 | Timeout, | ||
IN UINT8 | TimesRetry, | ||
IN UINT8 * | DataBuffer, | ||
IN UINT32 | DataLength, | ||
IN UINT64 | StartLba, | ||
IN UINT32 | SectorCount, | ||
IN OUT SCSI_BLKIO2_REQUEST * | BlkIo2Req, | ||
IN EFI_BLOCK_IO2_TOKEN * | Token | ||
) |
Submit Async Write(16) command.
ScsiDiskDevice | The pointer of ScsiDiskDevice. |
Timeout | The time to complete the command. |
TimesRetry | The number of times the command has been retried. |
DataBuffer | The buffer contains the data to write. |
DataLength | The length of buffer. |
StartLba | The start logic block address. |
SectorCount | The number of blocks to write. |
BlkIo2Req | The upstream BlockIo2 request. |
Token | The pointer to the token associated with the non-blocking read request. |
EFI_OUT_OF_RESOURCES | The request could not be completed due to a lack of resources. |
Definition at line 5360 of file ScsiDisk.c.
EFI_STATUS ScsiDiskAsyncWriteSectors | ( | IN SCSI_DISK_DEV * | ScsiDiskDevice, |
IN VOID * | Buffer, | ||
IN EFI_LBA | Lba, | ||
IN UINTN | NumberOfBlocks, | ||
IN EFI_BLOCK_IO2_TOKEN * | Token | ||
) |
Asynchronously write sector to SCSI Disk.
ScsiDiskDevice | The pointer of SCSI_DISK_DEV. |
Buffer | The buffer of data to be written into SCSI Disk. |
Lba | Logic block address. |
NumberOfBlocks | The number of blocks to read. |
Token | A pointer to the token associated with the non-blocking read request. |
EFI_INVALID_PARAMETER | Token is NULL or Token->Event is NULL |
EFI_DEVICE_ERROR | Indicates a device error. |
EFI_SUCCESS | Operation is successful. |
Definition at line 4005 of file ScsiDisk.c.
EFI_STATUS ScsiDiskDetectMedia | ( | IN SCSI_DISK_DEV * | ScsiDiskDevice, |
IN BOOLEAN | MustReadCapacity, | ||
OUT BOOLEAN * | MediaChange | ||
) |
Detect Device and read out capacity ,if error occurs, parse the sense key.
ScsiDiskDevice | The pointer of SCSI_DISK_DEV |
MustReadCapacity | The flag about reading device capacity |
MediaChange | The pointer of flag indicates if media has changed |
EFI_DEVICE_ERROR | Indicates that error occurs |
EFI_SUCCESS | Successfully to detect media |
Definition at line 2319 of file ScsiDisk.c.
EFI_STATUS EFIAPI ScsiDiskDriverBindingStart | ( | IN EFI_DRIVER_BINDING_PROTOCOL * | This, |
IN EFI_HANDLE | Controller, | ||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath | OPTIONAL | ||
) |
Start this driver on ControllerHandle.
This service is called by the EFI boot service ConnectController(). In order to make drivers as small as possible, there are a few calling restrictions for this service. ConnectController() must follow these calling restrictions. If any other agent wishes to call Start() it must also follow these calling restrictions.
This | Protocol instance pointer. |
ControllerHandle | Handle of device to bind driver to |
RemainingDevicePath | Optional parameter use to pick a specific child device to start. |
EFI_SUCCESS | This driver is added to ControllerHandle |
EFI_ALREADY_STARTED | This driver is already running on ControllerHandle |
other | This driver does not support this device |
Definition at line 220 of file ScsiDisk.c.
EFI_STATUS EFIAPI ScsiDiskDriverBindingStop | ( | IN EFI_DRIVER_BINDING_PROTOCOL * | This, |
IN EFI_HANDLE | Controller, | ||
IN UINTN | NumberOfChildren, | ||
IN EFI_HANDLE *ChildHandleBuffer | OPTIONAL | ||
) |
Stop this driver on ControllerHandle.
This service is called by the EFI boot service DisconnectController(). In order to make drivers as small as possible, there are a few calling restrictions for this service. DisconnectController() must follow these calling restrictions. If any other agent wishes to call Stop() it must also follow these calling restrictions.
This | Protocol instance pointer. |
ControllerHandle | Handle of device to stop driver on |
NumberOfChildren | Number of Handles in ChildHandleBuffer. If number of children is zero stop the entire bus driver. |
ChildHandleBuffer | List of Child Handles to Stop. |
EFI_SUCCESS | This driver is removed ControllerHandle |
other | This driver was not removed from this device |
Definition at line 458 of file ScsiDisk.c.
EFI_STATUS EFIAPI ScsiDiskDriverBindingSupported | ( | IN EFI_DRIVER_BINDING_PROTOCOL * | This, |
IN EFI_HANDLE | Controller, | ||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath | OPTIONAL | ||
) |
Test to see if this driver supports ControllerHandle.
This service is called by the EFI boot service ConnectController(). In order to make drivers as small as possible, there are a few calling restrictions for this service. ConnectController() must follow these calling restrictions. If any other agent wishes to call Supported() it must also follow these calling restrictions.
This | Protocol instance pointer. |
ControllerHandle | Handle of device to test |
RemainingDevicePath | Optional parameter use to pick a specific child device to start. |
EFI_SUCCESS | This driver supports this device |
EFI_ALREADY_STARTED | This driver is already running on this device |
other | This driver does not support this device |
Definition at line 156 of file ScsiDisk.c.
EFI_STATUS EFIAPI ScsiDiskEraseBlocks | ( | IN EFI_ERASE_BLOCK_PROTOCOL * | This, |
IN UINT32 | MediaId, | ||
IN EFI_LBA | Lba, | ||
IN OUT EFI_ERASE_BLOCK_TOKEN * | Token, | ||
IN UINTN | Size | ||
) |
Erase a specified number of device blocks.
[in] | This | Indicates a pointer to the calling context. |
[in] | MediaId | The media ID that the erase request is for. |
[in] | Lba | The starting logical block address to be erased. The caller is responsible for erasing only legitimate locations. |
[in,out] | Token | A pointer to the token associated with the transaction. |
[in] | Size | The size in bytes to be erased. This must be a multiple of the physical block size of the device. |
EFI_SUCCESS | The erase request was queued if Event is not NULL. The data was erased correctly to the device if the Event is NULL.to the device. |
EFI_WRITE_PROTECTED | The device cannot be erased due to write protection. |
EFI_DEVICE_ERROR | The device reported an error while attempting to perform the erase operation. |
EFI_INVALID_PARAMETER | The erase request contains LBAs that are not valid. |
EFI_NO_MEDIA | There is no media in the device. |
EFI_MEDIA_CHANGED | The MediaId is not for the current media. |
Definition at line 1752 of file ScsiDisk.c.
EFI_STATUS EFIAPI ScsiDiskFlushBlocks | ( | IN EFI_BLOCK_IO_PROTOCOL * | This | ) |
Flush Block to Disk.
EFI_SUCCESS is returned directly.
This | The pointer of EFI_BLOCK_IO_PROTOCOL |
EFI_SUCCESS | All outstanding data was written to the device |
Definition at line 917 of file ScsiDisk.c.
EFI_STATUS EFIAPI ScsiDiskFlushBlocksEx | ( | IN EFI_BLOCK_IO2_PROTOCOL * | This, |
IN OUT EFI_BLOCK_IO2_TOKEN * | Token | ||
) |
Flush the Block Device.
This | Indicates a pointer to the calling context. |
Token | A pointer to the token associated with the transaction. |
EFI_SUCCESS | All outstanding data was written to the device. |
EFI_DEVICE_ERROR | The device reported an error while attempting to write data. |
EFI_WRITE_PROTECTED | The device cannot be written to. |
EFI_NO_MEDIA | There is no media in the device. |
EFI_MEDIA_CHANGED | The MediaId is not for the current media. |
Definition at line 1363 of file ScsiDisk.c.
BOOLEAN ScsiDiskHaveSenseKey | ( | IN EFI_SCSI_SENSE_DATA * | SenseData, |
IN UINTN | SenseCounts | ||
) |
Check sense key to find if it has sense key.
SenseData | - The pointer of EFI_SCSI_SENSE_DATA |
SenseCounts | - The number of sense key |
TRUE | It has sense key. |
FALSE | It has NOT any sense key. |
Definition at line 5776 of file ScsiDisk.c.
EFI_STATUS EFIAPI ScsiDiskInfoIdentify | ( | IN EFI_DISK_INFO_PROTOCOL * | This, |
IN OUT VOID * | IdentifyData, | ||
IN OUT UINT32 * | IdentifyDataSize | ||
) |
Provides identify information for the controller type.
This function is used by the IDE bus driver to get identify data. Data format of Identify data is defined by the Interface GUID.
[in] | This | Pointer to the EFI_DISK_INFO_PROTOCOL instance. |
[in,out] | IdentifyData | Pointer to a buffer for the identify data. |
[in,out] | IdentifyDataSize | Pointer to the value for the identify data size. |
EFI_SUCCESS | The command was accepted without any errors. |
EFI_NOT_FOUND | Device does not support this data class |
EFI_DEVICE_ERROR | Error reading IdentifyData from device |
EFI_BUFFER_TOO_SMALL | IdentifyDataSize not big enough |
Definition at line 6205 of file ScsiDisk.c.
EFI_STATUS EFIAPI ScsiDiskInfoInquiry | ( | IN EFI_DISK_INFO_PROTOCOL * | This, |
IN OUT VOID * | InquiryData, | ||
IN OUT UINT32 * | InquiryDataSize | ||
) |
Provides inquiry information for the controller type.
This function is used by the IDE bus driver to get inquiry data. Data format of Identify data is defined by the Interface GUID.
[in] | This | Pointer to the EFI_DISK_INFO_PROTOCOL instance. |
[in,out] | InquiryData | Pointer to a buffer for the inquiry data. |
[in,out] | InquiryDataSize | Pointer to the value for the inquiry data size. |
EFI_SUCCESS | The command was accepted without any errors. |
EFI_NOT_FOUND | Device does not support this data class |
EFI_DEVICE_ERROR | Error reading InquiryData from device |
EFI_BUFFER_TOO_SMALL | InquiryDataSize not big enough |
Definition at line 6164 of file ScsiDisk.c.
EFI_STATUS EFIAPI ScsiDiskInfoSenseData | ( | IN EFI_DISK_INFO_PROTOCOL * | This, |
IN OUT VOID * | SenseData, | ||
IN OUT UINT32 * | SenseDataSize, | ||
OUT UINT8 * | SenseDataNumber | ||
) |
Provides sense data information for the controller type.
This function is used by the IDE bus driver to get sense data. Data format of Sense data is defined by the Interface GUID.
[in] | This | Pointer to the EFI_DISK_INFO_PROTOCOL instance. |
[in,out] | SenseData | Pointer to the SenseData. |
[in,out] | SenseDataSize | Size of SenseData in bytes. |
[out] | SenseDataNumber | Pointer to the value for the sense data size. |
EFI_SUCCESS | The command was accepted without any errors. |
EFI_NOT_FOUND | Device does not support this data class. |
EFI_DEVICE_ERROR | Error reading SenseData from device. |
EFI_BUFFER_TOO_SMALL | SenseDataSize not big enough. |
Definition at line 6252 of file ScsiDisk.c.
EFI_STATUS EFIAPI ScsiDiskInfoWhichIde | ( | IN EFI_DISK_INFO_PROTOCOL * | This, |
OUT UINT32 * | IdeChannel, | ||
OUT UINT32 * | IdeDevice | ||
) |
This function is used by the IDE bus driver to get controller information.
[in] | This | Pointer to the EFI_DISK_INFO_PROTOCOL instance. |
[out] | IdeChannel | Pointer to the Ide Channel number. Primary or secondary. |
[out] | IdeDevice | Pointer to the Ide Device number. Master or slave. |
EFI_SUCCESS | IdeChannel and IdeDevice are valid. |
EFI_UNSUPPORTED | This is not an IDE device. |
Definition at line 6275 of file ScsiDisk.c.
EFI_STATUS ScsiDiskInquiryDevice | ( | IN OUT SCSI_DISK_DEV * | ScsiDiskDevice, |
OUT BOOLEAN * | NeedRetry | ||
) |
Send out Inquiry command to Device.
ScsiDiskDevice | The pointer of SCSI_DISK_DEV |
NeedRetry | Indicates if needs try again when error happens |
EFI_DEVICE_ERROR | Indicates that error occurs |
EFI_SUCCESS | Successfully to detect media |
Definition at line 2526 of file ScsiDisk.c.
BOOLEAN ScsiDiskIsDriveReady | ( | IN EFI_SCSI_SENSE_DATA * | SenseData, |
IN UINTN | SenseCounts, | ||
OUT BOOLEAN * | RetryLater | ||
) |
Check sense key to find if the drive is ready.
SenseData | The pointer of EFI_SCSI_SENSE_DATA |
SenseCounts | The number of sense key |
RetryLater | The flag means if need a retry |
TRUE | Drive is ready. |
FALSE | Drive is NOT ready. |
Definition at line 5706 of file ScsiDisk.c.
BOOLEAN ScsiDiskIsHardwareError | ( | IN EFI_SCSI_SENSE_DATA * | SenseData, |
IN UINTN | SenseCounts | ||
) |
Check sense key to find if hardware error happens.
SenseData | The pointer of EFI_SCSI_SENSE_DATA |
SenseCounts | The number of sense key |
TRUE | Hardware error exits. |
FALSE | NO error. |
Definition at line 5589 of file ScsiDisk.c.
BOOLEAN ScsiDiskIsMediaChange | ( | IN EFI_SCSI_SENSE_DATA * | SenseData, |
IN UINTN | SenseCounts | ||
) |
Check sense key to find if media has changed.
SenseData | The pointer of EFI_SCSI_SENSE_DATA |
SenseCounts | The number of sense key |
TRUE | Media is changed. |
FALSE | Media is NOT changed. |
Definition at line 5625 of file ScsiDisk.c.
BOOLEAN ScsiDiskIsMediaError | ( | IN EFI_SCSI_SENSE_DATA * | SenseData, |
IN UINTN | SenseCounts | ||
) |
Parse sense key.
SenseData | The pointer of EFI_SCSI_SENSE_DATA |
SenseCounts | The number of sense key |
TRUE | Error |
FALSE | NOT error |
Definition at line 5507 of file ScsiDisk.c.
BOOLEAN ScsiDiskIsNoMedia | ( | IN EFI_SCSI_SENSE_DATA * | SenseData, |
IN UINTN | SenseCounts | ||
) |
Check sense key to find if media presents.
SenseData | The pointer of EFI_SCSI_SENSE_DATA |
SenseCounts | The number of sense key |
TRUE | NOT any media |
FALSE | Media presents |
Definition at line 5467 of file ScsiDisk.c.
BOOLEAN ScsiDiskIsResetBefore | ( | IN EFI_SCSI_SENSE_DATA * | SenseData, |
IN UINTN | SenseCounts | ||
) |
Check sense key to find if reset happens.
SenseData | The pointer of EFI_SCSI_SENSE_DATA |
SenseCounts | The number of sense key |
TRUE | It is reset before. |
FALSE | It is NOT reset before. |
Definition at line 5665 of file ScsiDisk.c.
Internal helper notify function in which determine whether retry of a SCSI Read/Write command is needed and signal the event passed from Block I/O(2) if the SCSI I/O operation completes.
Event | The instance of EFI_EVENT. |
Context | The parameter passed in. |
Definition at line 4713 of file ScsiDisk.c.
EFI_STATUS ScsiDiskRead10 | ( | IN SCSI_DISK_DEV * | ScsiDiskDevice, |
OUT BOOLEAN * | NeedRetry, | ||
IN UINT64 | Timeout, | ||
OUT UINT8 * | DataBuffer, | ||
IN OUT UINT32 * | DataLength, | ||
IN UINT32 | StartLba, | ||
IN UINT32 | SectorCount | ||
) |
Submit Read(10) command.
ScsiDiskDevice | The pointer of ScsiDiskDevice |
NeedRetry | The pointer of flag indicates if needs retry if error happens |
Timeout | The time to complete the command |
DataBuffer | The buffer to fill with the read out data |
DataLength | The length of buffer |
StartLba | The start logic block address |
SectorCount | The number of blocks to read |
Definition at line 4221 of file ScsiDisk.c.
EFI_STATUS ScsiDiskRead16 | ( | IN SCSI_DISK_DEV * | ScsiDiskDevice, |
OUT BOOLEAN * | NeedRetry, | ||
IN UINT64 | Timeout, | ||
OUT UINT8 * | DataBuffer, | ||
IN OUT UINT32 * | DataLength, | ||
IN UINT64 | StartLba, | ||
IN UINT32 | SectorCount | ||
) |
Submit Read(16) command.
ScsiDiskDevice | The pointer of ScsiDiskDevice |
NeedRetry | The pointer of flag indicates if needs retry if error happens |
Timeout | The time to complete the command |
DataBuffer | The buffer to fill with the read out data |
DataLength | The length of buffer |
StartLba | The start logic block address |
SectorCount | The number of blocks to read |
Definition at line 4469 of file ScsiDisk.c.
EFI_STATUS EFIAPI ScsiDiskReadBlocks | ( | IN EFI_BLOCK_IO_PROTOCOL * | This, |
IN UINT32 | MediaId, | ||
IN EFI_LBA | Lba, | ||
IN UINTN | BufferSize, | ||
OUT VOID * | Buffer | ||
) |
The function is to Read Block from SCSI Disk.
This | The pointer of EFI_BLOCK_IO_PROTOCOL. |
MediaId | The Id of Media detected |
Lba | The logic block address |
BufferSize | The size of Buffer |
Buffer | The buffer to fill the read out data |
EFI_SUCCESS | Successfully to read out block. |
EFI_DEVICE_ERROR | Fail to detect media. |
EFI_NO_MEDIA | Media is not present. |
EFI_MEDIA_CHANGED | Media has changed. |
EFI_BAD_BUFFER_SIZE | The Buffer was not a multiple of the block size of the device. |
EFI_INVALID_PARAMETER | Invalid parameter passed in. |
Definition at line 616 of file ScsiDisk.c.
EFI_STATUS EFIAPI ScsiDiskReadBlocksEx | ( | IN 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 | ||
) |
The function is to Read Block from SCSI Disk.
This | The pointer of EFI_BLOCK_IO_PROTOCOL. |
MediaId | The Id of Media detected. |
Lba | The logic block address. |
Token | A pointer to the token associated with the transaction. |
BufferSize | The size of Buffer. |
Buffer | The buffer to fill the read out data. |
EFI_SUCCESS | The read request was queued if Token-> Event is not NULL. The data was read correctly from the device if theToken-> Event is NULL. |
EFI_DEVICE_ERROR | The device reported an error while attempting to perform the read operation. |
EFI_NO_MEDIA | There is no media in the device. |
EFI_MEDIA_CHANGED | The MediaId is not for the current media. |
EFI_BAD_BUFFER_SIZE | The BufferSize parameter is not a multiple of the intrinsic block size of the device. |
EFI_INVALID_PARAMETER | The read request contains LBAs that are not valid, or the buffer is not on proper alignment. |
EFI_OUT_OF_RESOURCES | The request could not be completed due to a lack of resources. |
Definition at line 1009 of file ScsiDisk.c.
EFI_STATUS ScsiDiskReadCapacity | ( | IN OUT SCSI_DISK_DEV * | ScsiDiskDevice, |
OUT BOOLEAN * | NeedRetry, | ||
OUT EFI_SCSI_SENSE_DATA ** | SenseDataArray, | ||
OUT UINTN * | NumberOfSenseKeys | ||
) |
Send read capacity command to device and get the device parameter.
ScsiDiskDevice | The pointer of SCSI_DISK_DEV |
NeedRetry | The pointer of flag indicates if need a retry |
SenseDataArray | The pointer of an array of sense data |
NumberOfSenseKeys | The number of sense key |
EFI_DEVICE_ERROR | Indicates that error occurs |
EFI_SUCCESS | Successfully to read capacity or sense data is received. |
Definition at line 3017 of file ScsiDisk.c.
EFI_STATUS ScsiDiskReadSectors | ( | IN SCSI_DISK_DEV * | ScsiDiskDevice, |
OUT VOID * | Buffer, | ||
IN EFI_LBA | Lba, | ||
IN UINTN | NumberOfBlocks | ||
) |
Read sector from SCSI Disk.
ScsiDiskDevice | The pointer of SCSI_DISK_DEV |
Buffer | The buffer to fill in the read out data |
Lba | Logic block address |
NumberOfBlocks | The number of blocks to read |
EFI_DEVICE_ERROR | Indicates a device error. |
EFI_SUCCESS | Operation is successful. |
Definition at line 3455 of file ScsiDisk.c.
EFI_STATUS EFIAPI ScsiDiskReceiveData | ( | IN EFI_STORAGE_SECURITY_COMMAND_PROTOCOL * | This, |
IN UINT32 MediaId | OPTIONAL, | ||
IN UINT64 | Timeout, | ||
IN UINT8 | SecurityProtocolId, | ||
IN UINT16 | SecurityProtocolSpecificData, | ||
IN UINTN | PayloadBufferSize, | ||
OUT VOID * | PayloadBuffer, | ||
OUT UINTN * | PayloadTransferSize | ||
) |
Send a security protocol command to a device that receives data and/or the result of one or more commands sent by SendData.
The ReceiveData function sends a security protocol command to the given MediaId. The security protocol command sent is defined by SecurityProtocolId and contains the security protocol specific data SecurityProtocolSpecificData. The function returns the data from the security protocol command in PayloadBuffer.
For devices supporting the SCSI command set, the security protocol command is sent using the SECURITY PROTOCOL IN command defined in SPC-4.
If PayloadBufferSize is too small to store the available data from the security protocol command, the function shall copy PayloadBufferSize bytes into the PayloadBuffer and return EFI_WARN_BUFFER_TOO_SMALL.
If PayloadBuffer or PayloadTransferSize is NULL and PayloadBufferSize is non-zero, the function shall return EFI_INVALID_PARAMETER.
If the given MediaId does not support security protocol commands, the function shall return EFI_UNSUPPORTED. If there is no media in the device, the function returns EFI_NO_MEDIA. If the MediaId is not the ID for the current media in the device, the function returns EFI_MEDIA_CHANGED.
If the security protocol fails to complete within the Timeout period, the function shall return EFI_TIMEOUT.
If the security protocol command completes without an error, the function shall return EFI_SUCCESS. If the security protocol command completes with an error, the function shall return EFI_DEVICE_ERROR.
This | Indicates a pointer to the calling context. |
MediaId | ID of the medium to receive data from. If there is no block IO protocol supported by the physical device, the value of MediaId is undefined. |
Timeout | The timeout, in 100ns units, to use for the execution of the security protocol command. A Timeout value of 0 means that this function will wait indefinitely for the security protocol command to execute. If Timeout is greater than zero, then this function will return EFI_TIMEOUT if the time required to execute the receive data command is greater than Timeout. |
SecurityProtocolId | The value of the "Security Protocol" parameter of the security protocol command to be sent. |
SecurityProtocolSpecificData | The value of the "Security Protocol Specific" parameter of the security protocol command to be sent. |
PayloadBufferSize | Size in bytes of the payload data buffer. |
PayloadBuffer | A pointer to a destination buffer to store the security protocol command specific payload data for the security protocol command. The caller is responsible for having either implicit or explicit ownership of the buffer. |
PayloadTransferSize | A pointer to a buffer to store the size in bytes of the data written to the payload data buffer. |
EFI_SUCCESS | The security protocol command completed successfully. |
EFI_WARN_BUFFER_TOO_SMALL | The PayloadBufferSize was too small to store the available data from the device. The PayloadBuffer contains the truncated data. |
EFI_UNSUPPORTED | The given MediaId does not support security protocol commands. |
EFI_DEVICE_ERROR | The security protocol command completed with an error. |
EFI_NO_MEDIA | There is no media in the device. |
EFI_MEDIA_CHANGED | The MediaId is not for the current media. |
EFI_INVALID_PARAMETER | The PayloadBuffer or PayloadTransferSize is NULL and PayloadBufferSize is non-zero. |
EFI_TIMEOUT | A timeout occurred while waiting for the security protocol command to execute. |
Definition at line 1936 of file ScsiDisk.c.
EFI_STATUS ScsiDiskRequestSenseKeys | ( | IN OUT SCSI_DISK_DEV * | ScsiDiskDevice, |
OUT BOOLEAN * | NeedRetry, | ||
OUT EFI_SCSI_SENSE_DATA ** | SenseDataArray, | ||
OUT UINTN * | NumberOfSenseKeys, | ||
IN BOOLEAN | AskResetIfError | ||
) |
Retrieve all sense keys from the device.
When encountering error during the process, if retrieve sense keys before error encountered, it returns the sense keys with return status set to EFI_SUCCESS, and NeedRetry set to FALSE; otherwise, return the proper return status.
ScsiDiskDevice | The pointer of SCSI_DISK_DEV |
NeedRetry | The pointer of flag indicates if need a retry |
SenseDataArray | The pointer of an array of sense data |
NumberOfSenseKeys | The number of sense key |
AskResetIfError | The flag indicates if need reset when error occurs |
EFI_DEVICE_ERROR | Indicates that error occurs |
EFI_SUCCESS | Successfully to request sense key |
Definition at line 3276 of file ScsiDisk.c.
EFI_STATUS EFIAPI ScsiDiskReset | ( | IN EFI_BLOCK_IO_PROTOCOL * | This, |
IN BOOLEAN | ExtendedVerification | ||
) |
Reset SCSI Disk.
This | The pointer of EFI_BLOCK_IO_PROTOCOL |
ExtendedVerification | The flag about if extend verificate |
EFI_SUCCESS | The device was reset. |
EFI_DEVICE_ERROR | The device is not functioning properly and could not be reset. |
Definition at line 557 of file ScsiDisk.c.
EFI_STATUS EFIAPI ScsiDiskResetEx | ( | IN EFI_BLOCK_IO2_PROTOCOL * | This, |
IN BOOLEAN | ExtendedVerification | ||
) |
Reset SCSI Disk.
This | The pointer of EFI_BLOCK_IO2_PROTOCOL. |
ExtendedVerification | The flag about if extend verificate. |
EFI_SUCCESS | The device was reset. |
EFI_DEVICE_ERROR | The device is not functioning properly and could not be reset. |
Definition at line 941 of file ScsiDisk.c.
EFI_STATUS EFIAPI ScsiDiskSendData | ( | IN EFI_STORAGE_SECURITY_COMMAND_PROTOCOL * | This, |
IN UINT32 MediaId | OPTIONAL, | ||
IN UINT64 | Timeout, | ||
IN UINT8 | SecurityProtocolId, | ||
IN UINT16 | SecurityProtocolSpecificData, | ||
IN UINTN | PayloadBufferSize, | ||
OUT VOID * | PayloadBuffer | ||
) |
Send a security protocol command to a device.
The SendData function sends a security protocol command containing the payload PayloadBuffer to the given MediaId. The security protocol command sent is defined by SecurityProtocolId and contains the security protocol specific data SecurityProtocolSpecificData. If the underlying protocol command requires a specific padding for the command payload, the SendData function shall add padding bytes to the command payload to satisfy the padding requirements.
For devices supporting the SCSI command set, the security protocol command is sent using the SECURITY PROTOCOL OUT command defined in SPC-4.
If PayloadBuffer is NULL and PayloadBufferSize is non-zero, the function shall return EFI_INVALID_PARAMETER.
If the given MediaId does not support security protocol commands, the function shall return EFI_UNSUPPORTED. If there is no media in the device, the function returns EFI_NO_MEDIA. If the MediaId is not the ID for the current media in the device, the function returns EFI_MEDIA_CHANGED.
If the security protocol fails to complete within the Timeout period, the function shall return EFI_TIMEOUT.
If the security protocol command completes without an error, the function shall return EFI_SUCCESS. If the security protocol command completes with an error, the function shall return EFI_DEVICE_ERROR.
This | Indicates a pointer to the calling context. |
MediaId | ID of the medium to receive data from. If there is no block IO protocol supported by the physical device, the value of MediaId is undefined. |
Timeout | The timeout, in 100ns units, to use for the execution of the security protocol command. A Timeout value of 0 means that this function will wait indefinitely for the security protocol command to execute. If Timeout is greater than zero, then this function will return EFI_TIMEOUT if the time required to execute the receive data command is greater than Timeout. |
SecurityProtocolId | The value of the "Security Protocol" parameter of the security protocol command to be sent. |
SecurityProtocolSpecificData | The value of the "Security Protocol Specific" parameter of the security protocol command to be sent. |
PayloadBufferSize | Size in bytes of the payload data buffer. |
PayloadBuffer | A pointer to a destination buffer to store the security protocol command specific payload data for the security protocol command. |
EFI_SUCCESS | The security protocol command completed successfully. |
EFI_UNSUPPORTED | The given MediaId does not support security protocol commands. |
EFI_DEVICE_ERROR | The security protocol command completed with an error. |
EFI_NO_MEDIA | There is no media in the device. |
EFI_MEDIA_CHANGED | The MediaId is not for the current media. |
EFI_INVALID_PARAMETER | The PayloadBuffer is NULL and PayloadBufferSize is non-zero. |
EFI_TIMEOUT | A timeout occurred while waiting for the security protocol command to execute. |
Definition at line 2154 of file ScsiDisk.c.
EFI_STATUS ScsiDiskTestUnitReady | ( | IN SCSI_DISK_DEV * | ScsiDiskDevice, |
OUT BOOLEAN * | NeedRetry, | ||
OUT EFI_SCSI_SENSE_DATA ** | SenseDataArray, | ||
OUT UINTN * | NumberOfSenseKeys | ||
) |
To test device.
When Test Unit Ready command succeeds, retrieve Sense Keys via Request Sense; When Test Unit Ready command encounters any error caused by host adapter or target, return error without retrieving Sense Keys.
ScsiDiskDevice | The pointer of SCSI_DISK_DEV |
NeedRetry | The pointer of flag indicates try again |
SenseDataArray | The pointer of an array of sense data |
NumberOfSenseKeys | The pointer of the number of sense data array |
EFI_DEVICE_ERROR | Indicates that error occurs |
EFI_SUCCESS | Successfully to test unit |
Definition at line 2809 of file ScsiDisk.c.
EFI_STATUS ScsiDiskUnmap | ( | IN SCSI_DISK_DEV * | ScsiDiskDevice, |
IN UINT64 | Lba, | ||
IN UINTN | Blocks, | ||
IN EFI_ERASE_BLOCK_TOKEN *Token | OPTIONAL | ||
) |
Require the device server to cause one or more LBAs to be unmapped.
ScsiDiskDevice | The pointer of ScsiDiskDevice. |
Lba | The start block number. |
Blocks | Total block number to be unmapped. |
Token | The pointer to the token associated with the non-blocking erase block request. |
EFI_SUCCESS | Target blocks have been successfully unmapped. |
EFI_DEVICE_ERROR | Fail to unmap the target blocks. |
Definition at line 1532 of file ScsiDisk.c.
EFI_STATUS ScsiDiskWrite10 | ( | IN SCSI_DISK_DEV * | ScsiDiskDevice, |
OUT BOOLEAN * | NeedRetry, | ||
IN UINT64 | Timeout, | ||
IN UINT8 * | DataBuffer, | ||
IN OUT UINT32 * | DataLength, | ||
IN UINT32 | StartLba, | ||
IN UINT32 | SectorCount | ||
) |
Submit Write(10) Command.
ScsiDiskDevice | The pointer of ScsiDiskDevice |
NeedRetry | The pointer of flag indicates if needs retry if error happens |
Timeout | The time to complete the command |
DataBuffer | The buffer to fill with the read out data |
DataLength | The length of buffer |
StartLba | The start logic block address |
SectorCount | The number of blocks to write |
Definition at line 4346 of file ScsiDisk.c.
EFI_STATUS ScsiDiskWrite16 | ( | IN SCSI_DISK_DEV * | ScsiDiskDevice, |
OUT BOOLEAN * | NeedRetry, | ||
IN UINT64 | Timeout, | ||
IN UINT8 * | DataBuffer, | ||
IN OUT UINT32 * | DataLength, | ||
IN UINT64 | StartLba, | ||
IN UINT32 | SectorCount | ||
) |
Submit Write(16) Command.
ScsiDiskDevice | The pointer of ScsiDiskDevice |
NeedRetry | The pointer of flag indicates if needs retry if error happens |
Timeout | The time to complete the command |
DataBuffer | The buffer to fill with the read out data |
DataLength | The length of buffer |
StartLba | The start logic block address |
SectorCount | The number of blocks to write |
Definition at line 4593 of file ScsiDisk.c.
EFI_STATUS EFIAPI ScsiDiskWriteBlocks | ( | IN EFI_BLOCK_IO_PROTOCOL * | This, |
IN UINT32 | MediaId, | ||
IN EFI_LBA | Lba, | ||
IN UINTN | BufferSize, | ||
IN VOID * | Buffer | ||
) |
The function is to Write Block to SCSI Disk.
This | The pointer of EFI_BLOCK_IO_PROTOCOL |
MediaId | The Id of Media detected |
Lba | The logic block address |
BufferSize | The size of Buffer |
Buffer | The buffer to fill the read out data |
EFI_SUCCESS | Successfully to read out block. |
EFI_WRITE_PROTECTED | The device can not be written to. |
EFI_DEVICE_ERROR | Fail to detect media. |
EFI_NO_MEDIA | Media is not present. |
EFI_MEDIA_CHANGED | Media has changed. |
EFI_BAD_BUFFER_SIZE | The Buffer was not a multiple of the block size of the device. |
EFI_INVALID_PARAMETER | Invalid parameter passed in. |
Definition at line 768 of file ScsiDisk.c.
EFI_STATUS EFIAPI ScsiDiskWriteBlocksEx | ( | IN 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 | ||
) |
The function is to Write Block to SCSI Disk.
This | The pointer of EFI_BLOCK_IO_PROTOCOL. |
MediaId | The Id of Media detected. |
Lba | The logic block address. |
Token | A pointer to the token associated with the transaction. |
BufferSize | The size of Buffer. |
Buffer | The buffer to fill the read out data. |
EFI_SUCCESS | The data were written correctly to the device. |
EFI_WRITE_PROTECTED | The device cannot be written to. |
EFI_NO_MEDIA | There is no media in the device. |
EFI_MEDIA_CHANGED | The MediaId is not for the current media. |
EFI_DEVICE_ERROR | The device reported an error while attempting to perform the write operation. |
EFI_BAD_BUFFER_SIZE | The BufferSize parameter is not a multiple of the intrinsic block size of the device. |
EFI_INVALID_PARAMETER | The write request contains LBAs that are not valid, or the buffer is not on proper alignment. |
Definition at line 1188 of file ScsiDisk.c.
EFI_STATUS ScsiDiskWriteSectors | ( | IN SCSI_DISK_DEV * | ScsiDiskDevice, |
IN VOID * | Buffer, | ||
IN EFI_LBA | Lba, | ||
IN UINTN | NumberOfBlocks | ||
) |
Write sector to SCSI Disk.
ScsiDiskDevice | The pointer of SCSI_DISK_DEV |
Buffer | The buffer of data to be written into SCSI Disk |
Lba | Logic block address |
NumberOfBlocks | The number of blocks to read |
EFI_DEVICE_ERROR | Indicates a device error. |
EFI_SUCCESS | Operation is successful. |
Definition at line 3620 of file ScsiDisk.c.
EFI_DRIVER_BINDING_PROTOCOL gScsiDiskDriverBinding |
Definition at line 12 of file ScsiDisk.c.
EFI_DISK_INFO_PROTOCOL gScsiDiskInfoProtocolTemplate |
Definition at line 21 of file ScsiDisk.c.