VirtualBox

Changeset 20167 in vbox for trunk/src/VBox/VMM


Ignore:
Timestamp:
Jun 1, 2009 8:25:54 PM (16 years ago)
Author:
vboxsync
Message:

First part of the PDMAsyncCompletion rewrite:

  • The Host specific parts in VMM are deleted (moved into Runtime)
  • Implemented a incomplete manager for file operations:
    • A slightly tested failsafe method to do operations is implemented using the synchronous RTFile* API. The failsafe method will be always used if the host has no support for async I/O or something bad happens during the operation reducing the risk of VM termination
  • Changed the testcase and drivers to use the new API
  • Removed the now obsolete async transport driver
  • Removed the obsolete raw async image driver
  • Removed the fault injection driver (useless from the beginning)
Location:
trunk/src/VBox/VMM
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/Makefile.kmk

    r19957 r20167  
    164164ifdef VBOX_WITH_PDM_ASYNC_COMPLETION
    165165VMMR3_DEFS += VBOX_WITH_PDM_ASYNC_COMPLETION
    166 VMMR3_DEFS.linux += __USE_FILE_OFFSET64 __USE_LARGEFILE64
    167 VMMR3_SOURCES += PDMAsyncCompletion.cpp
    168 VMMR3_SOURCES.linux += \
    169         PDMAsyncCompletionSocketPosix.cpp \
    170         PDMAsyncCompletionHostPosix.cpp
    171 
    172 VMMR3_SOURCES.win += \
    173         PDMAsyncCompletionSocketWin.cpp \
    174         PDMAsyncCompletionHostWin.cpp
    175 
    176 VMMR3_SOURCES.solaris += \
    177         PDMAsyncCompletionSocketPosix.cpp \
    178         PDMAsyncCompletionHostSolaris.cpp
    179 
    180 VMMR3_SOURCES.darwin += \
    181         PDMAsyncCompletionSocketPosix.cpp \
    182         PDMAsyncCompletionHostPosix.cpp
    183 
    184 VMMR3_SOURCES.freebsd += \
    185         PDMAsyncCompletionSocketPosix.cpp \
    186         PDMAsyncCompletionHostFreeBSD.cpp
    187 
     166VMMR3_SOURCES += \
     167        PDMAsyncCompletion.cpp \
     168        PDMAsyncCompletionFile.cpp
    188169endif
    189170
  • trunk/src/VBox/VMM/PDMDriver.cpp

    r20096 r20167  
    10131013/** @copydoc PDMDRVHLP::pfnPDMAsyncCompletionTemplateCreate */
    10141014static DECLCALLBACK(int) pdmR3DrvHlp_PDMAsyncCompletionTemplateCreate(PPDMDRVINS pDrvIns, PPPDMASYNCCOMPLETIONTEMPLATE ppTemplate,
    1015                                                                       PFNPDMASYNCCOMPLETEDRV pfnCompleted, const char *pszDesc)
     1015                                                                      PFNPDMASYNCCOMPLETEDRV pfnCompleted, void *pvTemplateUser,
     1016                                                                      const char *pszDesc)
    10161017{
    10171018    PDMDRV_ASSERT_DRVINS(pDrvIns);
     
    10201021             pDrvIns->pDrvReg->szDriverName, pDrvIns->iInstance, ppTemplate, pfnCompleted, pszDesc, pszDesc));
    10211022
    1022     int rc = PDMR3AsyncCompletionTemplateCreateDriver(pDrvIns->Internal.s.pVM, pDrvIns, ppTemplate, pfnCompleted, pszDesc);
     1023    int rc = PDMR3AsyncCompletionTemplateCreateDriver(pDrvIns->Internal.s.pVM, pDrvIns, ppTemplate, pfnCompleted, pvTemplateUser, pszDesc);
    10231024
    10241025    LogFlow(("pdmR3DrvHlp_PDMAsyncCompletionTemplateCreate: caller='%s'/%d: returns %Rrc *ppThread=%p\n", pDrvIns->pDrvReg->szDriverName,
  • trunk/src/VBox/VMM/PDMInternal.h

    r20056 r20167  
    805805typedef struct PDMASYNCCOMPLETIONTEMPLATE *PPDMASYNCCOMPLETIONTEMPLATE;
    806806
    807 /** Pointer to the main PDM Async completion structure. */
    808 typedef struct PDMASYNCCOMPLETIONMANAGER *PPDMASYNCCOMPLETIONMANAGER;
     807/** Pointer to the main PDM Async completion endpoint class. */
     808typedef struct PDMASYNCCOMPLETIONEPCLASS *PPDMASYNCCOMPLETIONEPCLASS;
    809809
    810810
     
    897897    R3PTRTYPE(PPDMTHREAD)           pThreadsTail;
    898898
    899     /** Head of the asychronous tasks managers. (singly linked) */
    900     R3PTRTYPE(PPDMASYNCCOMPLETIONMANAGER) pAsyncCompletionManagerHead;
     899    /** @name   PDM Async Completion
     900     * @{ */
     901    /** Pointer to the array of supported endpoint classes. */
     902    R3PTRTYPE(PPDMASYNCCOMPLETIONEPCLASS *)  papAsyncCompletionEndpointClass;
    901903    /** Head of the templates. (singly linked) */
    902904    R3PTRTYPE(PPDMASYNCCOMPLETIONTEMPLATE) pAsyncCompletionTemplates;
     905    /** @} */
    903906
    904907    /** @name   VMM device heap
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