TianoCore EDK2 master
Loading...
Searching...
No Matches
ScsiIo.h File Reference

Go to the source code of this file.

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.
 
#define EFI_SCSI_IO_TYPE_TAPE   0x01
 Tape device.
 
#define EFI_SCSI_IO_TYPE_PRINTER   0x02
 Printer.
 
#define EFI_SCSI_IO_TYPE_PROCESSOR   0x03
 Processor.
 
#define EFI_SCSI_IO_TYPE_WORM   0x04
 Write-once read-multiple.
 
#define EFI_SCSI_IO_TYPE_CDROM   0x05
 CD or DVD device.
 
#define EFI_SCSI_IO_TYPE_SCANNER   0x06
 Scanner device.
 
#define EFI_SCSI_IO_TYPE_OPTICAL   0x07
 Optical memory device.
 
#define EFI_SCSI_IO_TYPE_MEDIUMCHANGER   0x08
 Medium Changer device.
 
#define EFI_SCSI_IO_TYPE_COMMUNICATION   0x09
 Communications device.
 
#define MFI_SCSI_IO_TYPE_A   0x0A
 Obsolete.
 
#define MFI_SCSI_IO_TYPE_B   0x0B
 Obsolete.
 
#define MFI_SCSI_IO_TYPE_RAID   0x0C
 Storage array controller device (e.g., RAID)
 
#define MFI_SCSI_IO_TYPE_SES   0x0D
 Enclosure services device.
 
#define MFI_SCSI_IO_TYPE_RBC   0x0E
 Simplified direct-access device (e.g., magnetic disk)
 
#define MFI_SCSI_IO_TYPE_OCRW   0x0F
 Optical card reader/writer device.
 
#define MFI_SCSI_IO_TYPE_BRIDGE   0x10
 Bridge Controller Commands.
 
#define MFI_SCSI_IO_TYPE_OSD   0x11
 Object-based Storage Device.
 
#define EFI_SCSI_IO_TYPE_RESERVED_LOW   0x12
 Reserved (low)
 
#define EFI_SCSI_IO_TYPE_RESERVED_HIGH   0x1E
 Reserved (high)
 
#define EFI_SCSI_IO_TYPE_UNKNOWN   0x1F
 Unknown no device type.
 
#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
 
#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_TIMEOUT   0x0b
 timeout when waiting for the command processing
 
#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_BUS_RESET   0x0e
 a bus reset was detected
 
#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
 
#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_SELECTION_TIMEOUT   0x11
 selection timeout
 
#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_DATA_OVERRUN_UNDERRUN   0x12
 data overrun or data underrun
 
#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_BUS_FREE   0x13
 Unexepected bus free.
 
#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_PHASE_ERROR   0x14
 Target bus phase sequence failure.
 
#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
 
#define EFI_SCSI_IO_STATUS_TARGET_CONDITION_MET   0x04
 condition met
 
#define EFI_SCSI_IO_STATUS_TARGET_BUSY   0x08
 busy
 
#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_RESERVATION_CONFLICT   0x18
 reservation conflict
 
#define EFI_SCSI_IO_STATUS_TARGET_COMMOND_TERMINATED   0x22
 command terminated
 
#define EFI_SCSI_IO_STATUS_TARGET_QUEUE_FULL   0x28
 queue full
 

Typedefs

typedef struct _EFI_SCSI_IO_PROTOCOL EFI_SCSI_IO_PROTOCOL
 
typedef EFI_STATUS(EFIAPI * EFI_SCSI_IO_PROTOCOL_GET_DEVICE_TYPE) (IN EFI_SCSI_IO_PROTOCOL *This, OUT UINT8 *DeviceType)
 
typedef EFI_STATUS(EFIAPI * EFI_SCSI_IO_PROTOCOL_GET_DEVICE_LOCATION) (IN EFI_SCSI_IO_PROTOCOL *This, IN OUT UINT8 **Target, OUT UINT64 *Lun)
 
typedef EFI_STATUS(EFIAPI * EFI_SCSI_IO_PROTOCOL_RESET_BUS) (IN EFI_SCSI_IO_PROTOCOL *This)
 
typedef EFI_STATUS(EFIAPI * EFI_SCSI_IO_PROTOCOL_RESET_DEVICE) (IN EFI_SCSI_IO_PROTOCOL *This)
 
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 OPTIONAL)
 

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

Definition in file ScsiIo.h.

Macro Definition Documentation

◆ EFI_SCSI_IO_DATA_DIRECTION_BIDIRECTIONAL

#define EFI_SCSI_IO_DATA_DIRECTION_BIDIRECTIONAL   2

Definition at line 55 of file ScsiIo.h.

◆ EFI_SCSI_IO_DATA_DIRECTION_READ

#define EFI_SCSI_IO_DATA_DIRECTION_READ   0

Definition at line 53 of file ScsiIo.h.

◆ EFI_SCSI_IO_DATA_DIRECTION_WRITE

#define EFI_SCSI_IO_DATA_DIRECTION_WRITE   1

Definition at line 54 of file ScsiIo.h.

◆ EFI_SCSI_IO_PROTOCOL_GUID

#define EFI_SCSI_IO_PROTOCOL_GUID
Value:
{ \
0x932f47e6, 0x2362, 0x4002, {0x80, 0x3e, 0x3c, 0xd5, 0x4b, 0x13, 0x8f, 0x85 } \
}

Definition at line 15 of file ScsiIo.h.

◆ EFI_SCSI_IO_STATUS_HOST_ADAPTER_BUS_FREE

#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_BUS_FREE   0x13

Unexepected bus free.

Definition at line 69 of file ScsiIo.h.

◆ EFI_SCSI_IO_STATUS_HOST_ADAPTER_BUS_RESET

#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_BUS_RESET   0x0e

a bus reset was detected

Definition at line 64 of file ScsiIo.h.

◆ EFI_SCSI_IO_STATUS_HOST_ADAPTER_DATA_OVERRUN_UNDERRUN

#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_DATA_OVERRUN_UNDERRUN   0x12

data overrun or data underrun

Definition at line 68 of file ScsiIo.h.

◆ EFI_SCSI_IO_STATUS_HOST_ADAPTER_MESSAGE_REJECT

#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_MESSAGE_REJECT   0x0d

a message reject was received when processing command

Definition at line 63 of file ScsiIo.h.

◆ EFI_SCSI_IO_STATUS_HOST_ADAPTER_OK

#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_OK   0x00

Definition at line 60 of file ScsiIo.h.

◆ EFI_SCSI_IO_STATUS_HOST_ADAPTER_OTHER

#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_OTHER   0x7f

Definition at line 71 of file ScsiIo.h.

◆ EFI_SCSI_IO_STATUS_HOST_ADAPTER_PARITY_ERROR

#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_PARITY_ERROR   0x0f

Definition at line 65 of file ScsiIo.h.

◆ EFI_SCSI_IO_STATUS_HOST_ADAPTER_PHASE_ERROR

#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_PHASE_ERROR   0x14

Target bus phase sequence failure.

Definition at line 70 of file ScsiIo.h.

◆ EFI_SCSI_IO_STATUS_HOST_ADAPTER_REQUEST_SENSE_FAILED

#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_REQUEST_SENSE_FAILED   0x10

the adapter failed in issuing request sense command

Definition at line 66 of file ScsiIo.h.

◆ EFI_SCSI_IO_STATUS_HOST_ADAPTER_SELECTION_TIMEOUT

#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_SELECTION_TIMEOUT   0x11

selection timeout

Definition at line 67 of file ScsiIo.h.

◆ EFI_SCSI_IO_STATUS_HOST_ADAPTER_TIMEOUT

#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_TIMEOUT   0x0b

timeout when waiting for the command processing

Definition at line 62 of file ScsiIo.h.

◆ EFI_SCSI_IO_STATUS_HOST_ADAPTER_TIMEOUT_COMMAND

#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_TIMEOUT_COMMAND   0x09

timeout when processing the command

Definition at line 61 of file ScsiIo.h.

◆ EFI_SCSI_IO_STATUS_TARGET_BUSY

#define EFI_SCSI_IO_STATUS_TARGET_BUSY   0x08

busy

Definition at line 79 of file ScsiIo.h.

◆ EFI_SCSI_IO_STATUS_TARGET_CHECK_CONDITION

#define EFI_SCSI_IO_STATUS_TARGET_CHECK_CONDITION   0x02

check condition

Definition at line 77 of file ScsiIo.h.

◆ EFI_SCSI_IO_STATUS_TARGET_COMMOND_TERMINATED

#define EFI_SCSI_IO_STATUS_TARGET_COMMOND_TERMINATED   0x22

command terminated

Definition at line 83 of file ScsiIo.h.

◆ EFI_SCSI_IO_STATUS_TARGET_CONDITION_MET

#define EFI_SCSI_IO_STATUS_TARGET_CONDITION_MET   0x04

condition met

Definition at line 78 of file ScsiIo.h.

◆ EFI_SCSI_IO_STATUS_TARGET_GOOD

#define EFI_SCSI_IO_STATUS_TARGET_GOOD   0x00

Definition at line 76 of file ScsiIo.h.

◆ EFI_SCSI_IO_STATUS_TARGET_INTERMEDIATE

#define EFI_SCSI_IO_STATUS_TARGET_INTERMEDIATE   0x10

intermediate

Definition at line 80 of file ScsiIo.h.

◆ EFI_SCSI_IO_STATUS_TARGET_INTERMEDIATE_CONDITION_MET

#define EFI_SCSI_IO_STATUS_TARGET_INTERMEDIATE_CONDITION_MET   0x14

intermediate-condition met

Definition at line 81 of file ScsiIo.h.

◆ EFI_SCSI_IO_STATUS_TARGET_QUEUE_FULL

#define EFI_SCSI_IO_STATUS_TARGET_QUEUE_FULL   0x28

queue full

Definition at line 84 of file ScsiIo.h.

◆ EFI_SCSI_IO_STATUS_TARGET_RESERVATION_CONFLICT

#define EFI_SCSI_IO_STATUS_TARGET_RESERVATION_CONFLICT   0x18

reservation conflict

Definition at line 82 of file ScsiIo.h.

◆ EFI_SCSI_IO_TYPE_CDROM

#define EFI_SCSI_IO_TYPE_CDROM   0x05

CD or DVD device.

Definition at line 33 of file ScsiIo.h.

◆ EFI_SCSI_IO_TYPE_COMMUNICATION

#define EFI_SCSI_IO_TYPE_COMMUNICATION   0x09

Communications device.

Definition at line 37 of file ScsiIo.h.

◆ EFI_SCSI_IO_TYPE_DISK

#define EFI_SCSI_IO_TYPE_DISK   0x00

Disk device.

Definition at line 28 of file ScsiIo.h.

◆ EFI_SCSI_IO_TYPE_MEDIUMCHANGER

#define EFI_SCSI_IO_TYPE_MEDIUMCHANGER   0x08

Medium Changer device.

Definition at line 36 of file ScsiIo.h.

◆ EFI_SCSI_IO_TYPE_OPTICAL

#define EFI_SCSI_IO_TYPE_OPTICAL   0x07

Optical memory device.

Definition at line 35 of file ScsiIo.h.

◆ EFI_SCSI_IO_TYPE_PRINTER

#define EFI_SCSI_IO_TYPE_PRINTER   0x02

Printer.

Definition at line 30 of file ScsiIo.h.

◆ EFI_SCSI_IO_TYPE_PROCESSOR

#define EFI_SCSI_IO_TYPE_PROCESSOR   0x03

Processor.

Definition at line 31 of file ScsiIo.h.

◆ EFI_SCSI_IO_TYPE_RESERVED_HIGH

#define EFI_SCSI_IO_TYPE_RESERVED_HIGH   0x1E

Reserved (high)

Definition at line 47 of file ScsiIo.h.

◆ EFI_SCSI_IO_TYPE_RESERVED_LOW

#define EFI_SCSI_IO_TYPE_RESERVED_LOW   0x12

Reserved (low)

Definition at line 46 of file ScsiIo.h.

◆ EFI_SCSI_IO_TYPE_SCANNER

#define EFI_SCSI_IO_TYPE_SCANNER   0x06

Scanner device.

Definition at line 34 of file ScsiIo.h.

◆ EFI_SCSI_IO_TYPE_TAPE

#define EFI_SCSI_IO_TYPE_TAPE   0x01

Tape device.

Definition at line 29 of file ScsiIo.h.

◆ EFI_SCSI_IO_TYPE_UNKNOWN

#define EFI_SCSI_IO_TYPE_UNKNOWN   0x1F

Unknown no device type.

Definition at line 48 of file ScsiIo.h.

◆ EFI_SCSI_IO_TYPE_WORM

#define EFI_SCSI_IO_TYPE_WORM   0x04

Write-once read-multiple.

Definition at line 32 of file ScsiIo.h.

◆ MFI_SCSI_IO_TYPE_A

#define MFI_SCSI_IO_TYPE_A   0x0A

Obsolete.

Definition at line 38 of file ScsiIo.h.

◆ MFI_SCSI_IO_TYPE_B

#define MFI_SCSI_IO_TYPE_B   0x0B

Obsolete.

Definition at line 39 of file ScsiIo.h.

◆ MFI_SCSI_IO_TYPE_BRIDGE

#define MFI_SCSI_IO_TYPE_BRIDGE   0x10

Bridge Controller Commands.

Definition at line 44 of file ScsiIo.h.

◆ MFI_SCSI_IO_TYPE_OCRW

#define MFI_SCSI_IO_TYPE_OCRW   0x0F

Optical card reader/writer device.

Definition at line 43 of file ScsiIo.h.

◆ MFI_SCSI_IO_TYPE_OSD

#define MFI_SCSI_IO_TYPE_OSD   0x11

Object-based Storage Device.

Definition at line 45 of file ScsiIo.h.

◆ MFI_SCSI_IO_TYPE_RAID

#define MFI_SCSI_IO_TYPE_RAID   0x0C

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

Definition at line 40 of file ScsiIo.h.

◆ MFI_SCSI_IO_TYPE_RBC

#define MFI_SCSI_IO_TYPE_RBC   0x0E

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

Definition at line 42 of file ScsiIo.h.

◆ MFI_SCSI_IO_TYPE_SES

#define MFI_SCSI_IO_TYPE_SES   0x0D

Enclosure services device.

Definition at line 41 of file ScsiIo.h.

Typedef Documentation

◆ EFI_SCSI_IO_PROTOCOL

Forward reference for pure ANSI compatability

Definition at line 23 of file ScsiIo.h.

◆ EFI_SCSI_IO_PROTOCOL_EXEC_SCSI_COMMAND

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 OPTIONAL)

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.

Definition at line 281 of file ScsiIo.h.

◆ EFI_SCSI_IO_PROTOCOL_GET_DEVICE_LOCATION

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.

Definition at line 186 of file ScsiIo.h.

◆ EFI_SCSI_IO_PROTOCOL_GET_DEVICE_TYPE

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.

Definition at line 166 of file ScsiIo.h.

◆ EFI_SCSI_IO_PROTOCOL_RESET_BUS

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.

Definition at line 207 of file ScsiIo.h.

◆ EFI_SCSI_IO_PROTOCOL_RESET_DEVICE

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.

Definition at line 227 of file ScsiIo.h.