Changeset 89198 in vbox for trunk/src/VBox/Devices
- Timestamp:
- May 20, 2021 9:53:57 AM (4 years ago)
- svn:sync-xref-src-repo-rev:
- 144539
- Location:
- trunk/src/VBox/Devices
- Files:
-
- 1 deleted
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Storage/VBoxSCSI.h
r89192 r89198 72 72 * Header Files * 73 73 *******************************************************************************/ 74 //#define DEBUG75 #include <iprt/semaphore.h>76 74 #include <VBox/vmm/pdmdev.h> 77 #include <VBox/vmm/pdmstorageifs.h>78 #include <VBox/scsi.h>79 75 #include <VBox/version.h> 80 81 typedef enum VBOXSCSISTATE82 {83 VBOXSCSISTATE_NO_COMMAND = 0x00,84 VBOXSCSISTATE_READ_TXDIR = 0x01,85 VBOXSCSISTATE_READ_CDB_SIZE_BUFHI = 0x02,86 VBOXSCSISTATE_READ_BUFFER_SIZE_LSB = 0x03,87 VBOXSCSISTATE_READ_BUFFER_SIZE_MID = 0x04,88 VBOXSCSISTATE_READ_COMMAND = 0x05,89 VBOXSCSISTATE_COMMAND_READY = 0x0690 } VBOXSCSISTATE;91 92 #define VBOXSCSI_TXDIR_FROM_DEVICE 093 #define VBOXSCSI_TXDIR_TO_DEVICE 194 95 /** Maximum CDB size the BIOS driver sends. */96 #define VBOXSCSI_CDB_SIZE_MAX 1697 98 typedef struct VBOXSCSI99 {100 /** The identify register. */101 uint8_t regIdentify;102 /** The target device. */103 uint8_t uTargetDevice;104 /** Transfer direction. */105 uint8_t uTxDir;106 /** The size of the CDB we are issuing. */107 uint8_t cbCDB;108 /** The command to issue. */109 uint8_t abCDB[VBOXSCSI_CDB_SIZE_MAX + 4];110 /** Current position in the array. */111 uint8_t iCDB;112 113 #if HC_ARCH_BITS == 64114 uint32_t Alignment0;115 #endif116 117 /** Pointer to the buffer holding the data. */118 R3PTRTYPE(uint8_t *) pbBuf;119 /** Size of the buffer in bytes. */120 uint32_t cbBuf;121 /** The number of bytes left to read/write in the122 * buffer. It is decremented when the guest (BIOS) accesses123 * the buffer data. */124 uint32_t cbBufLeft;125 /** Current position in the buffer (offBuf if you like). */126 uint32_t iBuf;127 /** The result code of last operation. */128 int32_t rcCompletion;129 /** Flag whether a request is pending. */130 volatile bool fBusy;131 /** The state we are in when fetching a command from the BIOS. */132 VBOXSCSISTATE enmState;133 /** Critical section protecting the device state. */134 RTCRITSECT CritSect;135 } VBOXSCSI, *PVBOXSCSI;136 137 #define VBOX_SCSI_BUSY RT_BIT(0)138 #define VBOX_SCSI_ERROR RT_BIT(1)139 76 140 77 #ifdef IN_RING3 141 78 RT_C_DECLS_BEGIN 142 int vboxscsiInitialize(PVBOXSCSI pVBoxSCSI);143 void vboxscsiDestroy(PVBOXSCSI pVBoxSCSI);144 void vboxscsiHwReset(PVBOXSCSI pVBoxSCSI);145 int vboxscsiReadRegister(PVBOXSCSI pVBoxSCSI, uint8_t iRegister, uint32_t *pu32Value);146 int vboxscsiWriteRegister(PVBOXSCSI pVBoxSCSI, uint8_t iRegister, uint8_t uVal);147 int vboxscsiSetupRequest(PVBOXSCSI pVBoxSCSI, uint32_t *puLun, uint8_t **ppbCdb, size_t *pcbCdb,148 size_t *pcbBuf, uint32_t *puTargetDevice);149 int vboxscsiRequestFinished(PVBOXSCSI pVBoxSCSI, int rcCompletion);150 size_t vboxscsiCopyToBuf(PVBOXSCSI pVBoxSCSI, PRTSGBUF pSgBuf, size_t cbSkip, size_t cbCopy);151 size_t vboxscsiCopyFromBuf(PVBOXSCSI pVBoxSCSI, PRTSGBUF pSgBuf, size_t cbSkip, size_t cbCopy);152 void vboxscsiSetRequestRedo(PVBOXSCSI pVBoxSCSI);153 int vboxscsiWriteString(PPDMDEVINS pDevIns, PVBOXSCSI pVBoxSCSI, uint8_t iRegister,154 uint8_t const *pbSrc, uint32_t *pcTransfers, unsigned cb);155 int vboxscsiReadString(PPDMDEVINS pDevIns, PVBOXSCSI pVBoxSCSI, uint8_t iRegister,156 uint8_t *pbDst, uint32_t *pcTransfers, unsigned cb);157 158 DECLHIDDEN(int) vboxscsiR3LoadExec(PCPDMDEVHLPR3 pHlp, PVBOXSCSI pVBoxSCSI, PSSMHANDLE pSSM);159 DECLHIDDEN(int) vboxscsiR3SaveExec(PCPDMDEVHLPR3 pHlp, PVBOXSCSI pVBoxSCSI, PSSMHANDLE pSSM);160 79 161 80 /** -
trunk/src/VBox/Devices/testcase/tstDeviceStructSizeRC.cpp
r89197 r89198 1602 1602 #endif /* VBOX_WITH_VIRTIO */ 1603 1603 1604 #ifdef VBOX_WITH_SCSI1605 GEN_CHECK_SIZE(VBOXSCSI);1606 GEN_CHECK_OFF(VBOXSCSI, regIdentify);1607 GEN_CHECK_OFF(VBOXSCSI, uTargetDevice);1608 GEN_CHECK_OFF(VBOXSCSI, uTxDir);1609 GEN_CHECK_OFF(VBOXSCSI, cbCDB);1610 GEN_CHECK_OFF(VBOXSCSI, abCDB);1611 GEN_CHECK_OFF(VBOXSCSI, abCDB[11]);1612 GEN_CHECK_OFF(VBOXSCSI, iCDB);1613 GEN_CHECK_OFF(VBOXSCSI, pbBuf);1614 GEN_CHECK_OFF(VBOXSCSI, cbBuf);1615 GEN_CHECK_OFF(VBOXSCSI, iBuf);1616 GEN_CHECK_OFF(VBOXSCSI, fBusy);1617 GEN_CHECK_OFF(VBOXSCSI, enmState);1618 #endif1619 1620 1604 /* VMMDev*.cpp/h */ 1621 1605 GEN_CHECK_SIZE(VMMDEV);
Note:
See TracChangeset
for help on using the changeset viewer.