Changeset 67992 in vbox
- Timestamp:
- Jul 17, 2017 12:46:33 PM (7 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
-
include/VBox/vmm/gvmm.h (modified) (1 diff)
-
src/VBox/VMM/VMMR0/GVMMR0.cpp (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/vmm/gvmm.h
r67991 r67992 169 169 GVMMR0DECL(int) GVMMR0ByVM(PVM pVM, PGVM *ppGVM); 170 170 GVMMR0DECL(int) GVMMR0ByVMAndEMT(PVM pVM, VMCPUID idCpu, PGVM *ppGVM); 171 GVMMR0DECL(int) GVMMR0ValidateGVMandVMandEMT(PGVM pGVM, PVM pVM, VMCPUID idCpu); 171 172 GVMMR0DECL(PVM) GVMMR0GetVMByHandle(uint32_t hGVM); 172 173 GVMMR0DECL(PVM) GVMMR0GetVMByEMT(RTNATIVETHREAD hEMT); -
trunk/src/VBox/VMM/VMMR0/GVMMR0.cpp
r67991 r67992 1881 1881 } 1882 1882 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 */ 1893 GVMMR0DECL(int) GVMMR0ValidateGVMandVMandEMT(PGVM pGVM, PVM pVM, VMCPUID idCpu) 1894 { 1895 PGVMM pGVMM; 1896 return gvmmR0ByGVMandVMandEMT(pGVM, pVM, idCpu, &pGVMM); 1897 } 1898 1899 1883 1900 /** 1884 1901 * Lookup a GVM structure by the shared VM structure … … 1889 1906 * @param idCpu The Virtual CPU ID of the calling EMT. 1890 1907 * @param ppGVM Where to store the GVM pointer. 1891 * @thread EMT 1908 * @thread EMT(idCpu) 1892 1909 */ 1893 1910 GVMMR0DECL(int) GVMMR0ByVMAndEMT(PVM pVM, VMCPUID idCpu, PGVM *ppGVM) … … 2846 2863 i = pGVMM->aHandles[i].iNext) 2847 2864 { 2848 PGVM p GVM = pGVMM->aHandles[i].pGVM;2865 PGVM pOtherGVM = pGVMM->aHandles[i].pGVM; 2849 2866 void *pvObj = pGVMM->aHandles[i].pvObj; 2850 2867 if ( VALID_PTR(pvObj) 2851 && VALID_PTR(p GVM)2852 && p GVM->u32Magic == GVM_MAGIC2868 && VALID_PTR(pOtherGVM) 2869 && pOtherGVM->u32Magic == GVM_MAGIC 2853 2870 && RT_SUCCESS(SUPR0ObjVerifyAccess(pvObj, pSession, NULL))) 2854 2871 { 2855 2872 pStats->cVMs++; 2856 pStats->cEMTs += p GVM->cCpus;2857 2858 pStats->SchedSum.cHaltCalls += p GVM->gvmm.s.StatsSched.cHaltCalls;2859 pStats->SchedSum.cHaltBlocking += p GVM->gvmm.s.StatsSched.cHaltBlocking;2860 pStats->SchedSum.cHaltTimeouts += p GVM->gvmm.s.StatsSched.cHaltTimeouts;2861 pStats->SchedSum.cHaltNotBlocking += p GVM->gvmm.s.StatsSched.cHaltNotBlocking;2862 pStats->SchedSum.cHaltWakeUps += p GVM->gvmm.s.StatsSched.cHaltWakeUps;2863 2864 pStats->SchedSum.cWakeUpCalls += p GVM->gvmm.s.StatsSched.cWakeUpCalls;2865 pStats->SchedSum.cWakeUpNotHalted += p GVM->gvmm.s.StatsSched.cWakeUpNotHalted;2866 pStats->SchedSum.cWakeUpWakeUps += p GVM->gvmm.s.StatsSched.cWakeUpWakeUps;2867 2868 pStats->SchedSum.cPokeCalls += p GVM->gvmm.s.StatsSched.cPokeCalls;2869 pStats->SchedSum.cPokeNotBusy += p GVM->gvmm.s.StatsSched.cPokeNotBusy;2870 2871 pStats->SchedSum.cPollCalls += p GVM->gvmm.s.StatsSched.cPollCalls;2872 pStats->SchedSum.cPollHalts += p GVM->gvmm.s.StatsSched.cPollHalts;2873 pStats->SchedSum.cPollWakeUps += p GVM->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; 2874 2891 } 2875 2892 } … … 2995 3012 i = pGVMM->aHandles[i].iNext) 2996 3013 { 2997 PGVM p GVM = pGVMM->aHandles[i].pGVM;3014 PGVM pOtherGVM = pGVMM->aHandles[i].pGVM; 2998 3015 void *pvObj = pGVMM->aHandles[i].pvObj; 2999 3016 if ( VALID_PTR(pvObj) 3000 && VALID_PTR(p GVM)3001 && p GVM->u32Magic == GVM_MAGIC3017 && VALID_PTR(pOtherGVM) 3018 && pOtherGVM->u32Magic == GVM_MAGIC 3002 3019 && RT_SUCCESS(SUPR0ObjVerifyAccess(pvObj, pSession, NULL))) 3003 3020 { 3004 3021 # define MAYBE_RESET_FIELD(field) \ 3005 do { if (pStats->SchedSum. field ) { p GVM->gvmm.s.StatsSched. field = 0; } } while (0)3022 do { if (pStats->SchedSum. field ) { pOtherGVM->gvmm.s.StatsSched. field = 0; } } while (0) 3006 3023 MAYBE_RESET_FIELD(cHaltCalls); 3007 3024 MAYBE_RESET_FIELD(cHaltBlocking);
Note:
See TracChangeset
for help on using the changeset viewer.

