MdePkg[all]  1.08
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
ScsiIo.h File Reference

Data Structures

struct  EFI_SCSI_IO_SCSI_REQUEST_PACKET
 
struct  _EFI_SCSI_IO_PROTOCOL
 

Macros

#define EFI_SCSI_IO_PROTOCOL_GUID
 
#define EFI_SCSI_IO_TYPE_DISK   0x00
 Disk device. More...
 
#define EFI_SCSI_IO_TYPE_TAPE   0x01
 Tape device. More...
 
#define EFI_SCSI_IO_TYPE_PRINTER   0x02
 Printer. More...
 
#define EFI_SCSI_IO_TYPE_PROCESSOR   0x03
 Processor. More...
 
#define EFI_SCSI_IO_TYPE_WORM   0x04
 Write-once read-multiple. More...
 
#define EFI_SCSI_IO_TYPE_CDROM   0x05
 CD or DVD device. More...
 
#define EFI_SCSI_IO_TYPE_SCANNER   0x06
 Scanner device. More...
 
#define EFI_SCSI_IO_TYPE_OPTICAL   0x07
 Optical memory device. More...
 
#define EFI_SCSI_IO_TYPE_MEDIUMCHANGER   0x08
 Medium Changer device. More...
 
#define EFI_SCSI_IO_TYPE_COMMUNICATION   0x09
 Communications device. More...
 
#define MFI_SCSI_IO_TYPE_A   0x0A
 Obsolete. More...
 
#define MFI_SCSI_IO_TYPE_B   0x0B
 Obsolete. More...
 
#define MFI_SCSI_IO_TYPE_RAID   0x0C
 Storage array controller device (e.g., RAID) More...
 
#define MFI_SCSI_IO_TYPE_SES   0x0D
 Enclosure services device. More...
 
#define MFI_SCSI_IO_TYPE_RBC   0x0E
 Simplified direct-access device (e.g., magnetic disk) More...
 
#define MFI_SCSI_IO_TYPE_OCRW   0x0F
 Optical card reader/writer device. More...
 
#define MFI_SCSI_IO_TYPE_BRIDGE   0x10
 Bridge Controller Commands. More...
 
#define MFI_SCSI_IO_TYPE_OSD   0x11
 Object-based Storage Device. More...
 
#define EFI_SCSI_IO_TYPE_RESERVED_LOW   0x12
 Reserved (low) More...
 
#define EFI_SCSI_IO_TYPE_RESERVED_HIGH   0x1E
 Reserved (high) More...
 
#define EFI_SCSI_IO_TYPE_UNKNOWN   0x1F
 Unknown no device type. More...
 
#define EFI_SCSI_IO_DATA_DIRECTION_READ   0
 
#define EFI_SCSI_IO_DATA_DIRECTION_WRITE   1
 
#define EFI_SCSI_IO_DATA_DIRECTION_BIDIRECTIONAL   2
 
#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_OK   0x00
 
#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_TIMEOUT_COMMAND   0x09
 timeout when processing the command More...
 
#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_TIMEOUT   0x0b
 timeout when waiting for the command processing More...
 
#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_MESSAGE_REJECT   0x0d
 a message reject was received when processing command More...
 
#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_BUS_RESET   0x0e
 a bus reset was detected More...
 
#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_PARITY_ERROR   0x0f
 
#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_REQUEST_SENSE_FAILED   0x10
 the adapter failed in issuing request sense command More...
 
#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_SELECTION_TIMEOUT   0x11
 selection timeout More...
 
#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_DATA_OVERRUN_UNDERRUN   0x12
 data overrun or data underrun More...
 
#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_BUS_FREE   0x13
 Unexepected bus free. More...
 
#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_PHASE_ERROR   0x14
 Target bus phase sequence failure. More...
 
#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_OTHER   0x7f
 
#define EFI_SCSI_IO_STATUS_TARGET_GOOD   0x00
 
#define EFI_SCSI_IO_STATUS_TARGET_CHECK_CONDITION   0x02
 check condition More...
 
#define EFI_SCSI_IO_STATUS_TARGET_CONDITION_MET   0x04
 condition met More...
 
#define EFI_SCSI_IO_STATUS_TARGET_BUSY   0x08
 busy More...
 
#define EFI_SCSI_IO_STATUS_TARGET_INTERMEDIATE   0x10
 intermediate More...
 
#define EFI_SCSI_IO_STATUS_TARGET_INTERMEDIATE_CONDITION_MET   0x14
 intermediate-condition met More...
 
#define EFI_SCSI_IO_STATUS_TARGET_RESERVATION_CONFLICT   0x18
 reservation conflict More...
 
#define EFI_SCSI_IO_STATUS_TARGET_COMMOND_TERMINATED   0x22
 command terminated More...
 
#define EFI_SCSI_IO_STATUS_TARGET_QUEUE_FULL   0x28
 queue full More...
 

Typedefs

typedef struct
_EFI_SCSI_IO_PROTOCOL 
EFI_SCSI_IO_PROTOCOL
 
typedef EFI_STATUS(EFIAPIEFI_SCSI_IO_PROTOCOL_GET_DEVICE_TYPE )(IN EFI_SCSI_IO_PROTOCOL *This, OUT UINT8 *DeviceType)
 
typedef EFI_STATUS(EFIAPIEFI_SCSI_IO_PROTOCOL_GET_DEVICE_LOCATION )(IN EFI_SCSI_IO_PROTOCOL *This, IN OUT UINT8 **Target, OUT UINT64 *Lun)
 
typedef EFI_STATUS(EFIAPIEFI_SCSI_IO_PROTOCOL_RESET_BUS )(IN EFI_SCSI_IO_PROTOCOL *This)
 
typedef EFI_STATUS(EFIAPIEFI_SCSI_IO_PROTOCOL_RESET_DEVICE )(IN EFI_SCSI_IO_PROTOCOL *This)
 
typedef EFI_STATUS(EFIAPIEFI_SCSI_IO_PROTOCOL_EXEC_SCSI_COMMAND )(IN EFI_SCSI_IO_PROTOCOL *This, IN OUT EFI_SCSI_IO_SCSI_REQUEST_PACKET *Packet, IN EFI_EVENT Event)
 

Variables

EFI_GUID gEfiScsiIoProtocolGuid
 

Detailed Description

EFI_SCSI_IO_PROTOCOL as defined in UEFI 2.0. This protocol is used by code, typically drivers, running in the EFI boot services environment to access SCSI devices. In particular, functions for managing devices on SCSI buses are defined here.

Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent

Macro Definition Documentation

#define EFI_SCSI_IO_DATA_DIRECTION_BIDIRECTIONAL   2
#define EFI_SCSI_IO_DATA_DIRECTION_READ   0
#define EFI_SCSI_IO_DATA_DIRECTION_WRITE   1
#define EFI_SCSI_IO_PROTOCOL_GUID
Value:
{ \
0x932f47e6, 0x2362, 0x4002, {0x80, 0x3e, 0x3c, 0xd5, 0x4b, 0x13, 0x8f, 0x85 } \
}
#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_BUS_FREE   0x13

Unexepected bus free.

#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_BUS_RESET   0x0e

a bus reset was detected

#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_DATA_OVERRUN_UNDERRUN   0x12

data overrun or data underrun

#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_MESSAGE_REJECT   0x0d

a message reject was received when processing command

#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_OK   0x00
#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_OTHER   0x7f
#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_PARITY_ERROR   0x0f
#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_PHASE_ERROR   0x14

Target bus phase sequence failure.

#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_REQUEST_SENSE_FAILED   0x10

the adapter failed in issuing request sense command

#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_SELECTION_TIMEOUT   0x11

selection timeout

#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_TIMEOUT   0x0b

timeout when waiting for the command processing

#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_TIMEOUT_COMMAND   0x09

timeout when processing the command

#define EFI_SCSI_IO_STATUS_TARGET_BUSY   0x08

busy

#define EFI_SCSI_IO_STATUS_TARGET_CHECK_CONDITION   0x02

check condition

#define EFI_SCSI_IO_STATUS_TARGET_COMMOND_TERMINATED   0x22

command terminated

#define EFI_SCSI_IO_STATUS_TARGET_CONDITION_MET   0x04

condition met

#define EFI_SCSI_IO_STATUS_TARGET_GOOD   0x00
#define EFI_SCSI_IO_STATUS_TARGET_INTERMEDIATE   0x10

intermediate

#define EFI_SCSI_IO_STATUS_TARGET_INTERMEDIATE_CONDITION_MET   0x14

intermediate-condition met

#define EFI_SCSI_IO_STATUS_TARGET_QUEUE_FULL   0x28

queue full

#define EFI_SCSI_IO_STATUS_TARGET_RESERVATION_CONFLICT   0x18

reservation conflict

#define EFI_SCSI_IO_TYPE_CDROM   0x05

CD or DVD device.

#define EFI_SCSI_IO_TYPE_COMMUNICATION   0x09

Communications device.

#define EFI_SCSI_IO_TYPE_DISK   0x00

Disk device.

#define EFI_SCSI_IO_TYPE_MEDIUMCHANGER   0x08

Medium Changer device.

#define EFI_SCSI_IO_TYPE_OPTICAL   0x07

Optical memory device.

#define EFI_SCSI_IO_TYPE_PRINTER   0x02

Printer.

#define EFI_SCSI_IO_TYPE_PROCESSOR   0x03

Processor.

#define EFI_SCSI_IO_TYPE_RESERVED_HIGH   0x1E

Reserved (high)

#define EFI_SCSI_IO_TYPE_RESERVED_LOW   0x12

Reserved (low)

#define EFI_SCSI_IO_TYPE_SCANNER   0x06

Scanner device.

#define EFI_SCSI_IO_TYPE_TAPE   0x01

Tape device.

#define EFI_SCSI_IO_TYPE_UNKNOWN   0x1F

Unknown no device type.

#define EFI_SCSI_IO_TYPE_WORM   0x04

Write-once read-multiple.

#define MFI_SCSI_IO_TYPE_A   0x0A

Obsolete.

#define MFI_SCSI_IO_TYPE_B   0x0B

Obsolete.

#define MFI_SCSI_IO_TYPE_BRIDGE   0x10

Bridge Controller Commands.

#define MFI_SCSI_IO_TYPE_OCRW   0x0F

Optical card reader/writer device.

#define MFI_SCSI_IO_TYPE_OSD   0x11

Object-based Storage Device.

#define MFI_SCSI_IO_TYPE_RAID   0x0C

Storage array controller device (e.g., RAID)

#define MFI_SCSI_IO_TYPE_RBC   0x0E

Simplified direct-access device (e.g., magnetic disk)

#define MFI_SCSI_IO_TYPE_SES   0x0D

Enclosure services device.

Typedef Documentation

Forward reference for pure ANSI compatability

typedef EFI_STATUS(EFIAPI * EFI_SCSI_IO_PROTOCOL_EXEC_SCSI_COMMAND)(IN EFI_SCSI_IO_PROTOCOL *This, IN OUT EFI_SCSI_IO_SCSI_REQUEST_PACKET *Packet, IN EFI_EVENT Event)

Sends a SCSI Request Packet to the SCSI Controller for execution.

Parameters
ThisProtocol instance pointer.
PacketThe SCSI request packet to send to the SCSI Controller specified by the device handle.
EventIf the SCSI bus to which the SCSI device is attached does not support non-blocking I/O, then Event is ignored, and blocking I/O is performed. If Event is NULL, then blocking I/O is performed. If Event is not NULL and non-blocking I/O is supported, then non-blocking I/O is performed, and Event will be signaled when the SCSI Request Packet completes.
Return values
EFI_SUCCESSThe SCSI Request Packet was sent by the host successfully, and TransferLength bytes were transferred to/from DataBuffer. See HostAdapterStatus, TargetStatus, SenseDataLength, and SenseData in that order for additional status information.
EFI_BAD_BUFFER_SIZEThe SCSI Request Packet was executed, but the entire DataBuffer could not be transferred. The actual number of bytes transferred is returned in TransferLength. See HostAdapterStatus, TargetStatus, SenseDataLength, and SenseData in that order for additional status information.
EFI_NOT_READYThe SCSI Request Packet could not be sent because there are too many SCSI Command Packets already queued.The caller may retry again later.
EFI_DEVICE_ERRORA device error occurred while attempting to send the SCSI Request Packet. See HostAdapterStatus, TargetStatus, SenseDataLength, and SenseData in that order for additional status information.
EFI_INVALID_PARAMETERThe contents of CommandPacket are invalid. The SCSI Request Packet was not sent, so no additional status information is available.
EFI_UNSUPPORTEDThe command described by the SCSI Request Packet is not supported by the SCSI initiator(i.e., SCSI Host Controller). The SCSI Request Packet was not sent, so no additional status information is available.
EFI_TIMEOUTA timeout occurred while waiting for the SCSI Request Packet to execute. See HostAdapterStatus, TargetStatus, SenseDataLength, and SenseData in that order for additional status information.
typedef EFI_STATUS(EFIAPI * EFI_SCSI_IO_PROTOCOL_GET_DEVICE_LOCATION)(IN EFI_SCSI_IO_PROTOCOL *This, IN OUT UINT8 **Target, OUT UINT64 *Lun)

Retrieves the device location in the SCSI channel.

Parameters
ThisProtocol instance pointer.
TargetA pointer to the Target ID of a SCSI device on the SCSI channel.
LunA pointer to the LUN of the SCSI device on the SCSI channel.
Return values
EFI_SUCCESSRetrieves the device location successfully.
EFI_INVALID_PARAMETERThe Target or Lun is NULL.
typedef EFI_STATUS(EFIAPI * EFI_SCSI_IO_PROTOCOL_GET_DEVICE_TYPE)(IN EFI_SCSI_IO_PROTOCOL *This, OUT UINT8 *DeviceType)

Retrieves the device type information of the SCSI Controller.

Parameters
ThisProtocol instance pointer.
DeviceTypeA pointer to the device type information retrieved from the SCSI Controller.
Return values
EFI_SUCCESSRetrieved the device type information successfully.
EFI_INVALID_PARAMETERThe DeviceType is NULL.
typedef EFI_STATUS(EFIAPI * EFI_SCSI_IO_PROTOCOL_RESET_BUS)(IN EFI_SCSI_IO_PROTOCOL *This)

Resets the SCSI Bus that the SCSI Controller is attached to.

Parameters
ThisProtocol instance pointer.
Return values
EFI_SUCCESSThe SCSI bus is reset successfully.
EFI_DEVICE_ERRORErrors encountered when resetting the SCSI bus.
EFI_UNSUPPORTEDThe bus reset operation is not supported by the SCSI Host Controller.
EFI_TIMEOUTA timeout occurred while attempting to reset the SCSI bus.
typedef EFI_STATUS(EFIAPI * EFI_SCSI_IO_PROTOCOL_RESET_DEVICE)(IN EFI_SCSI_IO_PROTOCOL *This)

Resets the SCSI Controller that the device handle specifies.

Parameters
ThisProtocol instance pointer.
Return values
EFI_SUCCESSReset the SCSI controller successfully.
EFI_DEVICE_ERRORErrors were encountered when resetting the SCSI Controller.
EFI_UNSUPPORTEDThe SCSI bus does not support a device reset operation.
EFI_TIMEOUTA timeout occurred while attempting to reset the SCSI Controller.

Variable Documentation

EFI_GUID gEfiScsiIoProtocolGuid