Changeset 26290 in vbox for trunk/src/VBox
- Timestamp:
- Feb 5, 2010 2:27:19 PM (15 years ago)
- svn:sync-xref-src-repo-rev:
- 57359
- Location:
- trunk/src/VBox
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/VMMDev/VMMDev.cpp
r26289 r26290 1392 1392 } 1393 1393 1394 case VMMDevReq_GetStatisticsChangeRequest:1395 {1396 Log(("VMMDevReq_GetStatisticsChangeRequest\n"));1397 if (pRequestHeader->size != sizeof(VMMDevGetStatisticsChangeRequest))1398 {1399 AssertFailed();1400 pRequestHeader->rc = VERR_INVALID_PARAMETER;1401 }1402 else1403 {1404 VMMDevGetStatisticsChangeRequest *statIntervalChangeRequest = (VMMDevGetStatisticsChangeRequest*)pRequestHeader;1405 /* just pass on the information */1406 Log(("VMMDev: returning statistics interval %d seconds\n", pThis->u32StatIntervalSize));1407 statIntervalChangeRequest->u32StatInterval = pThis->u32StatIntervalSize;1408 1409 if (statIntervalChangeRequest->eventAck == VMMDEV_EVENT_STATISTICS_INTERVAL_CHANGE_REQUEST)1410 {1411 /* Remember which mode the client has queried. */1412 pThis->u32LastStatIntervalSize= pThis->u32StatIntervalSize;1413 }1414 1415 pRequestHeader->rc = VINF_SUCCESS;1416 }1417 break;1418 }1419 1420 1394 case VMMDevReq_ReportGuestStats: 1421 1395 { … … 2069 2043 } 2070 2044 2071 static DECLCALLBACK(int) vmmdevSetStatisticsInterval(PPDMIVMMDEVPORT pInterface, uint32_t ulStatInterval)2072 {2073 VMMDevState *pThis = IVMMDEVPORT_2_VMMDEVSTATE(pInterface);2074 PDMCritSectEnter(&pThis->CritSect, VERR_SEM_BUSY);2075 2076 /* Verify that the new resolution is different and that guest does not yet know about it. */2077 bool fSame = (pThis->u32LastStatIntervalSize == ulStatInterval);2078 2079 Log(("vmmdevSetStatisticsInterval: old=%d. new=%d\n", pThis->u32LastStatIntervalSize, ulStatInterval));2080 2081 if (!fSame)2082 {2083 /* we could validate the information here but hey, the guest can do that as well! */2084 pThis->u32StatIntervalSize = ulStatInterval;2085 2086 /* IRQ so the guest knows what's going on */2087 VMMDevNotifyGuest (pThis, VMMDEV_EVENT_STATISTICS_INTERVAL_CHANGE_REQUEST);2088 }2089 2090 PDMCritSectLeave(&pThis->CritSect);2091 return VINF_SUCCESS;2092 }2093 2094 2045 2095 2046 static DECLCALLBACK(int) vmmdevSetCredentials(PPDMIVMMDEVPORT pInterface, const char *pszUsername, … … 2479 2430 /* disabled memory ballooning */ 2480 2431 pThis->u32LastMemoryBalloonSize = 0; 2481 2482 /* disabled statistics updating */2483 pThis->u32LastStatIntervalSize = 0;2484 2432 2485 2433 /* Clear the "HGCM event enabled" flag so the event can be automatically reenabled. */ … … 2593 2541 pThis->IPort.pfnRequestSeamlessChange = vmmdevRequestSeamlessChange; 2594 2542 pThis->IPort.pfnSetMemoryBalloon = vmmdevSetMemoryBalloon; 2595 pThis->IPort.pfnSetStatisticsInterval = vmmdevSetStatisticsInterval;2596 2543 pThis->IPort.pfnVRDPChange = vmmdevVRDPChange; 2597 2544 pThis->IPort.pfnCpuHotUnplug = vmmdevCpuHotUnplug; -
trunk/src/VBox/Main/GuestImpl.cpp
r26235 r26290 82 82 mMemoryBalloonSize = 0; /* Default is no ballooning */ 83 83 84 ULONG aStatUpdateInterval;85 ret = mParent->machine()->COMGETTER(StatisticsUpdateInterval)(&aStatUpdateInterval);86 if (ret == S_OK)87 mStatUpdateInterval = aStatUpdateInterval;88 else89 mStatUpdateInterval = 0; /* Default is not to report guest statistics at all */90 91 84 /* invalidate all stats */ 92 85 for (int i=0;i<GuestStatisticType_MaxVal;i++) … … 225 218 } 226 219 227 STDMETHODIMP Guest::COMGETTER(StatisticsUpdateInterval) (ULONG *aUpdateInterval)228 {229 CheckComArgOutPointerValid(aUpdateInterval);230 231 AutoCaller autoCaller(this);232 if (FAILED(autoCaller.rc())) return autoCaller.rc();233 234 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);235 236 *aUpdateInterval = mStatUpdateInterval;237 238 return S_OK;239 }240 241 STDMETHODIMP Guest::COMSETTER(StatisticsUpdateInterval) (ULONG aUpdateInterval)242 {243 AutoCaller autoCaller(this);244 if (FAILED(autoCaller.rc())) return autoCaller.rc();245 246 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);247 248 HRESULT ret = mParent->machine()->COMSETTER(StatisticsUpdateInterval)(aUpdateInterval);249 if (ret == S_OK)250 {251 mStatUpdateInterval = aUpdateInterval;252 /* forward the information to the VMM device */253 VMMDev *vmmDev = mParent->getVMMDev();254 if (vmmDev)255 vmmDev->getVMMDevPort()->pfnSetStatisticsInterval(vmmDev->getVMMDevPort(), aUpdateInterval);256 }257 258 return ret;259 }260 220 261 221 STDMETHODIMP Guest::SetCredentials(IN_BSTR aUserName, IN_BSTR aPassword, -
trunk/src/VBox/Main/MachineImpl.cpp
r26235 r26290 157 157 mCPUHotPlugEnabled = false; 158 158 mMemoryBalloonSize = 0; 159 mStatisticsUpdateInterval = 0;160 159 mVRAMSize = 8; 161 160 mAccelerate3DEnabled = false; … … 1159 1158 return S_OK; 1160 1159 } 1161 1162 /** @todo this method should not be public */1163 STDMETHODIMP Machine::COMGETTER(StatisticsUpdateInterval) (ULONG *statisticsUpdateInterval)1164 {1165 if (!statisticsUpdateInterval)1166 return E_POINTER;1167 1168 AutoCaller autoCaller(this);1169 if (FAILED(autoCaller.rc())) return autoCaller.rc();1170 1171 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);1172 1173 *statisticsUpdateInterval = mHWData->mStatisticsUpdateInterval;1174 1175 return S_OK;1176 }1177 1178 /** @todo this method should not be public */1179 STDMETHODIMP Machine::COMSETTER(StatisticsUpdateInterval) (ULONG statisticsUpdateInterval)1180 {1181 AutoCaller autoCaller(this);1182 if (FAILED(autoCaller.rc())) return autoCaller.rc();1183 1184 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);1185 1186 HRESULT rc = checkStateDependency(MutableStateDep);1187 if (FAILED(rc)) return rc;1188 1189 setModified(IsModified_MachineData);1190 mHWData.backup();1191 mHWData->mStatisticsUpdateInterval = statisticsUpdateInterval;1192 1193 return S_OK;1194 }1195 1196 1160 1197 1161 STDMETHODIMP Machine::COMGETTER(Accelerate3DEnabled)(BOOL *enabled) … … 6272 6236 // guest settings 6273 6237 mHWData->mMemoryBalloonSize = data.ulMemoryBalloonSize; 6274 mHWData->mStatisticsUpdateInterval = data.ulStatisticsUpdateInterval;6275 6238 6276 6239 #ifdef VBOX_WITH_GUEST_PROPS … … 7306 7269 /* Guest */ 7307 7270 data.ulMemoryBalloonSize = mHWData->mMemoryBalloonSize; 7308 data.ulStatisticsUpdateInterval = mHWData->mStatisticsUpdateInterval;7309 7271 7310 7272 // guest properties -
trunk/src/VBox/Main/VMMDevInterface.cpp
r26166 r26290 403 403 } 404 404 405 /**406 * Request the statistics interval407 *408 * @returns VBox status code.409 * @param pInterface Pointer to this interface.410 * @param pulInterval Pointer to interval in seconds411 * @thread The emulation thread.412 */413 DECLCALLBACK(int) vmmdevQueryStatisticsInterval(PPDMIVMMDEVCONNECTOR pInterface, uint32_t *pulInterval)414 {415 PDRVMAINVMMDEV pDrv = PDMIVMMDEVCONNECTOR_2_MAINVMMDEV(pInterface);416 ULONG val = 0;417 418 if (!pulInterval)419 return VERR_INVALID_POINTER;420 421 /* store that information in IGuest */422 Guest* guest = pDrv->pVMMDev->getParent()->getGuest();423 Assert(guest);424 if (!guest)425 return VERR_INVALID_PARAMETER; /** @todo wrong error */426 427 guest->COMGETTER(StatisticsUpdateInterval)(&val);428 *pulInterval = val;429 return VINF_SUCCESS;430 }431 405 432 406 /** … … 736 710 pData->Connector.pfnQueryVisibleRegion = vmmdevQueryVisibleRegion; 737 711 pData->Connector.pfnReportStatistics = vmmdevReportStatistics; 738 pData->Connector.pfnQueryStatisticsInterval = vmmdevQueryStatisticsInterval;739 712 pData->Connector.pfnChangeMemoryBalloon = vmmdevChangeMemoryBalloon; 740 713 -
trunk/src/VBox/Main/idl/VirtualBox.xidl
r26241 r26290 4371 4371 </attribute> 4372 4372 4373 <attribute name="statisticsUpdateInterval" type="unsigned long">4374 <desc>Initial interval to update guest statistics in seconds.</desc>4375 </attribute>4376 4377 4373 <attribute name="VRAMSize" type="unsigned long"> 4378 4374 <desc>Video memory size in megabytes.</desc> … … 8311 8307 <attribute name="memoryBalloonSize" type="unsigned long"> 8312 8308 <desc>Guest system memory balloon size in megabytes.</desc> 8313 </attribute>8314 8315 <attribute name="statisticsUpdateInterval" type="unsigned long">8316 <desc>Interval to update guest statistics in seconds.</desc>8317 8309 </attribute> 8318 8310 -
trunk/src/VBox/Main/include/GuestImpl.h
r23223 r26290 65 65 STDMETHOD(COMGETTER(MemoryBalloonSize)) (ULONG *aMemoryBalloonSize); 66 66 STDMETHOD(COMSETTER(MemoryBalloonSize)) (ULONG aMemoryBalloonSize); 67 STDMETHOD(COMGETTER(StatisticsUpdateInterval)) (ULONG *aUpdateInterval);68 STDMETHOD(COMSETTER(StatisticsUpdateInterval)) (ULONG aUpdateInterval);69 67 70 68 // IGuest methods … … 101 99 102 100 ULONG mMemoryBalloonSize; 103 ULONG mStatUpdateInterval;104 101 105 102 ULONG mCurrentGuestStat[GuestStatisticType_MaxVal]; -
trunk/src/VBox/Main/include/MachineImpl.h
r26171 r26290 269 269 ULONG mMemorySize; 270 270 ULONG mMemoryBalloonSize; 271 ULONG mStatisticsUpdateInterval;272 271 ULONG mVRAMSize; 273 272 ULONG mMonitorCount; … … 376 375 STDMETHOD(COMGETTER(MemoryBalloonSize))(ULONG *memoryBalloonSize); 377 376 STDMETHOD(COMSETTER(MemoryBalloonSize))(ULONG memoryBalloonSize); 378 STDMETHOD(COMGETTER(StatisticsUpdateInterval))(ULONG *statisticsUpdateInterval);379 STDMETHOD(COMSETTER(StatisticsUpdateInterval))(ULONG statisticsUpdateInterval);380 377 STDMETHOD(COMGETTER(VRAMSize))(ULONG *memorySize); 381 378 STDMETHOD(COMSETTER(VRAMSize))(ULONG memorySize);
Note:
See TracChangeset
for help on using the changeset viewer.