Changeset 39084 in vbox for trunk/src/VBox/VMM/VMMR3
- Timestamp:
- Oct 22, 2011 12:37:15 AM (13 years ago)
- Location:
- trunk/src/VBox/VMM/VMMR3
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR3/PGM.cpp
r39078 r39084 672 672 # ifdef VBOX_STRICT 673 673 { "pgmassertcr3", 0, 0, NULL, 0, 0, pgmR3CmdAssertCR3, "", "Check the shadow CR3 mapping." }, 674 # if HC_ARCH_BITS == 64674 # ifdef VBOX_WITH_PAGE_SHARING 675 675 { "pgmcheckduppages", 0, 0, NULL, 0, 0, pgmR3CmdCheckDuplicatePages, "", "Check for duplicate pages in all running VMs." }, 676 676 { "pgmsharedmodules", 0, 0, NULL, 0, 0, pgmR3CmdShowSharedModules, "", "Print shared modules info." }, -
trunk/src/VBox/VMM/VMMR3/PGMPhys.cpp
r39078 r39084 923 923 924 924 #if HC_ARCH_BITS == 64 && (defined(RT_OS_WINDOWS) || defined(RT_OS_SOLARIS) || defined(RT_OS_LINUX) || defined(RT_OS_FREEBSD)) 925 925 926 /** 926 927 * Rendezvous callback used by PGMR3ChangeMemBalloon that changes the memory balloon size … … 1042 1043 } 1043 1044 1045 1044 1046 /** 1045 1047 * Frees a range of ram pages, replacing them with ZERO pages; helper for PGMR3PhysFreeRamPages … … 1064 1066 RTMemFree(paPhysPage); 1065 1067 } 1066 #endif 1068 1069 #endif /* 64-bit host && (Windows || Solaris || Linux || FreeBSD) */ 1067 1070 1068 1071 /** … … 1109 1112 } 1110 1113 return rc; 1114 1111 1115 #else 1116 NOREF(pVM); NOREF(fInflate); NOREF(cPages); NOREF(paPhysPage); 1112 1117 return VERR_NOT_IMPLEMENTED; 1113 1118 #endif 1114 1119 } 1120 1115 1121 1116 1122 /** -
trunk/src/VBox/VMM/VMMR3/PGMSharedPage.cpp
r39078 r39084 5 5 6 6 /* 7 * Copyright (C) 2006-201 0Oracle Corporation7 * Copyright (C) 2006-2011 Oracle Corporation 8 8 * 9 9 * This file is part of VirtualBox Open Source Edition (OSE), as … … 36 36 #include "PGMInline.h" 37 37 38 38 39 /******************************************************************************* 39 40 * Global Variables * 40 41 *******************************************************************************/ 41 #if defined(VBOX_ STRICT) && HC_ARCH_BITS == 6442 #if defined(VBOX_WITH_PAGE_SHARING) && defined(VBOX_STRICT) 42 43 /** Keep a copy of all registered shared modules for the .pgmcheckduppages debugger command. */ 43 static PGMMREGISTERSHAREDMODULEREQ g_apSharedModules[512] = {0};44 static unsigned g_cSharedModules = 0;44 static PGMMREGISTERSHAREDMODULEREQ g_apSharedModules[512] = {0}; 45 static unsigned g_cSharedModules = 0; 45 46 #endif 47 46 48 47 49 /** … … 58 60 * @param pRegions Shared region(s) 59 61 */ 60 VMMR3DECL(int) PGMR3SharedModuleRegister(PVM pVM, VBOXOSFAMILY enmGuestOS, char *pszModuleName, char *pszVersion, RTGCPTR GCBaseAddr, uint32_t cbModule, 61 unsigned cRegions, VMMDEVSHAREDREGIONDESC *pRegions) 62 VMMR3DECL(int) PGMR3SharedModuleRegister(PVM pVM, VBOXOSFAMILY enmGuestOS, char *pszModuleName, char *pszVersion, 63 RTGCPTR GCBaseAddr, uint32_t cbModule, unsigned cRegions, 64 VMMDEVSHAREDREGIONDESC *pRegions) 62 65 { 63 66 #ifdef VBOX_WITH_PAGE_SHARING 64 PGMMREGISTERSHAREDMODULEREQ pReq;65 66 67 Log(("PGMR3SharedModuleRegister family=%d name=%s version=%s base=%RGv size=%x cRegions=%d\n", enmGuestOS, pszModuleName, pszVersion, GCBaseAddr, cbModule, cRegions)); 67 68 … … 69 70 AssertReturn(cRegions < VMMDEVSHAREDREGIONDESC_MAX, VERR_INVALID_PARAMETER); 70 71 72 PGMMREGISTERSHAREDMODULEREQ pReq; 71 73 pReq = (PGMMREGISTERSHAREDMODULEREQ)RTMemAllocZ(RT_OFFSETOF(GMMREGISTERSHAREDMODULEREQ, aRegions[cRegions])); 72 74 AssertReturn(pReq, VERR_NO_MEMORY); … … 87 89 88 90 int rc = GMMR3RegisterSharedModule(pVM, pReq); 89 # if defined(VBOX_STRICT) && HC_ARCH_BITS == 6491 # ifdef VBOX_STRICT 90 92 if (rc == VINF_SUCCESS) 91 93 { … … 106 108 if (ppSharedModule) 107 109 { 108 *ppSharedModule = (PGMMREGISTERSHAREDMODULEREQ)RTMemAllocZ(RT_OFFSETOF(GMMREGISTERSHAREDMODULEREQ, aRegions[cRegions]));109 memcpy(*ppSharedModule, pReq, RT_OFFSETOF(GMMREGISTERSHAREDMODULEREQ, aRegions[cRegions]));110 size_t const cbSharedModule = RT_OFFSETOF(GMMREGISTERSHAREDMODULEREQ, aRegions[cRegions]); 111 *ppSharedModule = (PGMMREGISTERSHAREDMODULEREQ)RTMemDup(pReq, cbSharedModule); 110 112 g_cSharedModules++; 111 113 } 112 114 } 113 115 } 114 # endif 116 # endif /* VBOX_STRICT */ 115 117 116 118 RTMemFree(pReq); … … 120 122 121 123 return VINF_SUCCESS; 122 #else 124 #else /* !VBOX_WITH_PAGE_SHARING */ 125 126 NOREF(pVM); NOREF(enmGuestOS); NOREF(pszModuleName); NOREF(pszVersion); NOREF(GCBaseAddr); 127 NOREF(cbModule); NOREF(cRegions); NOREF(pRegions); 123 128 return VERR_NOT_IMPLEMENTED; 124 #endif 125 } 129 #endif /* !VBOX_WITH_PAGE_SHARING */ 130 } 131 126 132 127 133 /** … … 148 154 pReq->cbModule = cbModule; 149 155 150 if ( 151 || 156 if ( RTStrCopy(pReq->szName, sizeof(pReq->szName), pszModuleName) != VINF_SUCCESS 157 || RTStrCopy(pReq->szVersion, sizeof(pReq->szVersion), pszVersion) != VINF_SUCCESS) 152 158 { 153 159 RTMemFree(pReq); … … 157 163 RTMemFree(pReq); 158 164 159 # if defined(VBOX_STRICT) && HC_ARCH_BITS == 64165 # ifdef VBOX_STRICT 160 166 for (unsigned i = 0; i < g_cSharedModules; i++) 161 167 { … … 170 176 } 171 177 } 172 # endif 178 # endif /* VBOX_STRICT */ 173 179 return rc; 174 #else 180 #else /* !VBOX_WITH_PAGE_SHARING */ 181 182 NOREF(pVM); NOREF(pszModuleName); NOREF(pszVersion); NOREF(GCBaseAddr); NOREF(cbModule); 175 183 return VERR_NOT_IMPLEMENTED; 176 #endif 184 #endif /* !VBOX_WITH_PAGE_SHARING */ 177 185 } 178 186 179 187 #ifdef VBOX_WITH_PAGE_SHARING 188 180 189 /** 181 190 * Rendezvous callback that will be called once. … … 221 230 AssertRCSuccess(rc); 222 231 } 223 #endif 232 233 #endif /* !VBOX_WITH_PAGE_SHARING */ 224 234 225 235 /** … … 235 245 return VMR3ReqCallNoWait(pVM, VMCPUID_ANY_QUEUE, (PFNRT)pgmR3CheckSharedModulesHelper, 2, pVM, VMMGetCpuId(pVM)); 236 246 #else 247 NOREF(pVM); 237 248 return VERR_NOT_IMPLEMENTED; 238 249 #endif 239 250 } 240 251 252 241 253 /** 242 254 * Query the state of a page in a shared module 243 255 * 244 256 * @returns VBox status code. 245 * @param pVM VM handle 246 * @param GCPtrPage Page address 247 * @param pfShared Shared status (out) 248 * @param p uPageFlags Page flags (out)249 */ 250 VMMR3DECL(int) PGMR3SharedModuleGetPageState(PVM pVM, RTGCPTR GCPtrPage, bool *pfShared, uint64_t *p uPageFlags)257 * @param pVM VM handle. 258 * @param GCPtrPage Page address. 259 * @param pfShared Shared status (out). 260 * @param pfPageFlags Page flags (out). 261 */ 262 VMMR3DECL(int) PGMR3SharedModuleGetPageState(PVM pVM, RTGCPTR GCPtrPage, bool *pfShared, uint64_t *pfPageFlags) 251 263 { 252 264 #if defined(VBOX_WITH_PAGE_SHARING) && defined(DEBUG) … … 266 278 { 267 279 *pfShared = PGM_PAGE_IS_SHARED(pPage); 268 *p uPageFlags = fFlags;280 *pfPageFlags = fFlags; 269 281 } 270 282 else … … 277 289 case VERR_PAGE_DIRECTORY_PTR_NOT_PRESENT: 278 290 *pfShared = false; 279 *p uPageFlags = 0;291 *pfPageFlags = 0; 280 292 rc = VINF_SUCCESS; 281 293 break; … … 288 300 return rc; 289 301 #else 302 NOREF(pVM); NOREF(GCPtrPage); NOREF(pfShared); NOREF(pfPageFlags); 290 303 return VERR_NOT_IMPLEMENTED; 291 304 #endif 292 305 } 293 306 294 #if defined(VBOX_ STRICT) && HC_ARCH_BITS == 64307 #if defined(VBOX_WITH_PAGE_SHARING) && defined(VBOX_STRICT) 295 308 296 309 /** … … 415 428 } 416 429 417 #endif /* VBOX_STRICT && HC_ARCH_BITS == 64*/430 #endif /* VBOX_STRICT && VBOX_WITH_PAGE_SHARING */
Note:
See TracChangeset
for help on using the changeset viewer.