Changeset 41456 in vbox for trunk/src/VBox/VMM/include
- Timestamp:
- May 28, 2012 10:11:53 AM (13 years ago)
- Location:
- trunk/src/VBox/VMM/include
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/include/PGMInline.h
r39034 r41456 86 86 87 87 88 89 88 /** 90 89 * Gets the PGMPAGE structure for a guest page. … … 132 131 return VINF_SUCCESS; 133 132 } 134 135 136 133 137 134 … … 417 414 } 418 415 416 419 417 /** 420 418 * Maps the page into current context (RC and maybe R0). … … 503 501 504 502 #endif /* !IN_RC */ 505 506 503 507 504 /** … … 667 664 return VINF_SUCCESS; 668 665 } 666 669 667 670 668 /** … … 1174 1172 1175 1173 #endif /* !IN_RC */ 1176 1177 1174 1178 1175 /** … … 1431 1428 } 1432 1429 1430 1433 1431 /** 1434 1432 * Locks a page to prevent flushing (important for cr3 root pages or shadow pae pd pages). -
trunk/src/VBox/VMM/include/PGMInternal.h
r41437 r41456 2114 2114 R3R0PTRTYPE(void *) pvPageR3; 2115 2115 #endif 2116 /** The guest physical address. */2117 2116 #if HC_ARCH_BITS == 32 && GC_ARCH_BITS == 64 2118 2117 uint32_t Alignment0; 2119 2118 #endif 2119 /** The guest physical address. */ 2120 2120 RTGCPHYS GCPhys; 2121 2122 /** Access handler statistics to determine whether the guest is (re)initializing a page table. */2123 RTGCPTR pvLastAccessHandlerRip;2124 RTGCPTR pvLastAccessHandlerFault;2125 uint64_t cLastAccessHandlerCount;2126 2127 2121 /** The kind of page we're shadowing. (This is really a PGMPOOLKIND enum.) */ 2128 2122 uint8_t enmKind; 2129 2123 /** The subkind of page we're shadowing. (This is really a PGMPOOLACCESS enum.) */ 2130 2124 uint8_t enmAccess; 2125 /** This supplements enmKind and enmAccess */ 2126 bool fA20Enabled : 1; 2127 2128 /** Used to indicate that the page is zeroed. */ 2129 bool fZeroed : 1; 2130 /** Used to indicate that a PT has non-global entries. */ 2131 bool fSeenNonGlobal : 1; 2132 /** Used to indicate that we're monitoring writes to the guest page. */ 2133 bool fMonitored : 1; 2134 /** Used to indicate that the page is in the cache (e.g. in the GCPhys hash). 2135 * (All pages are in the age list.) */ 2136 bool fCached : 1; 2137 /** This is used by the R3 access handlers when invoked by an async thread. 2138 * It's a hack required because of REMR3NotifyHandlerPhysicalDeregister. */ 2139 bool volatile fReusedFlushPending : 1; 2140 /** Used to mark the page as dirty (write monitoring is temporarily 2141 * off). */ 2142 bool fDirty : 1; 2143 bool afPadding1 : 1+8; 2144 2131 2145 /** The index of this page. */ 2132 2146 uint16_t idx; … … 2154 2168 /** The previous page in the age list. */ 2155 2169 uint16_t iAgePrev; 2156 /** Used to indicate that the page is zeroed. */2157 bool fZeroed;2158 /** Used to indicate that a PT has non-global entries. */ 2159 bool fSeenNonGlobal;2160 /** Used to indicate that we're monitoring writes to the guest page. */2161 bool fMonitored;2162 /** Used to indicate that the page is in the cache (e.g. in the GCPhys hash).2163 * (All pages are in the age list.) */2164 bool fCached;2165 /** This is used by the R3 access handlers when invoked by an async thread.2166 * It's a hack required because of REMR3NotifyHandlerPhysicalDeregister. */2167 bool volatile fReusedFlushPending;2168 /** Used to mark the page as dirty (write monitoring is temporarily 2169 * off). */2170 bool fDirty; 2171 2172 /** Used to indicate that this page can't be flushed. Important for cr3 root pages or shadow pae pd pages). */2173 uint32_t cLocked; 2174 uint32_t idxDirty;2175 RTGCPTR pvDirtyFault; 2176 } PGMPOOLPAGE, *PPGMPOOLPAGE, **PPPGMPOOLPAGE;2170 /** Index into PGMPOOL::aDirtyPages if fDirty is set. */ 2171 uint8_t idxDirtyEntry; 2172 2173 /** @name Access handler statistics to determine whether the guest is 2174 * (re)initializing a page table. 2175 * @{ */ 2176 RTGCPTR GCPtrLastAccessHandlerRip; 2177 RTGCPTR GCPtrLastAccessHandlerFault; 2178 uint64_t cLastAccessHandler; 2179 /** @} */ 2180 /** Used to indicate that this page can't be flushed. Important for cr3 root pages or shadow pae pd pages. */ 2181 uint32_t volatile cLocked; 2182 #if GC_ARCH_BITS == 64 2183 uint32_t Alignment2; 2184 #endif 2185 # ifdef VBOX_STRICT 2186 RTGCPTR GCPtrDirtyFault; 2187 # endif 2188 } PGMPOOLPAGE; 2189 /** Pointer to a pool page. */ 2190 typedef PGMPOOLPAGE *PPGMPOOLPAGE; 2177 2191 /** Pointer to a const pool page. */ 2178 2192 typedef PGMPOOLPAGE const *PCPGMPOOLPAGE; 2193 /** Pointer to a pool page pointer. */ 2194 typedef PGMPOOLPAGE **PPPGMPOOLPAGE; 2179 2195 2180 2196 … … 2256 2272 uint32_t u32Padding2; 2257 2273 # endif 2258 /* Next available slot. */2274 /** Next available slot (in aDirtyPages). */ 2259 2275 uint32_t idxFreeDirtyPage; 2260 /* Number of active dirty pages. */2276 /** Number of active dirty pages. */ 2261 2277 uint32_t cDirtyPages; 2262 /* Array of current dirty pgm pool page indices. */2278 /** Array of current dirty pgm pool page indices. */ 2263 2279 struct 2264 2280 {
Note:
See TracChangeset
for help on using the changeset viewer.