VirtualBox

Changeset 13717 in vbox


Ignore:
Timestamp:
Oct 31, 2008 2:31:23 PM (16 years ago)
Author:
vboxsync
Message:

VMM,IPRT: More GC->RC and similar cleanups.

Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/iprt/log.h

    r13580 r13717  
    13581358 *
    13591359 * @param   pLogger             The logger instance to be cloned.
    1360  * @param   pLoggerGC           Where to create the GC logger instance.
    1361  * @param   cbLoggerGC          Amount of memory allocated to for the GC logger instance clone.
    1362  * @param   pfnLoggerGCPtr      Pointer to logger wrapper function for this instance (GC Ptr).
    1363  * @param   pfnFlushGCPtr       Pointer to flush function (GC Ptr).
     1360 * @param   pLoggerRC           Where to create the RC logger instance.
     1361 * @param   cbLoggerRC          Amount of memory allocated to for the RC logger
     1362 *                              instance clone.
     1363 * @param   pfnLoggerRCPtr      Pointer to logger wrapper function for this
     1364 *                              instance (RC Ptr).
     1365 * @param   pfnFlushRCPtr       Pointer to flush function (RC Ptr).
    13641366 * @param   fFlags              Logger instance flags, a combination of the RTLOGFLAGS_* values.
    13651367 */
    1366 RTDECL(int) RTLogCloneRC(PRTLOGGER pLogger, PRTLOGGERRC pLoggerGC, size_t cbLoggerGC,
    1367                          RTRCPTR pfnLoggerGCPtr, RTRCPTR pfnFlushGCPtr, RTUINT fFlags);
    1368 
    1369 /**
    1370  * Flushes a GC logger instance to a HC logger.
     1368RTDECL(int) RTLogCloneRC(PRTLOGGER pLogger, PRTLOGGERRC pLoggerRC, size_t cbLoggerRC,
     1369                         RTRCPTR pfnLoggerRCPtr, RTRCPTR pfnFlushRCPtr, RTUINT fFlags);
     1370
     1371/**
     1372 * Flushes a RC logger instance to a R3 logger.
    13711373 *
    13721374 * @returns iprt status code.
    1373  * @param   pLogger     The HC logger instance to flush pLoggerGC to.
    1374  *                      If NULL the default logger is used.
    1375  * @param   pLoggerGC   The GC logger instance to flush.
    1376  */
    1377 RTDECL(void) RTLogFlushGC(PRTLOGGER pLogger, PRTLOGGERRC pLoggerGC);
     1375 * @param   pLogger     The R3 logger instance to flush pLoggerRC to. If NULL
     1376 *                      the default logger is used.
     1377 * @param   pLoggerRC   The RC logger instance to flush.
     1378 */
     1379RTDECL(void) RTLogFlushRC(PRTLOGGER pLogger, PRTLOGGERRC pLoggerRC);
    13781380
    13791381/**
  • trunk/src/VBox/Runtime/common/log/log.cpp

    r13255 r13717  
    631631 *
    632632 * @param   pLogger             The logger instance to be cloned.
    633  * @param   pLoggerGC           Where to create the GC logger instance.
    634  * @param   cbLoggerGC          Amount of memory allocated to for the GC logger instance clone.
    635  * @param   pfnLoggerGCPtr      Pointer to logger wrapper function for this instance (GC Ptr).
    636  * @param   pfnFlushGCPtr       Pointer to flush function (GC Ptr).
     633 * @param   pLoggerRC           Where to create the RC logger instance.
     634 * @param   cbLoggerRC          Amount of memory allocated to for the RC logger
     635 *                              instance clone.
     636 * @param   pfnLoggerRCPtr      Pointer to logger wrapper function for this
     637 *                              instance (RC Ptr).
     638 * @param   pfnFlushRCPtr       Pointer to flush function (RC Ptr).
    637639 * @param   fFlags              Logger instance flags, a combination of the RTLOGFLAGS_* values.
    638640 */
    639 RTDECL(int) RTLogCloneRC(PRTLOGGER pLogger, PRTLOGGERRC pLoggerGC, size_t cbLoggerGC,
    640                          RTRCPTR pfnLoggerGCPtr, RTRCPTR pfnFlushGCPtr, RTUINT fFlags)
     641RTDECL(int) RTLogCloneRC(PRTLOGGER pLogger, PRTLOGGERRC pLoggerRC, size_t cbLoggerRC,
     642                         RTRCPTR pfnLoggerRCPtr, RTRCPTR pfnFlushRCPtr, RTUINT fFlags)
    641643{
    642644    /*
    643645     * Validate input.
    644646     */
    645    if (    !pLoggerGC
    646        ||  !pfnFlushGCPtr
    647        ||  !pfnLoggerGCPtr)
     647   if (    !pLoggerRC
     648       ||  !pfnFlushRCPtr
     649       ||  !pfnLoggerRCPtr)
    648650    {
    649651       AssertMsgFailed(("Invalid parameters!\n"));
    650652       return VERR_INVALID_PARAMETER;
    651653    }
    652     if (cbLoggerGC < sizeof(*pLoggerGC))
    653     {
    654         AssertMsgFailed(("%d min=%d\n", cbLoggerGC, sizeof(*pLoggerGC)));
     654    if (cbLoggerRC < sizeof(*pLoggerRC))
     655    {
     656        AssertMsgFailed(("%d min=%d\n", cbLoggerRC, sizeof(*pLoggerRC)));
    655657        return VERR_INVALID_PARAMETER;
    656658    }
     
    659661     * Initialize GC instance.
    660662     */
    661     pLoggerGC->offScratch   = 0;
    662     pLoggerGC->fPendingPrefix = false;
    663     pLoggerGC->pfnLogger    = pfnLoggerGCPtr;
    664     pLoggerGC->pfnFlush     = pfnFlushGCPtr;
    665     pLoggerGC->u32Magic     = RTLOGGERRC_MAGIC;
    666     pLoggerGC->fFlags       = fFlags | RTLOGFLAGS_DISABLED;
    667     pLoggerGC->cGroups      = 1;
    668     pLoggerGC->afGroups[0]  = 0;
     663    pLoggerRC->offScratch   = 0;
     664    pLoggerRC->fPendingPrefix = false;
     665    pLoggerRC->pfnLogger    = pfnLoggerRCPtr;
     666    pLoggerRC->pfnFlush     = pfnFlushRCPtr;
     667    pLoggerRC->u32Magic     = RTLOGGERRC_MAGIC;
     668    pLoggerRC->fFlags       = fFlags | RTLOGFLAGS_DISABLED;
     669    pLoggerRC->cGroups      = 1;
     670    pLoggerRC->afGroups[0]  = 0;
    669671
    670672    /*
     
    681683     * Check if there's enough space for the groups.
    682684     */
    683     if (cbLoggerGC < (size_t)RT_OFFSETOF(RTLOGGERRC, afGroups[pLogger->cGroups]))
    684     {
    685         AssertMsgFailed(("%d req=%d cGroups=%d\n", cbLoggerGC, RT_OFFSETOF(RTLOGGERRC, afGroups[pLogger->cGroups]), pLogger->cGroups));
     685    if (cbLoggerRC < (size_t)RT_OFFSETOF(RTLOGGERRC, afGroups[pLogger->cGroups]))
     686    {
     687        AssertMsgFailed(("%d req=%d cGroups=%d\n", cbLoggerRC, RT_OFFSETOF(RTLOGGERRC, afGroups[pLogger->cGroups]), pLogger->cGroups));
    686688        return VERR_INVALID_PARAMETER;
    687689    }
    688     memcpy(&pLoggerGC->afGroups[0], &pLogger->afGroups[0], pLogger->cGroups * sizeof(pLoggerGC->afGroups[0]));
    689     pLoggerGC->cGroups = pLogger->cGroups;
     690    memcpy(&pLoggerRC->afGroups[0], &pLogger->afGroups[0], pLogger->cGroups * sizeof(pLoggerRC->afGroups[0]));
     691    pLoggerRC->cGroups = pLogger->cGroups;
    690692
    691693    /*
    692694     * Copy bits from the HC instance.
    693695     */
    694     pLoggerGC->fPendingPrefix = pLogger->fPendingPrefix;
    695     pLoggerGC->fFlags |= pLogger->fFlags;
     696    pLoggerRC->fPendingPrefix = pLogger->fPendingPrefix;
     697    pLoggerRC->fFlags |= pLogger->fFlags;
    696698
    697699    /*
     
    700702    if (    pLogger->fDestFlags
    701703        &&  !((pLogger->fFlags | fFlags) & RTLOGFLAGS_DISABLED))
    702         pLoggerGC->fFlags &= ~RTLOGFLAGS_DISABLED;
     704        pLoggerRC->fFlags &= ~RTLOGFLAGS_DISABLED;
    703705
    704706    return VINF_SUCCESS;
     
    707709
    708710/**
    709  * Flushes a GC logger instance to a HC logger.
     711 * Flushes a RC logger instance to a R3 logger.
    710712 *
    711713 *
    712714 * @returns iprt status code.
    713  * @param   pLogger     The HC logger instance to flush pLoggerGC to.
    714  *                      If NULL the default logger is used.
    715  * @param   pLoggerGC   The GC logger instance to flush.
    716  */
    717 RTDECL(void) RTLogFlushGC(PRTLOGGER pLogger, PRTLOGGERRC pLoggerGC)
     715 * @param   pLogger     The R3 logger instance to flush pLoggerRC to. If NULL
     716 *                      the default logger is used.
     717 * @param   pLoggerRC   The RC logger instance to flush.
     718 */
     719RTDECL(void) RTLogFlushRC(PRTLOGGER pLogger, PRTLOGGERRC pLoggerRC)
    718720{
    719721    /*
     
    725727        if (!pLogger)
    726728        {
    727             pLoggerGC->offScratch = 0;
     729            pLoggerRC->offScratch = 0;
    728730            return;
    729731        }
     
    734736     */
    735737    if (    pLogger->offScratch
    736         ||  pLoggerGC->offScratch)
     738        ||  pLoggerRC->offScratch)
    737739    {
    738740        /*
     
    747749         * flush the HC instance.
    748750         */
    749         if (pLoggerGC->offScratch)
    750         {
    751             rtLogOutput(pLogger, pLoggerGC->achScratch, pLoggerGC->offScratch);
     751        if (pLoggerRC->offScratch)
     752        {
     753            rtLogOutput(pLogger, pLoggerRC->achScratch, pLoggerRC->offScratch);
    752754            rtLogOutput(pLogger, NULL, 0);
    753             pLoggerGC->offScratch = 0;
     755            pLoggerRC->offScratch = 0;
    754756        }
    755757
  • trunk/src/VBox/VMM/VMM.cpp

    r13714 r13717  
    586586#ifdef VBOX_WITH_NMI
    587587    /*
    588      * Map the host APIC into GC - This may be host os specific!
     588     * Map the host APIC into GC - This is AMD/Intel + Host OS specific!
    589589     */
    590590    if (VBOX_SUCCESS(rc))
     
    657657VMMR3DECL(int) VMMR3InitRC(PVM pVM)
    658658{
    659     /* In VMX mode, there's no need to init GC. */
     659    /* In VMX mode, there's no need to init RC. */
    660660    if (pVM->vmm.s.fSwitcherDisabled)
    661661        return VINF_SUCCESS;
     
    678678        CPUMPushHyper(pVM, VMMGetSvnRev());             /* Param 2: Version argument. */
    679679        CPUMPushHyper(pVM, VMMGC_DO_VMMGC_INIT);        /* Param 1: Operation. */
    680         CPUMPushHyper(pVM, pVM->pVMGC);                 /* Param 0: pVM */
     680        CPUMPushHyper(pVM, pVM->pVMRC);                 /* Param 0: pVM */
    681681        CPUMPushHyper(pVM, 3 * sizeof(RTGCPTR32));      /* trampoline param: stacksize.  */
    682682        CPUMPushHyper(pVM, GCPtrEP);                    /* Call EIP. */
     
    695695            if (    pLogger
    696696                &&  pLogger->offScratch > 0)
    697                 RTLogFlushGC(NULL, pLogger);
     697                RTLogFlushRC(NULL, pLogger);
    698698#endif
    699699#ifdef VBOX_WITH_RC_RELEASE_LOGGING
    700700            PRTLOGGERRC pRelLogger = pVM->vmm.s.pRCRelLoggerR3;
    701701            if (RT_UNLIKELY(pRelLogger && pRelLogger->offScratch > 0))
    702                 RTLogFlushGC(RTLogRelDefaultInstance(), pRelLogger);
     702                RTLogFlushRC(RTLogRelDefaultInstance(), pRelLogger);
    703703#endif
    704704            if (rc != VINF_VMM_CALL_HOST)
     
    784784
    785785    /*
    786      * Recalc the GC address.
     786     * Recalc the RC address.
    787787     */
    788788    pVM->vmm.s.pvCoreCodeRC = MMHyperR3ToRC(pVM, pVM->vmm.s.pvCoreCodeR3);
     
    806806            pSwitcher->pfnRelocate(pVM,
    807807                                   pSwitcher,
    808                                    (uint8_t *)pVM->vmm.s.pvCoreCodeR0 + off,
     808                                   pVM->vmm.s.pvCoreCodeR0 + off,
    809809                                   (uint8_t *)pVM->vmm.s.pvCoreCodeR3 + off,
    810810                                   pVM->vmm.s.pvCoreCodeRC + off,
     
    814814
    815815    /*
    816      * Recalc the GC address for the current switcher.
     816     * Recalc the RC address for the current switcher.
    817817     */
    818818    PVMMSWITCHERDEF pSwitcher   = s_apSwitchers[pVM->vmm.s.enmSwitcher];
    819     RTGCPTR         GCPtr       = pVM->vmm.s.pvCoreCodeRC + pVM->vmm.s.aoffSwitchers[pVM->vmm.s.enmSwitcher];
    820     pVM->vmm.s.pfnGuestToHostRC         = GCPtr + pSwitcher->offGCGuestToHost;
    821     pVM->vmm.s.pfnCallTrampolineRC      = GCPtr + pSwitcher->offGCCallTrampoline;
    822     pVM->pfnVMMGCGuestToHostAsm         = GCPtr + pSwitcher->offGCGuestToHostAsm;
    823     pVM->pfnVMMGCGuestToHostAsmHyperCtx = GCPtr + pSwitcher->offGCGuestToHostAsmHyperCtx;
    824     pVM->pfnVMMGCGuestToHostAsmGuestCtx = GCPtr + pSwitcher->offGCGuestToHostAsmGuestCtx;
    825 
    826     /*
    827      * Get other GC entry points.
     819    RTRCPTR         RCPtr       = pVM->vmm.s.pvCoreCodeRC + pVM->vmm.s.aoffSwitchers[pVM->vmm.s.enmSwitcher];
     820    pVM->vmm.s.pfnGuestToHostRC         = RCPtr + pSwitcher->offGCGuestToHost;
     821    pVM->vmm.s.pfnCallTrampolineRC      = RCPtr + pSwitcher->offGCCallTrampoline;
     822    pVM->pfnVMMGCGuestToHostAsm         = RCPtr + pSwitcher->offGCGuestToHostAsm;
     823    pVM->pfnVMMGCGuestToHostAsmHyperCtx = RCPtr + pSwitcher->offGCGuestToHostAsmHyperCtx;
     824    pVM->pfnVMMGCGuestToHostAsmGuestCtx = RCPtr + pSwitcher->offGCGuestToHostAsmGuestCtx;
     825
     826    /*
     827     * Get other RC entry points.
    828828     */
    829829    int rc = PDMR3LdrGetSymbolRC(pVM, VMMGC_MAIN_MODULE_NAME, "CPUMGCResumeGuest", &pVM->vmm.s.pfnCPUMRCResumeGuest);
     
    841841
    842842/**
    843  * Updates the settings for the GC and R0 loggers.
     843 * Updates the settings for the RC and R0 loggers.
    844844 *
    845845 * @returns VBox status code.
     
    849849{
    850850    /*
    851      * Simply clone the logger instance (for GC).
     851     * Simply clone the logger instance (for RC).
    852852     */
    853853    int rc = VINF_SUCCESS;
     
    869869        rc = PDMR3LdrGetSymbolRC(pVM, VMMGC_MAIN_MODULE_NAME, "vmmGCLoggerWrapper", &RCPtrLoggerWrapper);
    870870        AssertReleaseMsgRC(rc, ("vmmGCLoggerWrapper not found! rc=%Vra\n", rc));
     871
    871872        pVM->vmm.s.pRCLoggerRC = MMHyperR3ToRC(pVM, pVM->vmm.s.pRCLoggerR3);
    872873        rc = RTLogCloneRC(NULL /* default */, pVM->vmm.s.pRCLoggerR3, pVM->vmm.s.cbRCLogger,
    873874                          RCPtrLoggerWrapper,  RCPtrLoggerFlush, RTLOGFLAGS_BUFFERED);
    874         AssertReleaseMsgRC(rc, ("RTLogCloneGC failed! rc=%Vra\n", rc));
     875        AssertReleaseMsgRC(rc, ("RTLogCloneRC failed! rc=%Vra\n", rc));
    875876    }
    876877
     
    881882        rc = PDMR3LdrGetSymbolRC(pVM, VMMGC_MAIN_MODULE_NAME, "vmmGCRelLoggerWrapper", &RCPtrLoggerWrapper);
    882883        AssertReleaseMsgRC(rc, ("vmmGCRelLoggerWrapper not found! rc=%Vra\n", rc));
     884
    883885        pVM->vmm.s.pRCRelLoggerRC = MMHyperR3ToRC(pVM, pVM->vmm.s.pRCRelLoggerR3);
    884886        rc = RTLogCloneRC(RTLogRelDefaultInstance(), pVM->vmm.s.pRCRelLoggerR3, pVM->vmm.s.cbRCRelLogger,
    885887                          RCPtrLoggerWrapper,  RCPtrLoggerFlush, RTLOGFLAGS_BUFFERED);
    886         AssertReleaseMsgRC(rc, ("RTLogCloneGC failed! rc=%Vra\n", rc));
     888        AssertReleaseMsgRC(rc, ("RTLogCloneRC failed! rc=%Vra\n", rc));
    887889    }
    888890#endif /* VBOX_WITH_RC_RELEASE_LOGGING */
     
    908910                                  *(PFNRTLOGGER *)&pfnLoggerWrapper, *(PFNRTLOGFLUSH *)&pfnLoggerFlush,
    909911                                  RTLOGFLAGS_BUFFERED, RTLOGDEST_DUMMY);
    910             AssertReleaseMsgRCReturn(rc, ("RTLogCloneGC failed! rc=%Vra\n", rc), rc);
     912            AssertReleaseMsgRCReturn(rc, ("RTLogCreateForR0 failed! rc=%Vra\n", rc), rc);
    911913            pR0LoggerR3->fCreated = true;
    912914        }
     
    926928 * @param   pSwitcher   The switcher definition.
    927929 * @param   pu8CodeR3   Pointer to the core code block for the switcher, ring-3 mapping.
    928  * @param   pu8CodeR0   Pointer to the core code block for the switcher, ring-0 mapping.
     930 * @param   R0PtrCode   Pointer to the core code block for the switcher, ring-0 mapping.
    929931 * @param   GCPtrCode   The guest context address corresponding to pu8Code.
    930932 * @param   u32IDCode   The identity mapped (ID) address corresponding to pu8Code.
     
    935937 * @param   SelCS64     The 64-bit mode hypervisor CS selector.
    936938 */
    937 static void vmmR3SwitcherGenericRelocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, uint8_t *pu8CodeR0, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IDCode,
     939static void vmmR3SwitcherGenericRelocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, RTR0PTR R0PtrCode, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IDCode,
    938940                                         RTSEL SelCS, RTSEL SelDS, RTSEL SelTSS, RTGCPTR GCPtrGDT, RTSEL SelCS64)
    939941{
     
    993995                uint32_t offTrg = *u.pu32++;
    994996                Assert(offTrg - pSwitcher->offIDCode0 < pSwitcher->cbIDCode0 || offTrg - pSwitcher->offIDCode1 < pSwitcher->cbIDCode1);
    995                 *uSrc.pu32 = (uint32_t)((u32IDCode + offTrg) - ((uintptr_t)pu8CodeR0 + offSrc + 4));
     997                *uSrc.pu32 = (uint32_t)((u32IDCode + offTrg) - (R0PtrCode + offSrc + 4));
    996998                break;
    997999            }
     
    10051007                uint32_t offTrg = *u.pu32++;
    10061008                Assert(offTrg - pSwitcher->offHCCode0 < pSwitcher->cbHCCode0 || offTrg - pSwitcher->offHCCode1 < pSwitcher->cbHCCode1);
    1007                 *uSrc.pu32 = (uint32_t)(((uintptr_t)pu8CodeR0 + offTrg) - (GCPtrCode + offSrc + 4));
     1009                *uSrc.pu32 = (uint32_t)((R0PtrCode + offTrg) - (GCPtrCode + offSrc + 4));
    10081010                break;
    10091011            }
     
    10291031                uint32_t offTrg = *u.pu32++;
    10301032                Assert(offTrg - pSwitcher->offHCCode0 < pSwitcher->cbHCCode0 || offTrg - pSwitcher->offHCCode1 < pSwitcher->cbHCCode1);
    1031                 *uSrc.pu32 = (uint32_t)(((uintptr_t)pu8CodeR0 + offTrg) - (u32IDCode + offSrc + 4));
     1033                *uSrc.pu32 = (uint32_t)((R0PtrCode + offTrg) - (u32IDCode + offSrc + 4));
    10321034                break;
    10331035            }
     
    12701272                Assert(offSrc < pSwitcher->cbCode);
    12711273                Assert(offTrg - pSwitcher->offHCCode0 < pSwitcher->cbHCCode0 || offTrg - pSwitcher->offHCCode1 < pSwitcher->cbHCCode1);
    1272                 *uSrc.pu32 = (uintptr_t)pu8CodeR0 + offTrg;
     1274                *uSrc.pu32 = R0PtrCode + offTrg;
    12731275                break;
    12741276            }
     
    12831285                Assert(offSrc < pSwitcher->cbCode);
    12841286                Assert(offTrg - pSwitcher->offHCCode0 < pSwitcher->cbHCCode0 || offTrg - pSwitcher->offHCCode1 < pSwitcher->cbHCCode1);
    1285                 *uSrc.pu64 = (uintptr_t)pu8CodeR0 + offTrg;
     1287                *uSrc.pu64 = R0PtrCode + offTrg;
    12861288                break;
    12871289            }
     
    13761378    {
    13771379        RTLogPrintf("*** Disassembly of switcher %d '%s' %#x bytes ***\n"
    1378                     "   pu8CodeR0   = %p\n"
     1380                    "   R0PtrCode   = %p\n"
    13791381                    "   pu8CodeR3   = %p\n"
    13801382                    "   GCPtrCode   = %VGv\n"
     
    13921394                    "   SelTSS      = %04x\n",
    13931395                    pSwitcher->enmType, pSwitcher->pszDesc, pSwitcher->cbCode,
    1394                     pu8CodeR0, pu8CodeR3, GCPtrCode, u32IDCode, VM_GUEST_ADDR(pVM, pVM),
     1396                    R0PtrCode, pu8CodeR3, GCPtrCode, u32IDCode, VM_GUEST_ADDR(pVM, pVM),
    13951397                    VM_GUEST_ADDR(pVM, &pVM->cpum), pVM, &pVM->cpum,
    13961398                    GCPtrGDT,
     
    14111413            {
    14121414                pszDesc = "HCCode0";
    1413                 uBase   = (RTUINTPTR)pu8CodeR0;
     1415                uBase   = R0PtrCode;
    14141416                offCode = pSwitcher->offHCCode0;
    14151417                cbCode  = pSwitcher->cbHCCode0;
     
    14181420            {
    14191421                pszDesc = "HCCode1";
    1420                 uBase   = (RTUINTPTR)pu8CodeR0;
     1422                uBase   = R0PtrCode;
    14211423                offCode = pSwitcher->offHCCode1;
    14221424                cbCode  = pSwitcher->cbHCCode1;
     
    14981500 * Relocator for the 32-Bit to 32-Bit world switcher.
    14991501 */
    1500 DECLCALLBACK(void) vmmR3Switcher32BitTo32Bit_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, uint8_t *pu8CodeR0, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IDCode)
    1501 {
    1502     vmmR3SwitcherGenericRelocate(pVM, pSwitcher, pu8CodeR0, pu8CodeR3, GCPtrCode, u32IDCode,
     1502DECLCALLBACK(void) vmmR3Switcher32BitTo32Bit_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, RTR0PTR R0PtrCode, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IDCode)
     1503{
     1504    vmmR3SwitcherGenericRelocate(pVM, pSwitcher, R0PtrCode, pu8CodeR3, GCPtrCode, u32IDCode,
    15031505                                 SELMGetHyperCS(pVM), SELMGetHyperDS(pVM), SELMGetHyperTSS(pVM), SELMGetHyperGDT(pVM), 0);
    15041506}
     
    15081510 * Relocator for the 32-Bit to PAE world switcher.
    15091511 */
    1510 DECLCALLBACK(void) vmmR3Switcher32BitToPAE_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, uint8_t *pu8CodeR0, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IDCode)
    1511 {
    1512     vmmR3SwitcherGenericRelocate(pVM, pSwitcher, pu8CodeR0, pu8CodeR3, GCPtrCode, u32IDCode,
     1512DECLCALLBACK(void) vmmR3Switcher32BitToPAE_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, RTR0PTR R0PtrCode, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IDCode)
     1513{
     1514    vmmR3SwitcherGenericRelocate(pVM, pSwitcher, R0PtrCode, pu8CodeR3, GCPtrCode, u32IDCode,
    15131515                                 SELMGetHyperCS(pVM), SELMGetHyperDS(pVM), SELMGetHyperTSS(pVM), SELMGetHyperGDT(pVM), 0);
    15141516}
     
    15181520 * Relocator for the PAE to 32-Bit world switcher.
    15191521 */
    1520 DECLCALLBACK(void) vmmR3SwitcherPAETo32Bit_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, uint8_t *pu8CodeR0, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IDCode)
    1521 {
    1522     vmmR3SwitcherGenericRelocate(pVM, pSwitcher, pu8CodeR0, pu8CodeR3, GCPtrCode, u32IDCode,
     1522DECLCALLBACK(void) vmmR3SwitcherPAETo32Bit_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, RTR0PTR R0PtrCode, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IDCode)
     1523{
     1524    vmmR3SwitcherGenericRelocate(pVM, pSwitcher, R0PtrCode, pu8CodeR3, GCPtrCode, u32IDCode,
    15231525                                 SELMGetHyperCS(pVM), SELMGetHyperDS(pVM), SELMGetHyperTSS(pVM), SELMGetHyperGDT(pVM), 0);
    15241526}
     
    15281530 * Relocator for the PAE to PAE world switcher.
    15291531 */
    1530 DECLCALLBACK(void) vmmR3SwitcherPAEToPAE_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, uint8_t *pu8CodeR0, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IDCode)
    1531 {
    1532     vmmR3SwitcherGenericRelocate(pVM, pSwitcher, pu8CodeR0, pu8CodeR3, GCPtrCode, u32IDCode,
     1532DECLCALLBACK(void) vmmR3SwitcherPAEToPAE_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, RTR0PTR R0PtrCode, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IDCode)
     1533{
     1534    vmmR3SwitcherGenericRelocate(pVM, pSwitcher, R0PtrCode, pu8CodeR3, GCPtrCode, u32IDCode,
    15331535                                 SELMGetHyperCS(pVM), SELMGetHyperDS(pVM), SELMGetHyperTSS(pVM), SELMGetHyperGDT(pVM), 0);
    15341536}
     
    15381540 * Relocator for the AMD64 to PAE world switcher.
    15391541 */
    1540 DECLCALLBACK(void) vmmR3SwitcherAMD64ToPAE_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, uint8_t *pu8CodeR0, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IDCode)
    1541 {
    1542     vmmR3SwitcherGenericRelocate(pVM, pSwitcher, pu8CodeR0, pu8CodeR3, GCPtrCode, u32IDCode,
     1542DECLCALLBACK(void) vmmR3SwitcherAMD64ToPAE_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, RTR0PTR R0PtrCode, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IDCode)
     1543{
     1544    vmmR3SwitcherGenericRelocate(pVM, pSwitcher, R0PtrCode, pu8CodeR3, GCPtrCode, u32IDCode,
    15431545                                 SELMGetHyperCS(pVM), SELMGetHyperDS(pVM), SELMGetHyperTSS(pVM), SELMGetHyperGDT(pVM), SELMGetHyperCS64(pVM));
    15441546}
     
    18511853 * @returns VBox status code
    18521854 * @param   pVM         The VM to operate on.
     1855 *
     1856 * @remarks The global VMM lock isn't really used for anything any longer.
    18531857 */
    18541858VMMR3DECL(int) VMMR3Lock(PVM pVM)
     
    18631867 * @returns VBox status code
    18641868 * @param   pVM         The VM to operate on.
     1869 *
     1870 * @remarks The global VMM lock isn't really used for anything any longer.
    18651871 */
    18661872VMMR3DECL(int) VMMR3Unlock(PVM pVM)
     
    18761882 * @returns NIL_RTTHREAD if no owner.
    18771883 * @param   pVM         The VM to operate on.
     1884 *
     1885 * @remarks The global VMM lock isn't really used for anything any longer.
    18781886 */
    18791887VMMR3DECL(RTNATIVETHREAD) VMMR3LockGetOwner(PVM pVM)
     
    18891897 * @returns false if not owner.
    18901898 * @param   pVM         The VM to operate on.
     1899 *
     1900 * @remarks The global VMM lock isn't really used for anything any longer.
    18911901 */
    18921902VMMR3DECL(bool) VMMR3LockIsOwner(PVM pVM)
     
    18971907
    18981908/**
    1899  * Executes guest code.
     1909 * Executes guest code in the raw-mode context.
    19001910 *
    19011911 * @param   pVM         VM handle.
     
    19371947        if (    pLogger
    19381948            &&  pLogger->offScratch > 0)
    1939             RTLogFlushGC(NULL, pLogger);
     1949            RTLogFlushRC(NULL, pLogger);
    19401950#endif
    19411951#ifdef VBOX_WITH_RC_RELEASE_LOGGING
    19421952        PRTLOGGERRC pRelLogger = pVM->vmm.s.pRCRelLoggerR3;
    19431953        if (RT_UNLIKELY(pRelLogger && pRelLogger->offScratch > 0))
    1944             RTLogFlushGC(RTLogRelDefaultInstance(), pRelLogger);
     1954            RTLogFlushRC(RTLogRelDefaultInstance(), pRelLogger);
    19451955#endif
    19461956        if (rc != VINF_VMM_CALL_HOST)
     
    20702080        if (    pLogger
    20712081            &&  pLogger->offScratch > 0)
    2072             RTLogFlushGC(NULL, pLogger);
     2082            RTLogFlushRC(NULL, pLogger);
    20732083#endif
    20742084#ifdef VBOX_WITH_RC_RELEASE_LOGGING
    20752085        PRTLOGGERRC pRelLogger = pVM->vmm.s.pRCRelLoggerR3;
    20762086        if (RT_UNLIKELY(pRelLogger && pRelLogger->offScratch > 0))
    2077             RTLogFlushGC(RTLogRelDefaultInstance(), pRelLogger);
     2087            RTLogFlushRC(RTLogRelDefaultInstance(), pRelLogger);
    20782088#endif
    20792089        if (rc == VERR_TRPM_PANIC || rc == VERR_TRPM_DONT_PANIC)
     
    21262136        if (    pLogger
    21272137            &&  pLogger->offScratch > 0)
    2128             RTLogFlushGC(NULL, pLogger);
     2138            RTLogFlushRC(NULL, pLogger);
    21292139#endif
    21302140#ifdef VBOX_WITH_RC_RELEASE_LOGGING
    21312141        PRTLOGGERRC pRelLogger = pVM->vmm.s.pRCRelLoggerR3;
    21322142        if (RT_UNLIKELY(pRelLogger && pRelLogger->offScratch > 0))
    2133             RTLogFlushGC(RTLogRelDefaultInstance(), pRelLogger);
     2143            RTLogFlushRC(RTLogRelDefaultInstance(), pRelLogger);
    21342144#endif
    21352145        if (rc == VERR_TRPM_PANIC || rc == VERR_TRPM_DONT_PANIC)
  • trunk/src/VBox/VMM/VMMSwitcher/VMMSwitcher.h

    r8155 r13717  
    7575 * @param   pVM         VM handle.
    7676 * @param   pSwitcher   Pointer to the switcher structure.
    77  * @param   pu8CodeR0   Pointer to the first code byte in the ring-0 mapping.
     77 * @param   R0PtrCode   Pointer to the first code byte in the ring-0 mapping.
    7878 * @param   pu8CodeR3   Pointer to the first code byte in the ring-3 mapping.
    7979 * @param   GCPtrCode   The GC address of the first code byte.
    8080 * @param   u32IDCode   The address of the identity mapped code (first byte).
    8181 */
    82 typedef DECLCALLBACK(void) FNVMMSWITCHERRELOCATE(PVM pVM, PVMMSWITCHERDEF pSwitcher, uint8_t *pu8CodeR0, uint8_t *pu8CodeR3,
     82typedef DECLCALLBACK(void) FNVMMSWITCHERRELOCATE(PVM pVM, PVMMSWITCHERDEF pSwitcher, RTR0PTR R0PtrCode, uint8_t *pu8CodeR3,
    8383                                                 RTGCPTR GCPtrCode, uint32_t u32IDCode);
    8484/** Pointer to a FNVMMSWITCHERRELOCATE(). */
     
    141141extern VMMSWITCHERDEF vmmR3SwitcherAMD64ToAMD64_Def;
    142142
    143 extern DECLCALLBACK(void) vmmR3Switcher32BitTo32Bit_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, uint8_t *pu8CodeR0, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IdCode);
    144 extern DECLCALLBACK(void) vmmR3Switcher32BitToPAE_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, uint8_t *pu8CodeR0, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IdCode);
    145 extern DECLCALLBACK(void) vmmR3Switcher32BitToAMD64_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, uint8_t *pu8CodeR0, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IdCode);
    146 extern DECLCALLBACK(void) vmmR3SwitcherPAETo32Bit_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, uint8_t *pu8CodeR0, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IdCode);
    147 extern DECLCALLBACK(void) vmmR3SwitcherPAEToPAE_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, uint8_t *pu8CodeR0, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IdCode);
    148 extern DECLCALLBACK(void) vmmR3SwitcherPAEToAMD64_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, uint8_t *pu8CodeR0, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IdCode);
    149 extern DECLCALLBACK(void) vmmR3SwitcherAMD64ToPAE_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, uint8_t *pu8CodeR0, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IdCode);
    150 extern DECLCALLBACK(void) vmmR3SwitcherAMD64ToAMD64_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, uint8_t *pu8CodeR0, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IdCode);
     143extern DECLCALLBACK(void) vmmR3Switcher32BitTo32Bit_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, RTR0PTR R0PtrCode, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IdCode);
     144extern DECLCALLBACK(void) vmmR3Switcher32BitToPAE_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, RTR0PTR R0PtrCode, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IdCode);
     145extern DECLCALLBACK(void) vmmR3Switcher32BitToAMD64_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, RTR0PTR R0PtrCode, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IdCode);
     146extern DECLCALLBACK(void) vmmR3SwitcherPAETo32Bit_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, RTR0PTR R0PtrCode, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IdCode);
     147extern DECLCALLBACK(void) vmmR3SwitcherPAEToPAE_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, RTR0PTR R0PtrCode, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IdCode);
     148extern DECLCALLBACK(void) vmmR3SwitcherPAEToAMD64_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, RTR0PTR R0PtrCode, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IdCode);
     149extern DECLCALLBACK(void) vmmR3SwitcherAMD64ToPAE_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, RTR0PTR R0PtrCode, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IdCode);
     150extern DECLCALLBACK(void) vmmR3SwitcherAMD64ToAMD64_Relocate(PVM pVM, PVMMSWITCHERDEF pSwitcher, RTR0PTR R0PtrCode, uint8_t *pu8CodeR3, RTGCPTR GCPtrCode, uint32_t u32IdCode);
    151151__END_DECLS
    152152
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