Changeset 28012 in vbox for trunk/src/VBox/VMM
- Timestamp:
- Apr 6, 2010 2:52:25 PM (15 years ago)
- svn:sync-xref-src-repo-rev:
- 59719
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/GMM.cpp
r28000 r28012 291 291 292 292 /** 293 * @see GMMR0QueryTotal BalloonSizeReq294 */ 295 GMMR3DECL(int) GMMR3QueryTotal BalloonSize(PVM pVM, uint64_t *pcTotalBalloonedPages)296 { 297 GMM BALLOONQUERYREQ Req;298 Req.Hdr.u32Magic = SUPVMMR0REQHDR_MAGIC; 299 Req.Hdr.cbReq = sizeof(Req); 300 Req.c BalloonedPages = 0;301 302 *pcTotal BalloonedPages = 0;303 int rc = VMMR3CallR0(pVM, VMMR0_DO_GMM_QUERY_TOTAL_ BALLOON_SIZE, 0, &Req.Hdr);293 * @see GMMR0QueryTotalFreePagesReq 294 */ 295 GMMR3DECL(int) GMMR3QueryTotalFreePages(PVM pVM, uint64_t *pcTotalFreePages) 296 { 297 GMMFREEQUERYREQ Req; 298 Req.Hdr.u32Magic = SUPVMMR0REQHDR_MAGIC; 299 Req.Hdr.cbReq = sizeof(Req); 300 Req.cFreePages = 0; 301 302 *pcTotalFreePages = 0; 303 int rc = VMMR3CallR0(pVM, VMMR0_DO_GMM_QUERY_TOTAL_FREE_PAGES, 0, &Req.Hdr); 304 304 if (rc == VINF_SUCCESS) 305 *pcTotal BalloonedPages = Req.cBalloonedPages;305 *pcTotalFreePages = Req.cFreePages; 306 306 307 307 return rc; -
trunk/src/VBox/VMM/PGMPhys.cpp
r28003 r28012 954 954 955 955 /** 956 * Query the VM and host balloon sizes956 * Query the amount of free memory inside VMMR0 957 957 * 958 958 * @returns VBox status code. 959 959 * @param pVM The VM handle. 960 * @param puVMBalloonSize Pointer to VM balloon size (in megabytes) 961 * @param puTotalBalloonSize Pointer to total balloon size of all VMs (in megabytes) 962 */ 963 VMMR3DECL(int) PGMR3QueryBalloonSize(PVM pVM, unsigned *puVMBalloonSize, unsigned *puTotalBalloonSize) 960 * @param puTotalFreeSize Pointer to total free (allocated but not used yet) memory inside VMMR0 (in megabytes) 961 */ 962 VMMR3DECL(int) PGMR3QueryFreeMemory(PVM pVM, unsigned *puTotalFreeSize) 964 963 { 965 964 int rc = VINF_SUCCESS; 966 965 967 if (puVMBalloonSize) 968 *puVMBalloonSize = pVM->pgm.s.cBalloonedPages * _4K / _1M; 969 970 if (puTotalBalloonSize) 966 if (puTotalFreeSize) 971 967 { 972 968 uint64_t cPages = 0; 973 rc = GMMR3QueryTotal BalloonSize(pVM, &cPages);969 rc = GMMR3QueryTotalFreePages(pVM, &cPages); 974 970 AssertRC(rc); 975 *puTotal BalloonSize = (unsigned) (cPages * _4K / _1M);971 *puTotalFreeSize = (unsigned) (cPages * _4K / _1M); 976 972 } 977 973 -
trunk/src/VBox/VMM/VMMR0/GMMR0.cpp
r27999 r28012 2992 2992 2993 2993 /** 2994 * Return the total amount of ballooned pages for all VMs2994 * Return the total amount of free pages 2995 2995 * 2996 2996 * @returns VBox status code: … … 2998 2998 * @param pReq The request packet. 2999 2999 */ 3000 GMMR0DECL(int) GMMR0QueryTotal BalloonSizeReq(PVM pVM, PGMMBALLOONQUERYREQ pReq)3000 GMMR0DECL(int) GMMR0QueryTotalFreePagesReq(PVM pVM, PGMMFREEQUERYREQ pReq) 3001 3001 { 3002 3002 /* … … 3005 3005 AssertPtrReturn(pVM, VERR_INVALID_POINTER); 3006 3006 AssertPtrReturn(pReq, VERR_INVALID_POINTER); 3007 AssertMsgReturn(pReq->Hdr.cbReq == sizeof(GMM BALLOONQUERYREQ),3008 ("%#x < %#x\n", pReq->Hdr.cbReq, sizeof(GMM BALLOONQUERYREQ)),3007 AssertMsgReturn(pReq->Hdr.cbReq == sizeof(GMMFREEQUERYREQ), 3008 ("%#x < %#x\n", pReq->Hdr.cbReq, sizeof(GMMFREEQUERYREQ)), 3009 3009 VERR_INVALID_PARAMETER); 3010 3010 … … 3014 3014 PGMM pGMM; 3015 3015 GMM_GET_VALID_INSTANCE(pGMM, VERR_INTERNAL_ERROR); 3016 pReq->c BalloonedPages = pGMM->cBalloonedPages;3016 pReq->cFreePages = (pGMM->cChunks << GMM_CHUNK_SHIFT) - pGMM->cAllocatedPages; 3017 3017 GMM_CHECK_SANITY_UPON_LEAVING(pGMM); 3018 3018 -
trunk/src/VBox/VMM/VMMR0/VMMR0.cpp
r27999 r28012 910 910 return GMMR0FreeLargePageReq(pVM, idCpu, (PGMMFREELARGEPAGEREQ)pReqHdr); 911 911 912 case VMMR0_DO_GMM_QUERY_TOTAL_FREE_PAGES: 913 if (u64Arg) 914 return VERR_INVALID_PARAMETER; 915 return GMMR0QueryTotalFreePagesReq(pVM, (PGMMFREEQUERYREQ)pReqHdr); 916 912 917 case VMMR0_DO_GMM_BALLOONED_PAGES: 913 918 if (u64Arg) 914 919 return VERR_INVALID_PARAMETER; 915 920 return GMMR0BalloonedPagesReq(pVM, idCpu, (PGMMBALLOONEDPAGESREQ)pReqHdr); 916 917 case VMMR0_DO_GMM_QUERY_TOTAL_BALLOON_SIZE:918 if (u64Arg)919 return VERR_INVALID_PARAMETER;920 return GMMR0QueryTotalBalloonSizeReq(pVM, (PGMMBALLOONQUERYREQ)pReqHdr);921 921 922 922 case VMMR0_DO_GMM_MAP_UNMAP_CHUNK:
Note:
See TracChangeset
for help on using the changeset viewer.