VirtualBox

Changeset 59729 in vbox for trunk/src/VBox/Runtime/common


Ignore:
Timestamp:
Feb 19, 2016 12:31:35 AM (9 years ago)
Author:
vboxsync
Message:

didn't mean to enable building common/vfs/vfsreadahead.cpp yet.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/common/vfs/vfsreadahead.cpp

    r59706 r59729  
    5252#include <iprt/err.h>
    5353#include <iprt/mem.h>
    54 #include <iprt/sempahore.h>
    5554#include <iprt/thread.h>
    56 
    57 
    58 /*********************************************************************************************************************************
    59 *   Defined Constants And Macros                                                                                                 *
    60 *********************************************************************************************************************************/
    6155
    6256
     
    7973    uint32_t volatile   fReserved;
    8074    /** Pointer to the buffer. */
    81     uint8_t            *pbBuffer
     75    uint8_t            *pbBuffer;
    8276} RTVFSREADAHEADBUFDESC;
    8377/** Pointer to a memory file extent. */
     
    163157    RTVfsIoStrmRelease(pThis->hIos);
    164158    pThis->hIos  = NIL_RTVFSIOSTREAM;
    165     RTVfsFileRelase(pThis->hFile);
     159    RTVfsFileRelease(pThis->hFile);
    166160    pThis->hFile = NIL_RTVFSFILE;
    167161
     
    195189{
    196190    PRTVFSREADAHEAD pThis = (PRTVFSREADAHEAD)pvThis;
    197     return RTVfsIoStrmQueryInfo(pThis->hVfs, pObjInfo, enmAddAttr);
     191    return RTVfsIoStrmQueryInfo(pThis->hIos, pObjInfo, enmAddAttr);
    198192}
    199193
     
    215209     * section, just in case a buffer got inserted while we were waiting for it.
    216210     */
    217     int    rc;
     211    int    rc = VINF_SUCCESS;
    218212    size_t cbTotalRead     = 0;
    219213    bool   fPokeReader     = false;
     
    232226        }
    233227
    234         RTListForEach(&pThis->ConsumerList, pCurBufDesc, Type, ListEntry)
     228        PRTVFSREADAHEADBUFDESC pCurBufDesc;
     229        RTListForEach(&pThis->ConsumerList, pCurBufDesc, RTVFSREADAHEADBUFDESC, ListEntry)
    235230        {
    236231            if (pThis->offConsumer)
     
    258253         * Do a direct read of the remaining data.
    259254         */
    260         size_t cbDirectRead;
     255        //size_t cbDirectRead;
    261256
    262257
     
    307302        return VERR_NOT_IMPLEMENTED;
    308303    }
    309     return RTVfsIoStrmPoll(pThis->hVfs, fEvents, cMillies, fIntr, pfRetEvents);
     304    return RTVfsIoStrmPoll(pThis->hIos, fEvents, cMillies, fIntr, pfRetEvents);
    310305}
    311306
     
    534529                    {
    535530                        do
    536                             pAfter = RTListGetPrev(&pThis->ConsumerList, &pAfter->ListEntry, RTVFSREADAHEADBUFDESC, ListEntry);
     531                            pAfter = RTListGetPrev(&pThis->ConsumerList, pAfter, RTVFSREADAHEADBUFDESC, ListEntry);
    537532                        while (pAfter && pAfter->off > pBufDesc->off);
    538533                        if (!pAfter)
     
    580575     */
    581576    int rc = VINF_SUCCESS;
    582     AssertStmt(cBuffers < _8K, rc = VERR_OUT_OF_RANGE);
     577    AssertStmt(cBuffers < _4K, rc = VERR_OUT_OF_RANGE);
    583578    if (cBuffers == 0)
    584579        cBuffers = 4;
    585     AssertStmt(cbBuffer < , rc = VERR_OUT_OF_RANGE);
     580    AssertStmt(cbBuffer <= _512K, rc = VERR_OUT_OF_RANGE);
    586581    if (cbBuffer == 0)
    587582        cbBuffer = _256K / cBuffers;
     
    597592        PRTVFSREADAHEAD pThis;
    598593        size_t          cbThis = RT_OFFSETOF(RTVFSREADAHEAD, aBufDescs[cBuffers]);
    599         if (hVfsFile != NIL_RTVFSFILE)
     594        if (hVfsFileSrc != NIL_RTVFSFILE)
    600595            rc = RTVfsNewFile(&g_VfsReadAheadFileOps, cbThis, RTFILE_O_READ, NIL_RTVFS, NIL_RTVFSLOCK,
    601596                              &hVfsFileReadAhead, (void **)&pThis);
     
    615610            pThis->cbBuffer         = cbBuffer;
    616611            pThis->offConsumer      = RTVfsIoStrmTell(hVfsIosSrc);
    617             pThis->offActual        = pThis->offConsumer;
    618612            if ((RTFOFF)pThis->offConsumer >= 0)
    619613            {
    620                 rc = RTCritSectInit(&pThis->BufferCritSect);
     614                rc = RTCritSectInit(&pThis->IoCritSect);
    621615                if (RT_SUCCESS(rc))
    622                     rc = RTCritSectInit(&pThis->ConsumerList);
     616                    rc = RTCritSectInit(&pThis->BufferCritSect);
    623617                if (RT_SUCCESS(rc))
    624618                {
    625                     pThis->pbAllBuffers = RTMemPageAlloc(pThis->cbBuffer * pThis->cBuffers);
     619                    pThis->pbAllBuffers = (uint8_t *)RTMemPageAlloc(pThis->cbBuffer * pThis->cBuffers);
    626620                    if (pThis->pbAllBuffers)
    627621                    {
     
    646640                            if (phVfsFile)
    647641                                *phVfsFile = hVfsFileReadAhead;
    648                             else if (hVfsFileReadAhead == NIL_RTFILE)
     642                            else if (hVfsFileReadAhead == NIL_RTVFSFILE)
    649643                                *phVfsIos = hVfsIosReadAhead;
    650644                            else
     
    674668{
    675669    AssertPtrReturn(phVfsIos, VERR_INVALID_POINTER);
    676     phVfsIos = NIL_RTVFSIOSTREAM;
     670    *phVfsIos = NIL_RTVFSIOSTREAM;
    677671
    678672    /*
     
    684678    RTVFSFILE hVfsFile = RTVfsIoStrmToFile(hVfsIos);
    685679
    686     return rtVfsCreateReadAheadInstance(hVfsIos, hVfsFile, fFlags, cBuffers, cbBuffer, phVfsIos);
     680    /*
     681     * Do the job. (This always consumes the above retained references.)
     682     */
     683    return rtVfsCreateReadAheadInstance(hVfsIos, hVfsFile, fFlags, cBuffers, cbBuffer, phVfsIos, NULL);
    687684}
    688685
     
    691688                                        PRTVFSFILE phVfsFile)
    692689{
    693     AssertPtrReturn(phVfsIos, VERR_INVALID_POINTER);
     690    AssertPtrReturn(phVfsFile, VERR_INVALID_POINTER);
    694691    *phVfsFile = NIL_RTVFSFILE;
    695692
     
    699696    RTVFSIOSTREAM hVfsIos = RTVfsFileToIoStream(hVfsFile);
    700697    AssertReturn(hVfsIos != NIL_RTVFSIOSTREAM, VERR_INVALID_HANDLE);
    701     uint32_t cRefs = RTVfsFileRetain(hVfsIos);
     698    uint32_t cRefs = RTVfsFileRetain(hVfsFile);
    702699    AssertReturnStmt(cRefs != UINT32_MAX, RTVfsIoStrmRelease(hVfsIos), VERR_INVALID_HANDLE);
    703700
    704701    /*
    705      * Create a read ahead instance and cast it to a file before returning.
    706      */
    707     RTVFSIOSTREAM hVfsIosReadAhead;
    708     int rc = rtVfsCreateReadAheadInstance(hVfsIos, hVfsFile, fFlags, cBuffers, cbBuffer, &hVfsIosReadAhead);
    709     if (RT_SUCCESS(rc))
    710     {
    711         *phVfsFile = RTVfsIoStrmToFile(hVfsIosReadAhead);
    712         RTVfsIoStrmRelease(hVfsIosReadAhead);
    713         AssertReturn(*phVfsFile != NIL_RTVFSFILE, VERR_INTERNAL_ERROR_5);
    714     }
    715 
    716     return rc;
    717 }
    718 
     702     * Do the job. (This always consumes the above retained references.)
     703     */
     704    return rtVfsCreateReadAheadInstance(hVfsIos, hVfsFile, fFlags, cBuffers, cbBuffer, NULL, phVfsFile);
     705}
     706
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