VirtualBox

Changeset 67992 in vbox


Ignore:
Timestamp:
Jul 17, 2017 12:46:33 PM (7 years ago)
Author:
vboxsync
Message:

GVMMR0: build fix and GVMMR0ValidateGVMandVMandEMT.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/vmm/gvmm.h

    r67991 r67992  
    169169GVMMR0DECL(int)     GVMMR0ByVM(PVM pVM, PGVM *ppGVM);
    170170GVMMR0DECL(int)     GVMMR0ByVMAndEMT(PVM pVM, VMCPUID idCpu, PGVM *ppGVM);
     171GVMMR0DECL(int)     GVMMR0ValidateGVMandVMandEMT(PGVM pGVM, PVM pVM, VMCPUID idCpu);
    171172GVMMR0DECL(PVM)     GVMMR0GetVMByHandle(uint32_t hGVM);
    172173GVMMR0DECL(PVM)     GVMMR0GetVMByEMT(RTNATIVETHREAD hEMT);
  • trunk/src/VBox/VMM/VMMR0/GVMMR0.cpp

    r67991 r67992  
    18811881}
    18821882
     1883
     1884/**
     1885 * Validates a GVM/VM/EMT combo.
     1886 *
     1887 * @returns VBox status code.
     1888 * @param   pGVM        The global (ring-0) VM structure.
     1889 * @param   pVM         The cross context VM structure.
     1890 * @param   idCpu       The Virtual CPU ID of the calling EMT.
     1891 * @thread  EMT(idCpu)
     1892 */
     1893GVMMR0DECL(int) GVMMR0ValidateGVMandVMandEMT(PGVM pGVM, PVM pVM, VMCPUID idCpu)
     1894{
     1895    PGVMM pGVMM;
     1896    return gvmmR0ByGVMandVMandEMT(pGVM, pVM, idCpu, &pGVMM);
     1897}
     1898
     1899
    18831900/**
    18841901 * Lookup a GVM structure by the shared VM structure
     
    18891906 * @param   idCpu       The Virtual CPU ID of the calling EMT.
    18901907 * @param   ppGVM       Where to store the GVM pointer.
    1891  * @thread  EMT
     1908 * @thread  EMT(idCpu)
    18921909 */
    18931910GVMMR0DECL(int) GVMMR0ByVMAndEMT(PVM pVM, VMCPUID idCpu, PGVM *ppGVM)
     
    28462863         i = pGVMM->aHandles[i].iNext)
    28472864    {
    2848         PGVM pGVM = pGVMM->aHandles[i].pGVM;
     2865        PGVM pOtherGVM = pGVMM->aHandles[i].pGVM;
    28492866        void *pvObj = pGVMM->aHandles[i].pvObj;
    28502867        if (    VALID_PTR(pvObj)
    2851             &&  VALID_PTR(pGVM)
    2852             &&  pGVM->u32Magic == GVM_MAGIC
     2868            &&  VALID_PTR(pOtherGVM)
     2869            &&  pOtherGVM->u32Magic == GVM_MAGIC
    28532870            &&  RT_SUCCESS(SUPR0ObjVerifyAccess(pvObj, pSession, NULL)))
    28542871        {
    28552872            pStats->cVMs++;
    2856             pStats->cEMTs += pGVM->cCpus;
    2857 
    2858             pStats->SchedSum.cHaltCalls        += pGVM->gvmm.s.StatsSched.cHaltCalls;
    2859             pStats->SchedSum.cHaltBlocking     += pGVM->gvmm.s.StatsSched.cHaltBlocking;
    2860             pStats->SchedSum.cHaltTimeouts     += pGVM->gvmm.s.StatsSched.cHaltTimeouts;
    2861             pStats->SchedSum.cHaltNotBlocking  += pGVM->gvmm.s.StatsSched.cHaltNotBlocking;
    2862             pStats->SchedSum.cHaltWakeUps      += pGVM->gvmm.s.StatsSched.cHaltWakeUps;
    2863 
    2864             pStats->SchedSum.cWakeUpCalls      += pGVM->gvmm.s.StatsSched.cWakeUpCalls;
    2865             pStats->SchedSum.cWakeUpNotHalted  += pGVM->gvmm.s.StatsSched.cWakeUpNotHalted;
    2866             pStats->SchedSum.cWakeUpWakeUps    += pGVM->gvmm.s.StatsSched.cWakeUpWakeUps;
    2867 
    2868             pStats->SchedSum.cPokeCalls        += pGVM->gvmm.s.StatsSched.cPokeCalls;
    2869             pStats->SchedSum.cPokeNotBusy      += pGVM->gvmm.s.StatsSched.cPokeNotBusy;
    2870 
    2871             pStats->SchedSum.cPollCalls        += pGVM->gvmm.s.StatsSched.cPollCalls;
    2872             pStats->SchedSum.cPollHalts        += pGVM->gvmm.s.StatsSched.cPollHalts;
    2873             pStats->SchedSum.cPollWakeUps      += pGVM->gvmm.s.StatsSched.cPollWakeUps;
     2873            pStats->cEMTs += pOtherGVM->cCpus;
     2874
     2875            pStats->SchedSum.cHaltCalls        += pOtherGVM->gvmm.s.StatsSched.cHaltCalls;
     2876            pStats->SchedSum.cHaltBlocking     += pOtherGVM->gvmm.s.StatsSched.cHaltBlocking;
     2877            pStats->SchedSum.cHaltTimeouts     += pOtherGVM->gvmm.s.StatsSched.cHaltTimeouts;
     2878            pStats->SchedSum.cHaltNotBlocking  += pOtherGVM->gvmm.s.StatsSched.cHaltNotBlocking;
     2879            pStats->SchedSum.cHaltWakeUps      += pOtherGVM->gvmm.s.StatsSched.cHaltWakeUps;
     2880
     2881            pStats->SchedSum.cWakeUpCalls      += pOtherGVM->gvmm.s.StatsSched.cWakeUpCalls;
     2882            pStats->SchedSum.cWakeUpNotHalted  += pOtherGVM->gvmm.s.StatsSched.cWakeUpNotHalted;
     2883            pStats->SchedSum.cWakeUpWakeUps    += pOtherGVM->gvmm.s.StatsSched.cWakeUpWakeUps;
     2884
     2885            pStats->SchedSum.cPokeCalls        += pOtherGVM->gvmm.s.StatsSched.cPokeCalls;
     2886            pStats->SchedSum.cPokeNotBusy      += pOtherGVM->gvmm.s.StatsSched.cPokeNotBusy;
     2887
     2888            pStats->SchedSum.cPollCalls        += pOtherGVM->gvmm.s.StatsSched.cPollCalls;
     2889            pStats->SchedSum.cPollHalts        += pOtherGVM->gvmm.s.StatsSched.cPollHalts;
     2890            pStats->SchedSum.cPollWakeUps      += pOtherGVM->gvmm.s.StatsSched.cPollWakeUps;
    28742891        }
    28752892    }
     
    29953012             i = pGVMM->aHandles[i].iNext)
    29963013        {
    2997             PGVM pGVM = pGVMM->aHandles[i].pGVM;
     3014            PGVM pOtherGVM = pGVMM->aHandles[i].pGVM;
    29983015            void *pvObj = pGVMM->aHandles[i].pvObj;
    29993016            if (    VALID_PTR(pvObj)
    3000                 &&  VALID_PTR(pGVM)
    3001                 &&  pGVM->u32Magic == GVM_MAGIC
     3017                &&  VALID_PTR(pOtherGVM)
     3018                &&  pOtherGVM->u32Magic == GVM_MAGIC
    30023019                &&  RT_SUCCESS(SUPR0ObjVerifyAccess(pvObj, pSession, NULL)))
    30033020            {
    30043021#               define MAYBE_RESET_FIELD(field) \
    3005                     do { if (pStats->SchedSum. field ) { pGVM->gvmm.s.StatsSched. field = 0; } } while (0)
     3022                    do { if (pStats->SchedSum. field ) { pOtherGVM->gvmm.s.StatsSched. field = 0; } } while (0)
    30063023                MAYBE_RESET_FIELD(cHaltCalls);
    30073024                MAYBE_RESET_FIELD(cHaltBlocking);
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