VirtualBox

Changeset 65109 in vbox for trunk/src


Ignore:
Timestamp:
Jan 4, 2017 2:07:27 PM (8 years ago)
Author:
vboxsync
Message:

Storage/Devices/DrvHostDVD: Make use of the new SCSI inline helpers and remove the the local inlines

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Storage/DrvHostDVD.cpp

    r65083 r65109  
    3131#include <iprt/critsect.h>
    3232#include <VBox/scsi.h>
     33#include <VBox/scsiinline.h>
    3334
    3435#include "VBoxDD.h"
     
    6061*********************************************************************************************************************************/
    6162
    62 DECLINLINE(void) drvHostDvdH2BE_U16(uint8_t *pbBuf, uint16_t val)
    63 {
    64     pbBuf[0] = val >> 8;
    65     pbBuf[1] = val;
    66 }
    67 
    68 
    69 DECLINLINE(void) drvHostDvdH2BE_U24(uint8_t *pbBuf, uint32_t val)
    70 {
    71     pbBuf[0] = val >> 16;
    72     pbBuf[1] = val >> 8;
    73     pbBuf[2] = val;
    74 }
    75 
    76 
    77 DECLINLINE(void) drvHostDvdH2BE_U32(uint8_t *pbBuf, uint32_t val)
    78 {
    79     pbBuf[0] = val >> 24;
    80     pbBuf[1] = val >> 16;
    81     pbBuf[2] = val >> 8;
    82     pbBuf[3] = val;
    83 }
    84 
    85 
    86 DECLINLINE(uint16_t) drvHostDvdBE2H_U16(const uint8_t *pbBuf)
    87 {
    88     return (pbBuf[0] << 8) | pbBuf[1];
    89 }
    90 
    91 
    92 DECLINLINE(uint32_t) drvHostDvdBE2H_U24(const uint8_t *pbBuf)
    93 {
    94     return (pbBuf[0] << 16) | (pbBuf[1] << 8) | pbBuf[2];
    95 }
    96 
    97 
    98 DECLINLINE(uint32_t) drvHostDvdBE2H_U32(const uint8_t *pbBuf)
    99 {
    100     return (pbBuf[0] << 24) | (pbBuf[1] << 16) | (pbBuf[2] << 8) | pbBuf[3];
    101 }
    102 
    103 
    104 DECLINLINE(void) drvHostDvdLBA2MSF(uint8_t *pbBuf, uint32_t iATAPILBA)
    105 {
    106     iATAPILBA += 150;
    107     pbBuf[0] = (iATAPILBA / 75) / 60;
    108     pbBuf[1] = (iATAPILBA / 75) % 60;
    109     pbBuf[2] = iATAPILBA % 75;
    110 }
    111 
    112 
    113 DECLINLINE(uint32_t) drvHostDvdMSF2LBA(const uint8_t *pbBuf)
    114 {
    115     return (pbBuf[0] * 60 + pbBuf[1]) * 75 + pbBuf[2];
    116 }
    11763
    11864static uint8_t drvHostDvdCmdOK(PDRVHOSTDVD pThis)
     
    197143            break;
    198144        case SCSI_ERASE_10:
    199             uLba = drvHostDvdBE2H_U32(pbCdb + 2);
    200             cbXfer = drvHostDvdBE2H_U16(pbCdb + 7);
     145            uLba = scsiBE2H_U32(pbCdb + 2);
     146            cbXfer = scsiBE2H_U16(pbCdb + 7);
    201147            enmTxDir = PDMMEDIATXDIR_TO_DEVICE;
    202148            fPassthrough = true;
     
    208154            break;
    209155        case SCSI_GET_CONFIGURATION:
    210             cbXfer = drvHostDvdBE2H_U16(pbCdb + 7);
     156            cbXfer = scsiBE2H_U16(pbCdb + 7);
    211157            enmTxDir = PDMMEDIATXDIR_FROM_DEVICE;
    212158            fPassthrough = true;
    213159            break;
    214160        case SCSI_GET_EVENT_STATUS_NOTIFICATION:
    215             cbXfer = drvHostDvdBE2H_U16(pbCdb + 7);
     161            cbXfer = scsiBE2H_U16(pbCdb + 7);
    216162            enmTxDir = PDMMEDIATXDIR_FROM_DEVICE;
    217163            fPassthrough = true;
     
    223169            break;
    224170        case SCSI_INQUIRY:
    225             cbXfer = drvHostDvdBE2H_U16(pbCdb + 3);
     171            cbXfer = scsiBE2H_U16(pbCdb + 3);
    226172            enmTxDir = PDMMEDIATXDIR_FROM_DEVICE;
    227173            fPassthrough = true;
    228174            break;
    229175        case SCSI_MECHANISM_STATUS:
    230             cbXfer = drvHostDvdBE2H_U16(pbCdb + 8);
     176            cbXfer = scsiBE2H_U16(pbCdb + 8);
    231177            enmTxDir = PDMMEDIATXDIR_FROM_DEVICE;
    232178            fPassthrough = true;
    233179            break;
    234180        case SCSI_MODE_SELECT_10:
    235             cbXfer = drvHostDvdBE2H_U16(pbCdb + 7);
     181            cbXfer = scsiBE2H_U16(pbCdb + 7);
    236182            enmTxDir = PDMMEDIATXDIR_TO_DEVICE;
    237183            fPassthrough = true;
    238184            break;
    239185        case SCSI_MODE_SENSE_10:
    240             cbXfer = drvHostDvdBE2H_U16(pbCdb + 7);
     186            cbXfer = scsiBE2H_U16(pbCdb + 7);
    241187            enmTxDir = PDMMEDIATXDIR_FROM_DEVICE;
    242188            fPassthrough = true;
    243189            break;
    244190        case SCSI_READ_10:
    245             uLba = drvHostDvdBE2H_U32(pbCdb + 2);
    246             cSectors = drvHostDvdBE2H_U16(pbCdb + 7);
     191            uLba = scsiBE2H_U32(pbCdb + 2);
     192            cSectors = scsiBE2H_U16(pbCdb + 7);
    247193            cbSector = 2048;
    248194            cbXfer = cSectors * cbSector;
     
    251197            break;
    252198        case SCSI_READ_12:
    253             uLba = drvHostDvdBE2H_U32(pbCdb + 2);
    254             cSectors = drvHostDvdBE2H_U32(pbCdb + 6);
     199            uLba = scsiBE2H_U32(pbCdb + 2);
     200            cSectors = scsiBE2H_U32(pbCdb + 6);
    255201            cbSector = 2048;
    256202            cbXfer = cSectors * cbSector;
     
    259205            break;
    260206        case SCSI_READ_BUFFER:
    261             cbXfer = drvHostDvdBE2H_U24(pbCdb + 6);
     207            cbXfer = scsiBE2H_U24(pbCdb + 6);
    262208            enmTxDir = PDMMEDIATXDIR_FROM_DEVICE;
    263209            fPassthrough = true;
    264210            break;
    265211        case SCSI_READ_BUFFER_CAPACITY:
    266             cbXfer = drvHostDvdBE2H_U16(pbCdb + 7);
     212            cbXfer = scsiBE2H_U16(pbCdb + 7);
    267213            enmTxDir = PDMMEDIATXDIR_FROM_DEVICE;
    268214            fPassthrough = true;
     
    284230
    285231                    if (pbCdb[0] == SCSI_READ_CD)
    286                         iLbaStart = drvHostDvdBE2H_U32(&pbCdb[2]);
     232                        iLbaStart = scsiBE2H_U32(&pbCdb[2]);
    287233                    else
    288                         iLbaStart = drvHostDvdMSF2LBA(&pbCdb[3]);
     234                        iLbaStart = scsiMSF2LBA(&pbCdb[3]);
    289235
    290236                    if (pThis->pTrackList)
     
    315261
    316262            if (pbCdb[0] == SCSI_READ_CD)
    317                 cbXfer = drvHostDvdBE2H_U24(pbCdb + 6) * cbSector;
     263                cbXfer = scsiBE2H_U24(pbCdb + 6) * cbSector;
    318264            else /* SCSI_READ_MSF */
    319265            {
    320                 cSectors = drvHostDvdMSF2LBA(pbCdb + 6) - drvHostDvdMSF2LBA(pbCdb + 3);
     266                cSectors = scsiMSF2LBA(pbCdb + 6) - scsiMSF2LBA(pbCdb + 3);
    321267                if (cSectors > 32)
    322268                    cSectors = 32; /* Limit transfer size to 64~74K. Safety first. In any case this can only harm software doing CDDA extraction. */
     
    328274        }
    329275        case SCSI_READ_DISC_INFORMATION:
    330             cbXfer = drvHostDvdBE2H_U16(pbCdb + 7);
     276            cbXfer = scsiBE2H_U16(pbCdb + 7);
    331277            enmTxDir = PDMMEDIATXDIR_FROM_DEVICE;
    332278            fPassthrough = true;
    333279            break;
    334280        case SCSI_READ_DVD_STRUCTURE:
    335             cbXfer = drvHostDvdBE2H_U16(pbCdb + 8);
     281            cbXfer = scsiBE2H_U16(pbCdb + 8);
    336282            enmTxDir = PDMMEDIATXDIR_FROM_DEVICE;
    337283            fPassthrough = true;
    338284            break;
    339285        case SCSI_READ_FORMAT_CAPACITIES:
    340             cbXfer = drvHostDvdBE2H_U16(pbCdb + 7);
     286            cbXfer = scsiBE2H_U16(pbCdb + 7);
    341287            enmTxDir = PDMMEDIATXDIR_FROM_DEVICE;
    342288            fPassthrough = true;
    343289            break;
    344290        case SCSI_READ_SUBCHANNEL:
    345             cbXfer = drvHostDvdBE2H_U16(pbCdb + 7);
     291            cbXfer = scsiBE2H_U16(pbCdb + 7);
    346292            enmTxDir = PDMMEDIATXDIR_FROM_DEVICE;
    347293            fPassthrough = true;
    348294            break;
    349295        case SCSI_READ_TOC_PMA_ATIP:
    350             cbXfer = drvHostDvdBE2H_U16(pbCdb + 7);
     296            cbXfer = scsiBE2H_U16(pbCdb + 7);
    351297            enmTxDir = PDMMEDIATXDIR_FROM_DEVICE;
    352298            fPassthrough = true;
    353299            break;
    354300        case SCSI_READ_TRACK_INFORMATION:
    355             cbXfer = drvHostDvdBE2H_U16(pbCdb + 7);
     301            cbXfer = scsiBE2H_U16(pbCdb + 7);
    356302            enmTxDir = PDMMEDIATXDIR_FROM_DEVICE;
    357303            fPassthrough = true;
    358304            break;
    359305        case SCSI_REPORT_KEY:
    360             cbXfer = drvHostDvdBE2H_U16(pbCdb + 8);
     306            cbXfer = scsiBE2H_U16(pbCdb + 8);
    361307            enmTxDir = PDMMEDIATXDIR_FROM_DEVICE;
    362308            fPassthrough = true;
     
    383329            break;
    384330        case SCSI_SEND_CUE_SHEET:
    385             cbXfer = drvHostDvdBE2H_U24(pbCdb + 6);
     331            cbXfer = scsiBE2H_U24(pbCdb + 6);
    386332            enmTxDir = PDMMEDIATXDIR_TO_DEVICE;
    387333            fPassthrough = true;
    388334            break;
    389335        case SCSI_SEND_DVD_STRUCTURE:
    390             cbXfer = drvHostDvdBE2H_U16(pbCdb + 8);
     336            cbXfer = scsiBE2H_U16(pbCdb + 8);
    391337            enmTxDir = PDMMEDIATXDIR_TO_DEVICE;
    392338            fPassthrough = true;
    393339            break;
    394340        case SCSI_SEND_EVENT:
    395             cbXfer = drvHostDvdBE2H_U16(pbCdb + 8);
     341            cbXfer = scsiBE2H_U16(pbCdb + 8);
    396342            enmTxDir = PDMMEDIATXDIR_TO_DEVICE;
    397343            fPassthrough = true;
    398344            break;
    399345        case SCSI_SEND_KEY:
    400             cbXfer = drvHostDvdBE2H_U16(pbCdb + 8);
     346            cbXfer = scsiBE2H_U16(pbCdb + 8);
    401347            enmTxDir = PDMMEDIATXDIR_TO_DEVICE;
    402348            fPassthrough = true;
    403349            break;
    404350        case SCSI_SEND_OPC_INFORMATION:
    405             cbXfer = drvHostDvdBE2H_U16(pbCdb + 7);
     351            cbXfer = scsiBE2H_U16(pbCdb + 7);
    406352            enmTxDir = PDMMEDIATXDIR_TO_DEVICE;
    407353            fPassthrough = true;
    408354            break;
    409355        case SCSI_SET_STREAMING:
    410             cbXfer = drvHostDvdBE2H_U16(pbCdb + 9);
     356            cbXfer = scsiBE2H_U16(pbCdb + 9);
    411357            enmTxDir = PDMMEDIATXDIR_TO_DEVICE;
    412358            fPassthrough = true;
     
    414360        case SCSI_WRITE_10:
    415361        case SCSI_WRITE_AND_VERIFY_10:
    416             uLba = drvHostDvdBE2H_U32(pbCdb + 2);
    417             cSectors = drvHostDvdBE2H_U16(pbCdb + 7);
     362            uLba = scsiBE2H_U32(pbCdb + 2);
     363            cSectors = scsiBE2H_U16(pbCdb + 7);
    418364            if (pThis->pTrackList)
    419365                cbSector = ATAPIPassthroughTrackListGetSectorSizeFromLba(pThis->pTrackList, uLba);
     
    425371            break;
    426372        case SCSI_WRITE_12:
    427             uLba = drvHostDvdBE2H_U32(pbCdb + 2);
    428             cSectors = drvHostDvdBE2H_U32(pbCdb + 6);
     373            uLba = scsiBE2H_U32(pbCdb + 2);
     374            cSectors = scsiBE2H_U32(pbCdb + 6);
    429375            if (pThis->pTrackList)
    430376                cbSector = ATAPIPassthroughTrackListGetSectorSizeFromLba(pThis->pTrackList, uLba);
     
    448394                    break;
    449395                default:
    450                     cbXfer = drvHostDvdBE2H_U16(pbCdb + 6);
     396                    cbXfer = scsiBE2H_U16(pbCdb + 6);
    451397                    enmTxDir = PDMMEDIATXDIR_TO_DEVICE;
    452398                    fPassthrough = true;
     
    455401            break;
    456402        case SCSI_REPORT_LUNS: /* Not part of MMC-3, but used by Windows. */
    457             cbXfer = drvHostDvdBE2H_U32(pbCdb + 6);
     403            cbXfer = scsiBE2H_U32(pbCdb + 6);
    458404            enmTxDir = PDMMEDIATXDIR_FROM_DEVICE;
    459405            fPassthrough = true;
     
    583529                case SCSI_WRITE_10:
    584530                case SCSI_WRITE_AND_VERIFY_10:
    585                     iATAPILBA = drvHostDvdBE2H_U32(pbCdb + 2);
    586                     cSectors = drvHostDvdBE2H_U16(pbCdb + 7);
     531                    iATAPILBA = scsiBE2H_U32(pbCdb + 2);
     532                    cSectors = scsiBE2H_U16(pbCdb + 7);
    587533                    break;
    588534                case SCSI_READ_12:
    589535                case SCSI_WRITE_12:
    590                     iATAPILBA = drvHostDvdBE2H_U32(pbCdb + 2);
    591                     cSectors = drvHostDvdBE2H_U32(pbCdb + 6);
     536                    iATAPILBA = scsiBE2H_U32(pbCdb + 2);
     537                    cSectors = scsiBE2H_U32(pbCdb + 6);
    592538                    break;
    593539                case SCSI_READ_CD:
    594                     iATAPILBA = drvHostDvdBE2H_U32(pbCdb + 2);
    595                     cSectors = drvHostDvdBE2H_U24(pbCdb + 6);
     540                    iATAPILBA = scsiBE2H_U32(pbCdb + 2);
     541                    cSectors = scsiBE2H_U24(pbCdb + 6);
    596542                    break;
    597543                case SCSI_READ_CD_MSF:
    598                     iATAPILBA = drvHostDvdMSF2LBA(pbCdb + 3);
    599                     cSectors = drvHostDvdMSF2LBA(pbCdb + 6) - iATAPILBA;
     544                    iATAPILBA = scsiMSF2LBA(pbCdb + 3);
     545                    cSectors = scsiMSF2LBA(pbCdb + 6) - iATAPILBA;
    600546                    break;
    601547                default:
     
    621567                    case SCSI_WRITE_10:
    622568                    case SCSI_WRITE_AND_VERIFY_10:
    623                         drvHostDvdH2BE_U32(aATAPICmd + 2, iATAPILBA);
    624                         drvHostDvdH2BE_U16(aATAPICmd + 7, cReqSectors);
     569                        scsiH2BE_U32(aATAPICmd + 2, iATAPILBA);
     570                        scsiH2BE_U16(aATAPICmd + 7, cReqSectors);
    625571                        break;
    626572                    case SCSI_READ_12:
    627573                    case SCSI_WRITE_12:
    628                         drvHostDvdH2BE_U32(aATAPICmd + 2, iATAPILBA);
    629                         drvHostDvdH2BE_U32(aATAPICmd + 6, cReqSectors);
     574                        scsiH2BE_U32(aATAPICmd + 2, iATAPILBA);
     575                        scsiH2BE_U32(aATAPICmd + 6, cReqSectors);
    630576                        break;
    631577                    case SCSI_READ_CD:
    632                         drvHostDvdH2BE_U32(aATAPICmd + 2, iATAPILBA);
    633                         drvHostDvdH2BE_U24(aATAPICmd + 6, cReqSectors);
     578                        scsiH2BE_U32(aATAPICmd + 2, iATAPILBA);
     579                        scsiH2BE_U24(aATAPICmd + 6, cReqSectors);
    634580                        break;
    635581                    case SCSI_READ_CD_MSF:
    636                         drvHostDvdLBA2MSF(aATAPICmd + 3, iATAPILBA);
    637                         drvHostDvdLBA2MSF(aATAPICmd + 6, iATAPILBA + cReqSectors);
     582                        scsiLBA2MSF(aATAPICmd + 3, iATAPILBA);
     583                        scsiLBA2MSF(aATAPICmd + 6, iATAPILBA + cReqSectors);
    638584                        break;
    639585                }
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette