VirtualBox

Changeset 13717

Show
Ignore:
Timestamp:
10/31/08 15:31:23 (2 months ago)
Author:
vboxsync
Message:

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

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • 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 (    !pLoggerG
    646        ||  !pfnFlushGCPtr 
    647        ||  !pfnLoggerGCPtr) 
     647   if (    !pLoggerR
     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 

© 2008 Sun Microsystems, Inc.
ContactPrivacy policy