Changeset 18953 in vbox
- Timestamp:
- Apr 16, 2009 2:53:27 PM (16 years ago)
- svn:sync-xref-src-repo-rev:
- 46034
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/PGMR0DynMap.cpp
r15436 r18953 1185 1185 static uint32_t pgmR0DynMapPageSlow(PPGMR0DYNMAP pThis, RTHCPHYS HCPhys, uint32_t iPage, PVM pVM) 1186 1186 { 1187 STAM_COUNTER_INC(&pVM->pgm.s.StatR0DynMapPageSlow); 1187 #ifdef VBOX_WITH_STATISTICS 1188 PVMCPU pVCpu = VMMGetCpu(pVM); 1189 #endif 1190 STAM_COUNTER_INC(&pVCpu->pgm.s.StatR0DynMapPageSlow); 1188 1191 1189 1192 /* … … 1213 1216 if (paPages[iFreePage].HCPhys == HCPhys) 1214 1217 { 1215 STAM_COUNTER_INC(&pV M->pgm.s.StatR0DynMapPageSlowLoopHits);1218 STAM_COUNTER_INC(&pVCpu->pgm.s.StatR0DynMapPageSlowLoopHits); 1216 1219 return iFreePage; 1217 1220 } … … 1224 1227 return UINT32_MAX; 1225 1228 } 1226 STAM_COUNTER_INC(&pV M->pgm.s.StatR0DynMapPageSlowLoopMisses);1229 STAM_COUNTER_INC(&pVCpu->pgm.s.StatR0DynMapPageSlowLoopMisses); 1227 1230 #ifdef VBOX_WITH_STATISTICS 1228 1231 fLooped = true; … … 1236 1239 for (uint32_t iPage2 = (iPage + 3) % cPages; iPage2 != iPage; iPage2 = (iPage2 + 1) % cPages) 1237 1240 if (paPages[iPage2].HCPhys == HCPhys) 1238 STAM_COUNTER_INC(&pV M->pgm.s.StatR0DynMapPageSlowLostHits);1241 STAM_COUNTER_INC(&pVCpu->pgm.s.StatR0DynMapPageSlowLostHits); 1239 1242 #endif 1240 1243 … … 1284 1287 DECLINLINE(uint32_t) pgmR0DynMapPage(PPGMR0DYNMAP pThis, RTHCPHYS HCPhys, int32_t iRealCpu, PVM pVM, void **ppvPage) 1285 1288 { 1289 #ifdef VBOX_WITH_STATISTICS 1290 PVMCPU pVCpu = VMMGetCpu(pVM); 1291 #endif 1286 1292 RTSPINLOCKTMP Tmp = RTSPINLOCKTMP_INITIALIZER; 1287 1293 RTSpinlockAcquire(pThis->hSpinlock, &Tmp); 1288 1294 AssertMsg(!(HCPhys & PAGE_OFFSET_MASK), ("HCPhys=%RHp\n", HCPhys)); 1289 STAM_COUNTER_INC(&pV M->pgm.s.StatR0DynMapPage);1295 STAM_COUNTER_INC(&pVCpu->pgm.s.StatR0DynMapPage); 1290 1296 1291 1297 /* … … 1301 1307 PPGMR0DYNMAPENTRY paPages = pThis->paPages; 1302 1308 if (RT_LIKELY(paPages[iPage].HCPhys == HCPhys)) 1303 STAM_COUNTER_INC(&pV M->pgm.s.StatR0DynMapPageHits0);1309 STAM_COUNTER_INC(&pVCpu->pgm.s.StatR0DynMapPageHits0); 1304 1310 else 1305 1311 { … … 1308 1314 { 1309 1315 iPage = iPage2; 1310 STAM_COUNTER_INC(&pV M->pgm.s.StatR0DynMapPageHits1);1316 STAM_COUNTER_INC(&pVCpu->pgm.s.StatR0DynMapPageHits1); 1311 1317 } 1312 1318 else … … 1316 1322 { 1317 1323 iPage = iPage2; 1318 STAM_COUNTER_INC(&pV M->pgm.s.StatR0DynMapPageHits2);1324 STAM_COUNTER_INC(&pVCpu->pgm.s.StatR0DynMapPageHits2); 1319 1325 } 1320 1326 else … … 1365 1371 if (RT_UNLIKELY(fInvalidateIt)) 1366 1372 { 1367 STAM_COUNTER_INC(&pV M->pgm.s.StatR0DynMapPageInvlPg);1373 STAM_COUNTER_INC(&pVCpu->pgm.s.StatR0DynMapPageInvlPg); 1368 1374 ASMInvalidatePage(pvPage); 1369 1375 } … … 1810 1816 int pgmR0DynMapHCPageCommon(PVM pVM, PPGMMAPSET pSet, RTHCPHYS HCPhys, void **ppv) 1811 1817 { 1818 #ifdef VBOX_WITH_STATISTICS 1819 PVMCPU pVCpu = VMMGetCpu(pVM); 1820 #endif 1812 1821 AssertMsg(pSet->iCpu == RTMpCpuIdToSetIndex(RTMpCpuId()), ("%d %d(%d) efl=%#x\n", pSet->iCpu, RTMpCpuIdToSetIndex(RTMpCpuId()), RTMpCpuId(), ASMGetFlags())); 1813 1822 … … 1882 1891 { 1883 1892 pSet->aEntries[i].cRefs++; 1884 STAM_COUNTER_INC(&pV M->pgm.s.StatR0DynMapSetSearchHits);1893 STAM_COUNTER_INC(&pVCpu->pgm.s.StatR0DynMapSetSearchHits); 1885 1894 break; 1886 1895 } 1887 1896 if (i < 0) 1888 1897 { 1889 STAM_COUNTER_INC(&pV M->pgm.s.StatR0DynMapSetSearchMisses);1898 STAM_COUNTER_INC(&pVCpu->pgm.s.StatR0DynMapSetSearchMisses); 1890 1899 if (pSet->iSubset < pSet->cEntries) 1891 1900 { 1892 STAM_COUNTER_INC(&pV M->pgm.s.StatR0DynMapSetSearchFlushes);1901 STAM_COUNTER_INC(&pVCpu->pgm.s.StatR0DynMapSetSearchFlushes); 1893 1902 STAM_COUNTER_INC(&pVM->pgm.s.aStatR0DynMapSetSize[(pSet->cEntries * 10 / RT_ELEMENTS(pSet->aEntries)) % 11]); 1894 1903 AssertMsg(pSet->cEntries < PGMMAPSET_MAX_FILL, ("%u\n", pSet->cEntries)); … … 1898 1907 if (RT_UNLIKELY(pSet->cEntries >= RT_ELEMENTS(pSet->aEntries))) 1899 1908 { 1900 STAM_COUNTER_INC(&pV M->pgm.s.StatR0DynMapSetOptimize);1909 STAM_COUNTER_INC(&pVCpu->pgm.s.StatR0DynMapSetOptimize); 1901 1910 pgmDynMapOptimizeAutoSet(pSet); 1902 1911 } … … 1934 1943 VMMDECL(int) PGMDynMapHCPage(PVM pVM, RTHCPHYS HCPhys, void **ppv) 1935 1944 { 1945 #ifdef VBOX_WITH_STATISTICS 1946 PVMCPU pVCpu = VMMGetCpu(pVM); 1947 #endif 1936 1948 /* 1937 1949 * Validate state. 1938 1950 */ 1939 STAM_PROFILE_START(&pV M->pgm.s.StatR0DynMapHCPage, a);1951 STAM_PROFILE_START(&pVCpu->pgm.s.StatR0DynMapHCPage, a); 1940 1952 AssertPtr(ppv); 1941 1953 AssertMsg(pVM->pgm.s.pvR0DynMapUsed == g_pPGMR0DynMap, … … 1953 1965 int rc = pgmR0DynMapHCPageCommon(pVM, pSet, HCPhys, ppv); 1954 1966 1955 STAM_PROFILE_STOP(&pV M->pgm.s.StatR0DynMapHCPage, a);1967 STAM_PROFILE_STOP(&pVCpu->pgm.s.StatR0DynMapHCPage, a); 1956 1968 return rc; 1957 1969 }
Note:
See TracChangeset
for help on using the changeset viewer.