Changeset 27023 in vbox for trunk/src/VBox/Additions/WINNT
- Timestamp:
- Mar 4, 2010 1:32:45 PM (15 years ago)
- svn:sync-xref-src-repo-rev:
- 58333
- Location:
- trunk/src/VBox/Additions/WINNT/VBoxGuest
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/WINNT/VBoxGuest/VBoxGuest.cpp
r26999 r27023 558 558 559 559 #ifdef VBOX_WITH_MANAGEMENT 560 static int VBoxGuestSetBalloonSize(PVBOXGUESTDEVEXT pDevExt, uint32_t u32BalloonSize)560 static int VBoxGuestSetBalloonSize(PVBOXGUESTDEVEXT pDevExt, uint32_t cBalloonChunks) 561 561 { 562 562 VMMDevChangeMemBalloon *req = NULL; … … 564 564 uint32_t i; 565 565 566 if ( u32BalloonSize > pDevExt->MemBalloon.cMaxBalloons)567 { 568 AssertMsgFailed(("VBoxGuestSetBalloonSize illegal balloon size %d (max=%d)\n", u32BalloonSize, pDevExt->MemBalloon.cMaxBalloons));566 if (cBalloonChunks > pDevExt->MemBalloon.cMaxBalloonChunks) 567 { 568 AssertMsgFailed(("VBoxGuestSetBalloonSize illegal balloon size %d (max=%d)\n", cBalloonChunks, pDevExt->MemBalloon.cMaxBalloonChunks)); 569 569 return VERR_INVALID_PARAMETER; 570 570 } 571 571 572 if ( u32BalloonSize == pDevExt->MemBalloon.cBalloons)572 if (cBalloonChunks == pDevExt->MemBalloon.cBalloonChunks) 573 573 return VINF_SUCCESS; /* nothing to do */ 574 574 … … 578 578 return rc; 579 579 580 if ( u32BalloonSize > pDevExt->MemBalloon.cBalloons)580 if (cBalloonChunks > pDevExt->MemBalloon.cBalloonChunks) 581 581 { 582 582 /* inflate */ 583 for (i = pDevExt->MemBalloon.cBalloon s; i < u32BalloonSize; i++)583 for (i = pDevExt->MemBalloon.cBalloonChunks; i < cBalloonChunks; i++) 584 584 { 585 585 #ifndef TARGET_NT4 … … 669 669 #endif 670 670 pDevExt->MemBalloon.paMdlMemBalloon[i] = pMdl; 671 pDevExt->MemBalloon.cBalloon s++;671 pDevExt->MemBalloon.cBalloonChunks++; 672 672 } 673 673 } … … 676 676 { 677 677 /* deflate */ 678 for (i = pDevExt->MemBalloon.cBalloon s; i > u32BalloonSize; i--)678 for (i = pDevExt->MemBalloon.cBalloonChunks; i > cBalloonChunks; i--) 679 679 { 680 680 uint32_t index = i - 1; … … 718 718 719 719 pDevExt->MemBalloon.paMdlMemBalloon[index] = NULL; 720 pDevExt->MemBalloon.cBalloon s--;721 } 722 } 723 } 724 Assert(pDevExt->MemBalloon.cBalloon s <= pDevExt->MemBalloon.cMaxBalloons);720 pDevExt->MemBalloon.cBalloonChunks--; 721 } 722 } 723 } 724 Assert(pDevExt->MemBalloon.cBalloonChunks <= pDevExt->MemBalloon.cMaxBalloonChunks); 725 725 726 726 end: … … 752 752 if (!pDevExt->MemBalloon.paMdlMemBalloon) 753 753 { 754 pDevExt->MemBalloon.cMaxBalloon s = req->u32PhysMemSize;755 pDevExt->MemBalloon.paMdlMemBalloon = (PMDL *)ExAllocatePool(PagedPool, req-> u32PhysMemSize* sizeof(PMDL));754 pDevExt->MemBalloon.cMaxBalloonChunks = req->cPhysMemChunks; 755 pDevExt->MemBalloon.paMdlMemBalloon = (PMDL *)ExAllocatePool(PagedPool, req->cPhysMemChunks * sizeof(PMDL)); 756 756 Assert(pDevExt->MemBalloon.paMdlMemBalloon); 757 757 if (!pDevExt->MemBalloon.paMdlMemBalloon) 758 758 return VERR_NO_MEMORY; 759 759 } 760 Assert(pDevExt->MemBalloon.cMaxBalloon s == req->u32PhysMemSize);761 762 rc = VBoxGuestSetBalloonSize(pDevExt, req-> u32BalloonSize);760 Assert(pDevExt->MemBalloon.cMaxBalloonChunks == req->cPhysMemChunks); 761 762 rc = VBoxGuestSetBalloonSize(pDevExt, req->cBalloonChunks); 763 763 /* ignore out of memory failures */ 764 764 if (rc == VERR_NO_MEMORY) … … 766 766 767 767 if (pMemBalloonSize) 768 *pMemBalloonSize = pDevExt->MemBalloon.cBalloon s;768 *pMemBalloonSize = pDevExt->MemBalloon.cBalloonChunks; 769 769 } 770 770 … … 780 780 ULONG dummy; 781 781 782 pDevExt->MemBalloon.cBalloon s= 0;783 pDevExt->MemBalloon.cMaxBalloon s= 0;782 pDevExt->MemBalloon.cBalloonChunks = 0; 783 pDevExt->MemBalloon.cMaxBalloonChunks = 0; 784 784 pDevExt->MemBalloon.paMdlMemBalloon = NULL; 785 785 … … 798 798 pDevExt->MemBalloon.paMdlMemBalloon = NULL; 799 799 } 800 Assert(pDevExt->MemBalloon.cBalloon s == 0);800 Assert(pDevExt->MemBalloon.cBalloonChunks == 0); 801 801 #endif 802 802 } … … 1382 1382 case VBOXGUEST_IOCTL_CHECK_BALLOON: 1383 1383 { 1384 ULONG *pMemBalloonSize = (ULONG *)pBuf;1384 VBoxGuestCheckBalloonInfo *pInfo = (VBoxGuestCheckBalloonInfo *)pBuf; 1385 1385 1386 1386 if (pStack->Parameters.DeviceIoControl.OutputBufferLength != sizeof(ULONG)) … … 1392 1392 } 1393 1393 1394 int rc = VBoxGuestQueryMemoryBalloon(pDevExt, pMemBalloonSize); 1394 ULONG cMemoryBalloonChunks; 1395 int rc = VBoxGuestQueryMemoryBalloon(pDevExt, &cMemoryBalloonChunks); 1395 1396 if (RT_FAILURE(rc)) 1396 1397 { … … 1401 1402 { 1402 1403 cbOut = pStack->Parameters.DeviceIoControl.OutputBufferLength; 1404 pInfo->cBalloonChunks = cMemoryBalloonChunks; 1405 pInfo->fHandleInR3 = false; 1403 1406 } 1404 1407 break; -
trunk/src/VBox/Additions/WINNT/VBoxGuest/VBoxGuest_Internal.h
r25022 r27023 216 216 struct 217 217 { 218 uint32_t cBalloon s;219 uint32_t cMaxBalloon s;218 uint32_t cBalloonChunks; 219 uint32_t cMaxBalloonChunks; 220 220 PMDL *paMdlMemBalloon; 221 221 } MemBalloon;
Note:
See TracChangeset
for help on using the changeset viewer.