儲存庫 vbox 的更動 16419
- 時間撮記:
- 2009-1-30 下午03:00:20 (16 年 以前)
- 位置:
- trunk/src/VBox/VMM
- 檔案:
-
- 修改 4 筆資料
圖例:
- 未更動
- 新增
- 刪除
-
trunk/src/VBox/VMM/PGMBth.h
r16418 r16419 159 159 # endif 160 160 pVM->pgm.s.HCPhysShwCR3 = 0; 161 pVM->pgm.s.iShwUser = 0; 162 pVM->pgm.s.iShwUserTable = 0; 161 163 } 162 164 … … 167 169 RTGCPHYS GCPhysCR3 = RT_BIT_64(63) | RT_BIT_64(62); 168 170 # endif 169 int rc = pgmPoolAlloc(pVM, GCPhysCR3, BTH_PGMPOOLKIND_ROOT, SHW_POOL_ROOT_IDX, GCPhysCR3 >> PAGE_SHIFT, &pVM->pgm.s.CTX_SUFF(pShwPageCR3)); 171 pVM->pgm.s.iShwUser = SHW_POOL_ROOT_IDX; 172 pVM->pgm.s.iShwUserTable = GCPhysCR3 >> PAGE_SHIFT; 173 int rc = pgmPoolAlloc(pVM, GCPhysCR3, BTH_PGMPOOLKIND_ROOT, pVM->pgm.s.iShwUser, pVM->pgm.s.iShwUserTable, &pVM->pgm.s.CTX_SUFF(pShwPageCR3)); 170 174 if (rc == VERR_PGM_POOL_FLUSHED) 171 175 { -
trunk/src/VBox/VMM/PGMInternal.h
r16412 r16419 1623 1623 uint16_t iAgePrev; 1624 1624 #endif /* PGMPOOL_WITH_CACHE */ 1625 /* The shadow page pool index of the user table as specified during allocation; useful for freeing root pages */1626 uint16_t iUser;1627 /* The index into the user table (shadowed) as specified during allocation; useful for freeing root pages. */1628 uint32_t iUserTable;1629 1625 /** Used to indicate that the page is zeroed. */ 1630 1626 bool fZeroed; … … 2256 2252 /** Pointer to the page of the current active CR3 - RC Ptr. */ 2257 2253 RCPTRTYPE(PPGMPOOLPAGE) pShwPageCR3RC; 2254 /* The shadow page pool index of the user table as specified during allocation; useful for freeing root pages */ 2255 uint32_t iShwUser; 2256 /* The index into the user table (shadowed) as specified during allocation; useful for freeing root pages. */ 2257 uint32_t iShwUserTable; 2258 2258 # if HC_ARCH_BITS == 64 2259 2259 RTRCPTR alignment6; /**< structure size alignment. */ -
trunk/src/VBox/VMM/VMMAll/PGMAllBth.h
r16407 r16419 4579 4579 /** @todo Coordinate this better with the pool. */ 4580 4580 if (pVM->pgm.s.CTX_SUFF(pShwPageCR3)->enmKind != PGMPOOLKIND_FREE) 4581 pgmPoolFreeByPage(pPool, pVM->pgm.s.CTX_SUFF(pShwPageCR3), pVM->pgm.s. CTX_SUFF(pShwPageCR3)->iUser, pVM->pgm.s.CTX_SUFF(pShwPageCR3)->iUserTable);4581 pgmPoolFreeByPage(pPool, pVM->pgm.s.CTX_SUFF(pShwPageCR3), pVM->pgm.s.iShwUser, pVM->pgm.s.iShwUserTable); 4582 4582 pVM->pgm.s.pShwPageCR3R3 = 0; 4583 4583 pVM->pgm.s.pShwPageCR3R0 = 0; … … 4587 4587 # endif 4588 4588 pVM->pgm.s.HCPhysShwCR3 = 0; 4589 pVM->pgm.s.iShwUser = 0; 4590 pVM->pgm.s.iShwUserTable = 0; 4589 4591 } 4590 4592 4591 4593 Assert(!(GCPhysCR3 >> (PAGE_SHIFT + 32))); 4592 rc = pgmPoolAlloc(pVM, GCPhysCR3, BTH_PGMPOOLKIND_ROOT, SHW_POOL_ROOT_IDX, GCPhysCR3 >> PAGE_SHIFT, &pVM->pgm.s.CTX_SUFF(pShwPageCR3)); 4594 pVM->pgm.s.iShwUser = SHW_POOL_ROOT_IDX; 4595 pVM->pgm.s.iShwUserTable = GCPhysCR3 >> PAGE_SHIFT; 4596 rc = pgmPoolAlloc(pVM, GCPhysCR3, BTH_PGMPOOLKIND_ROOT, pVM->pgm.s.iShwUser, pVM->pgm.s.iShwUserTable, &pVM->pgm.s.CTX_SUFF(pShwPageCR3)); 4593 4597 if (rc == VERR_PGM_POOL_FLUSHED) 4594 4598 { … … 4701 4705 { 4702 4706 PPGMPOOL pPool = pVM->pgm.s.CTX_SUFF(pPool); 4703 pgmPoolFreeByPage(pPool, pVM->pgm.s.CTX_SUFF(pShwPageCR3), pVM->pgm.s. CTX_SUFF(pShwPageCR3)->iUser, pVM->pgm.s.CTX_SUFF(pShwPageCR3)->iUserTable);4707 pgmPoolFreeByPage(pPool, pVM->pgm.s.CTX_SUFF(pShwPageCR3), pVM->pgm.s.iShwUser, pVM->pgm.s.iShwUserTable); 4704 4708 pVM->pgm.s.pShwPageCR3R3 = 0; 4705 4709 pVM->pgm.s.pShwPageCR3R0 = 0; 4710 pVM->pgm.s.iShwUser = 0; 4711 pVM->pgm.s.iShwUserTable = 0; 4706 4712 } 4707 4713 # endif -
trunk/src/VBox/VMM/VMMAll/PGMAllPool.cpp
r16376 r16419 4244 4244 pPage->fReusedFlushPending = false; 4245 4245 pPage->fCR3Mix = false; 4246 pPage->iUser = iUser;4247 pPage->iUserTable = iUserTable;4248 4246 #ifdef PGMPOOL_WITH_MONITORING 4249 4247 pPage->cModifications = 0;
注意:
瀏覽 TracChangeset
來幫助您使用更動檢視器