Changeset 4513 in vbox for trunk/src/VBox
- Timestamp:
- Sep 4, 2007 11:41:37 AM (17 years ago)
- Location:
- trunk/src/VBox/Main
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Main/GuestImpl.cpp
r4498 r4513 174 174 STDMETHODIMP Guest::COMSETTER(MemoryBalloonSize) (ULONG aMemoryBalloonSize) 175 175 { 176 /** @todo fail if larger than physical memory */ 177 178 AutoCaller autoCaller (this); 179 CheckComRCReturnRC (autoCaller.rc()); 180 181 AutoReaderLock alock (this); 182 183 mMemoryBalloonSize = aMemoryBalloonSize; 184 185 return S_OK; 176 AutoCaller autoCaller (this); 177 CheckComRCReturnRC (autoCaller.rc()); 178 179 AutoReaderLock alock (this); 180 181 HRESULT ret = mParent->machine()->COMSETTER(MemoryBalloonSize)(aMemoryBalloonSize); 182 if (ret == S_OK) 183 { 184 mMemoryBalloonSize = aMemoryBalloonSize; 185 /* forward the information to the VMM device */ 186 VMMDev *vmmDev = mParent->getVMMDev(); 187 if (vmmDev) 188 vmmDev->getVMMDevPort()->pfnSetMemoryBalloon(vmmDev->getVMMDevPort(), aMemoryBalloonSize); 189 } 190 191 return ret; 186 192 } 187 193 -
trunk/src/VBox/Main/MachineImpl.cpp
r4498 r4513 41 41 #include "GuestOSTypeImpl.h" 42 42 #include "VirtualBoxErrorInfoImpl.h" 43 #include "GuestImpl.h" 43 44 44 45 #include "USBProxyService.h" … … 164 165 /* default values for a newly created machine */ 165 166 mMemorySize = 128; 167 mMemoryBalloonSize = 0; 166 168 mVRAMSize = 8; 167 169 mMonitorCount = 1; … … 188 190 189 191 if (mMemorySize != that.mMemorySize || 192 mMemoryBalloonSize != that.mMemoryBalloonSize || 190 193 mVRAMSize != that.mVRAMSize || 191 194 mMonitorCount != that.mMonitorCount || … … 977 980 return S_OK; 978 981 } 982 983 984 STDMETHODIMP Machine::COMGETTER(MemoryBalloonSize) (ULONG *memoryBalloonSize) 985 { 986 if (!memoryBalloonSize) 987 return E_POINTER; 988 989 AutoCaller autoCaller (this); 990 CheckComRCReturnRC (autoCaller.rc()); 991 992 AutoReaderLock alock (this); 993 994 *memoryBalloonSize = mHWData->mMemoryBalloonSize; 995 996 return S_OK; 997 } 998 999 STDMETHODIMP Machine::COMSETTER(MemoryBalloonSize) (ULONG memoryBalloonSize) 1000 { 1001 /* check limits */ 1002 if (memoryBalloonSize >= VMMDEV_MAX_MEMORY_BALLOON(mHWData->mMemorySize)) 1003 return setError (E_INVALIDARG, 1004 tr ("Invalid memory balloon size: %lu MB (must be in range [%lu, %lu] MB)"), 1005 memoryBalloonSize, 0, VMMDEV_MAX_MEMORY_BALLOON(mHWData->mMemorySize)); 1006 1007 AutoCaller autoCaller (this); 1008 CheckComRCReturnRC (autoCaller.rc()); 1009 1010 AutoLock alock (this); 1011 1012 HRESULT rc = checkStateDependency (MutableStateDep); 1013 CheckComRCReturnRC (rc); 1014 1015 mHWData.backup(); 1016 mHWData->mMemoryBalloonSize = memoryBalloonSize; 1017 1018 return S_OK; 1019 } 1020 979 1021 980 1022 STDMETHODIMP Machine::COMGETTER(MonitorCount) (ULONG *monitorCount) … … 3721 3763 } 3722 3764 3765 /* Guest node (optional) */ 3766 { 3767 CFGNODE GuestNode = 0; 3768 CFGLDRGetChildNode (machineNode, "Guest", 0, &GuestNode); 3769 if (GuestNode) 3770 { 3771 uint32_t memoryBalloonSize = 0; 3772 CFGLDRQueryUInt32 (GuestNode, "MemoryBalloonSize", &memoryBalloonSize); 3773 mHWData->mMemoryBalloonSize = memoryBalloonSize; 3774 3775 CFGLDRReleaseNode (GuestNode); 3776 } 3777 } 3778 3723 3779 /* 3724 3780 * NOTE: the assignment below must be the last thing to do, … … 5386 5442 if (FAILED (rc)) 5387 5443 break; 5444 } 5445 5446 /* Guest node (optional) */ 5447 { 5448 CFGNODE GuestNode = 0; 5449 CFGLDRGetChildNode (machineNode, "Guest", 0, &GuestNode); 5450 /* first, delete the entire node if exists */ 5451 if (GuestNode) 5452 CFGLDRDeleteNode (GuestNode); 5453 /* then recreate it */ 5454 GuestNode = 0; 5455 CFGLDRCreateChildNode (machineNode, "Guest", &GuestNode); 5456 if (GuestNode) 5457 { 5458 CFGLDRSetUInt32 (GuestNode, "MemoryBalloonSize", mHWData->mMemoryBalloonSize); 5459 CFGLDRReleaseNode (GuestNode); 5460 } 5388 5461 } 5389 5462 -
trunk/src/VBox/Main/VMMDevInterface.cpp
r4498 r4513 351 351 *pcRect = cRect; 352 352 } 353 354 return VINF_SUCCESS; 355 } 356 357 /** 358 * Request the statistics interval 359 * 360 * @returns VBox status code. 361 * @param pInterface Pointer to this interface. 362 * @param pulInterval Pointer to interval in seconds 363 * @thread The emulation thread. 364 */ 365 DECLCALLBACK(int) vmmdevQueryStatisticsInterval(PPDMIVMMDEVCONNECTOR pInterface, uint32_t *pulInterval) 366 { 367 PDRVMAINVMMDEV pDrv = PDMIVMMDEVCONNECTOR_2_MAINVMMDEV(pInterface); 368 ULONG val = 0; 369 370 if (!pulInterval) 371 return VERR_INVALID_POINTER; 372 373 /* store that information in IGuest */ 374 Guest* guest = pDrv->pVMMDev->getParent()->getGuest(); 375 Assert(guest); 376 if (!guest) 377 return VERR_INVALID_PARAMETER; /** @todo wrong error */ 378 379 guest->COMGETTER(StatisticsUpdateInterval)(&val); 380 *pulInterval = val; 381 return VINF_SUCCESS; 382 } 383 384 /** 385 * Report new guest statistics 386 * 387 * @returns VBox status code. 388 * @param pInterface Pointer to this interface. 389 * @param pGuestStats Guest statistics 390 * @thread The emulation thread. 391 */ 392 DECLCALLBACK(int) vmmdevReportStatistics(PPDMIVMMDEVCONNECTOR pInterface, VBoxGuestStatistics *pGuestStats) 393 { 394 PDRVMAINVMMDEV pDrv = PDMIVMMDEVCONNECTOR_2_MAINVMMDEV(pInterface); 395 396 Assert(pGuestStats); 397 if (!pGuestStats) 398 return VERR_INVALID_POINTER; 399 400 /* store that information in IGuest */ 401 Guest* guest = pDrv->pVMMDev->getParent()->getGuest(); 402 Assert(guest); 403 if (!guest) 404 return VERR_INVALID_PARAMETER; /** @todo wrong error */ 405 406 if (pGuestStats->u32StatCaps & VBOX_GUEST_STAT_CPU_LOAD) 407 guest->SetStatistic(GuestStatisticType_CPULoad, pGuestStats->u32CpuLoad); 408 409 if (pGuestStats->u32StatCaps & VBOX_GUEST_STAT_THREADS) 410 guest->SetStatistic(GuestStatisticType_Threads, pGuestStats->u32Threads); 411 412 if (pGuestStats->u32StatCaps & VBOX_GUEST_STAT_PROCESSES) 413 guest->SetStatistic(GuestStatisticType_Processes, pGuestStats->u32Processes); 414 415 if (pGuestStats->u32StatCaps & VBOX_GUEST_STAT_PHYS_MEM_TOTAL) 416 guest->SetStatistic(GuestStatisticType_PhysMemTotal, pGuestStats->u32PhysMemTotal); 417 418 if (pGuestStats->u32StatCaps & VBOX_GUEST_STAT_PHYS_MEM_AVAIL) 419 guest->SetStatistic(GuestStatisticType_PhysMemAvailable, pGuestStats->u32PhysMemAvail); 420 421 if (pGuestStats->u32StatCaps & VBOX_GUEST_STAT_PHYS_MEM_BALLOON) 422 guest->SetStatistic(GuestStatisticType_PhysMemBalloon, pGuestStats->u32PhysMemBalloon); 423 424 if (pGuestStats->u32StatCaps & VBOX_GUEST_STAT_PAGE_FILE_SIZE) 425 guest->SetStatistic(GuestStatisticType_PageFileSize, pGuestStats->u32PageFileSize); 353 426 354 427 return VINF_SUCCESS; … … 543 616 pData->Connector.pfnSetVisibleRegion = vmmdevSetVisibleRegion; 544 617 pData->Connector.pfnQueryVisibleRegion = vmmdevQueryVisibleRegion; 618 pData->Connector.pfnReportStatistics = vmmdevReportStatistics; 619 pData->Connector.pfnQueryStatisticsInterval = vmmdevQueryStatisticsInterval; 545 620 546 621 #ifdef VBOX_HGCM -
trunk/src/VBox/Main/idl/VirtualBox.xidl
r4498 r4513 409 409 <enum 410 410 name="GuestStatisticType" 411 uuid=" da89a1b7-e602-45ac-84b7-29c9d12b92d5"411 uuid="a7cffd08-665f-4156-b2e9-2b3c64e213da" 412 412 > 413 413 <const name="CPULoad" value="0"> … … 436 436 </desc> 437 437 </const> 438 <const name="PageFileSize" value="5"> 438 <const name="PhysMemBalloon" value="5"> 439 <desc> 440 Ballooned physical memory in megabytes. 441 </desc> 442 </const> 443 <const name="PageFileSize" value="6"> 439 444 <desc> 440 445 Pagefile size in megabytes. … … 2016 2021 <interface 2017 2022 name="IMachine" extends="$unknown" 2018 uuid=" 31f7169f-14da-4c55-8cb6-a3665186e35e"2023 uuid="dcfb87c4-18a9-4a1e-9b1f-6f68f920535b" 2019 2024 wsmap="managed" 2020 2025 > … … 2163 2168 2164 2169 <attribute name="memorySize" type="unsigned long"> 2165 <desc>Sytem memory size in megabytes.</desc> 2170 <desc>System memory size in megabytes.</desc> 2171 </attribute> 2172 2173 <attribute name="memoryBalloonSize" type="unsigned long"> 2174 <desc>Initial memory balloon size in megabytes.</desc> 2166 2175 </attribute> 2167 2176 -
trunk/src/VBox/Main/include/MachineImpl.h
r4498 r4513 221 221 222 222 ULONG mMemorySize; 223 ULONG mMemoryBalloonSize; 223 224 ULONG mVRAMSize; 224 225 ULONG mMonitorCount; … … 441 442 STDMETHOD(COMGETTER(MemorySize))(ULONG *memorySize); 442 443 STDMETHOD(COMSETTER(MemorySize))(ULONG memorySize); 444 STDMETHOD(COMGETTER(MemoryBalloonSize))(ULONG *memoryBalloonSize); 445 STDMETHOD(COMSETTER(MemoryBalloonSize))(ULONG memoryBalloonSize); 443 446 STDMETHOD(COMGETTER(VRAMSize))(ULONG *memorySize); 444 447 STDMETHOD(COMSETTER(VRAMSize))(ULONG memorySize); -
trunk/src/VBox/Main/xml/VirtualBox-settings-common.xsd
r4498 r4513 383 383 </xsd:complexType> 384 384 385 <xsd:complexType name="TGuest"> 386 <xsd:attribute name="MemoryBalloonSize" type="xsd:unsignedInt" default="0"/> 387 </xsd:complexType> 388 385 389 <xsd:complexType name="TBoot"> 386 390 <xsd:sequence> … … 662 666 <xsd:element name="ExtraData" type="TExtraData" minOccurs="0"/> 663 667 <xsd:element name="Snapshot" type="TSnapshot" minOccurs="0"/> 668 <xsd:element name="Guest" type="TGuest" minOccurs="0"/> 664 669 </xsd:all> 665 670 <xsd:attribute name="name" type="TNonEmptyString" use="required"/>
Note:
See TracChangeset
for help on using the changeset viewer.