VirtualBox

Changeset 8374 in vbox for trunk/src/VBox/Devices


Ignore:
Timestamp:
Apr 24, 2008 10:12:12 PM (17 years ago)
Author:
vboxsync
Message:

AHCI: Remove temporary buffer, map the pages of the guest in R3 and use scatter gather I/O instead.

Location:
trunk/src/VBox/Devices
Files:
2 edited

Legend:

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

    r8155 r8374  
    260260
    261261/** @copydoc PDMIBLOCKASYNC::pfnRead */
    262 static DECLCALLBACK(int) drvblockAsyncReadStart(PPDMIBLOCKASYNC pInterface, uint64_t off, void *pvBuf, size_t cbRead, void *pvUser)
     262static DECLCALLBACK(int) drvblockAsyncReadStart(PPDMIBLOCKASYNC pInterface, uint64_t off, PPDMIDATATRANSPORTSEG pSeg, unsigned cSeg, size_t cbRead, void *pvUser)
    263263{
    264264    PDRVBLOCK pData = PDMIBLOCKASYNC_2_DRVBLOCK(pInterface);
     
    273273    }
    274274
    275     int rc = pData->pDrvMediaAsync->pfnStartRead(pData->pDrvMediaAsync, off, pvBuf, cbRead, pvUser);
     275    int rc = pData->pDrvMediaAsync->pfnStartRead(pData->pDrvMediaAsync, off, pSeg, cSeg, cbRead, pvUser);
    276276    return rc;
    277277}
     
    279279
    280280/** @copydoc PDMIBLOCKASYNC::pfnWrite */
    281 static DECLCALLBACK(int) drvblockAsyncWriteStart(PPDMIBLOCKASYNC pInterface, uint64_t off, const void *pvBuf, size_t cbWrite, void *pvUser)
     281static DECLCALLBACK(int) drvblockAsyncWriteStart(PPDMIBLOCKASYNC pInterface, uint64_t off, PPDMIDATATRANSPORTSEG pSeg, unsigned cSeg, size_t cbWrite, void *pvUser)
    282282{
    283283    PDRVBLOCK pData = PDMIBLOCKASYNC_2_DRVBLOCK(pInterface);
     
    292292    }
    293293
    294     int rc = pData->pDrvMediaAsync->pfnStartWrite(pData->pDrvMediaAsync, off, pvBuf, cbWrite, pvUser);
     294    int rc = pData->pDrvMediaAsync->pfnStartWrite(pData->pDrvMediaAsync, off, pSeg, cSeg, cbWrite, pvUser);
    295295
    296296    return rc;
     
    303303
    304304
    305 static DECLCALLBACK(int) drvblockAsyncReadCompleteNotify(PPDMIMEDIAASYNCPORT pInterface, uint64_t uOffset, void *pvBuf, size_t cbRead, void *pvUser)
     305static DECLCALLBACK(int) drvblockAsyncReadCompleteNotify(PPDMIMEDIAASYNCPORT pInterface, uint64_t uOffset, PPDMIDATATRANSPORTSEG pSeg, unsigned cSeg, size_t cbRead, void *pvUser)
    306306{
    307307    PDRVBLOCK pData = PDMIMEDIAASYNCPORT_2_DRVBLOCK(pInterface);
    308308
    309     return pData->pDrvBlockAsyncPort->pfnReadCompleteNotify(pData->pDrvBlockAsyncPort, uOffset, pvBuf, cbRead, pvUser);
    310 }
    311 
    312 static DECLCALLBACK(int) drvblockAsyncWriteCompleteNotify(PPDMIMEDIAASYNCPORT pInterface, uint64_t uOffset, void *pvBuf, size_t cbWritten, void *pvUser)
     309    return pData->pDrvBlockAsyncPort->pfnReadCompleteNotify(pData->pDrvBlockAsyncPort, uOffset, pSeg, cSeg, cbRead, pvUser);
     310}
     311
     312static DECLCALLBACK(int) drvblockAsyncWriteCompleteNotify(PPDMIMEDIAASYNCPORT pInterface, uint64_t uOffset, PPDMIDATATRANSPORTSEG pSeg, unsigned cSeg, size_t cbWritten, void *pvUser)
    313313{
    314314    PDRVBLOCK pData = PDMIMEDIAASYNCPORT_2_DRVBLOCK(pInterface);
     
    326326#endif /* VBOX_PERIODIC_FLUSH */
    327327
    328     return pData->pDrvBlockAsyncPort->pfnWriteCompleteNotify(pData->pDrvBlockAsyncPort, uOffset, pvBuf, cbWritten, pvUser);
     328    return pData->pDrvBlockAsyncPort->pfnWriteCompleteNotify(pData->pDrvBlockAsyncPort, uOffset, pSeg, cSeg, cbWritten, pvUser);
    329329}
    330330
  • trunk/src/VBox/Devices/testcase/tstDeviceStructSizeGC.cpp

    r8155 r8374  
    912912    GEN_CHECK_OFF(AHCIPort, iLUN);
    913913    GEN_CHECK_OFF(AHCIPort, fResetDevice);
    914     GEN_CHECK_OFF(AHCIPort, cbIOBuffer);
    915     GEN_CHECK_OFF(AHCIPort, pIOBufferHC);
    916914    GEN_CHECK_OFF(AHCIPort, u32TasksFinished);
    917915    GEN_CHECK_OFF(AHCIPort, u32QueuedTasksFinished);
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