Changeset 73097 in vbox for trunk/src/VBox/VMM/VMMR3/PGMPhys.cpp
- Timestamp:
- Jul 12, 2018 9:06:33 PM (7 years ago)
- svn:sync-xref-src-repo-rev:
- 123672
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR3/PGMPhys.cpp
r70977 r73097 1561 1561 * Allocate memory for the new chunk. 1562 1562 */ 1563 size_t const cChunkPages = RT_ALIGN_Z(RT_UOFFSETOF (PGMRAMRANGE, aPages[cRamPages]), PAGE_SIZE) >> PAGE_SHIFT;1563 size_t const cChunkPages = RT_ALIGN_Z(RT_UOFFSETOF_DYN(PGMRAMRANGE, aPages[cRamPages]), PAGE_SIZE) >> PAGE_SHIFT; 1564 1564 PSUPPAGE paChunkPages = (PSUPPAGE)RTMemTmpAllocZ(sizeof(SUPPAGE) * cChunkPages); 1565 1565 AssertReturn(paChunkPages, VERR_NO_TMP_MEMORY); … … 1714 1714 AssertCompile(sizeof(PGMRAMRANGE) + sizeof(PGMPAGE) * 261616 < 4U*_1M - PAGE_SIZE * 2); 1715 1715 } 1716 AssertRelease(RT_UOFFSETOF (PGMRAMRANGE, aPages[cPagesPerChunk]) + PAGE_SIZE * 2 <= cbChunk);1716 AssertRelease(RT_UOFFSETOF_DYN(PGMRAMRANGE, aPages[cPagesPerChunk]) + PAGE_SIZE * 2 <= cbChunk); 1717 1717 1718 1718 RTGCPHYS cPagesLeft = cPages; … … 1739 1739 * Allocate, initialize and link the new RAM range. 1740 1740 */ 1741 const size_t cbRamRange = RT_ OFFSETOF(PGMRAMRANGE, aPages[cPages]);1741 const size_t cbRamRange = RT_UOFFSETOF_DYN(PGMRAMRANGE, aPages[cPages]); 1742 1742 PPGMRAMRANGE pNew; 1743 1743 rc = MMR3HyperAllocOnceNoRel(pVM, cbRamRange, 0, MM_TAG_PGM_PHYS, (void **)&pNew); … … 2267 2267 2268 2268 const uint32_t cPages = cb >> PAGE_SHIFT; 2269 const size_t cbRamRange = RT_ OFFSETOF(PGMRAMRANGE, aPages[cPages]);2270 rc = MMHyperAlloc(pVM, RT_ OFFSETOF(PGMRAMRANGE, aPages[cPages]), 16, MM_TAG_PGM_PHYS, (void **)&pNew);2269 const size_t cbRamRange = RT_UOFFSETOF_DYN(PGMRAMRANGE, aPages[cPages]); 2270 rc = MMHyperAlloc(pVM, RT_UOFFSETOF_DYN(PGMRAMRANGE, aPages[cPages]), 16, MM_TAG_PGM_PHYS, (void **)&pNew); 2271 2271 AssertLogRelMsgRCReturnStmt(rc, ("cbRamRange=%zu\n", cbRamRange), pgmUnlock(pVM), rc); 2272 2272 … … 2539 2539 } 2540 2540 AssertRelease(cPagesPerChunk <= PGM_MMIO2_MAX_PAGE_COUNT); /* See above note. */ 2541 AssertRelease(RT_UOFFSETOF (PGMREGMMIORANGE, RamRange.aPages[cPagesPerChunk]) + PAGE_SIZE * 2 <= cbChunk);2541 AssertRelease(RT_UOFFSETOF_DYN(PGMREGMMIORANGE, RamRange.aPages[cPagesPerChunk]) + PAGE_SIZE * 2 <= cbChunk); 2542 2542 if (pcbChunk) 2543 2543 *pcbChunk = cbChunk; … … 2600 2600 */ 2601 2601 const uint32_t cPagesTrackedByChunk = RT_MIN(cPagesLeft, cPagesPerChunk); 2602 const size_t cbRange = RT_ OFFSETOF(PGMREGMMIORANGE, RamRange.aPages[cPagesTrackedByChunk]);2602 const size_t cbRange = RT_UOFFSETOF_DYN(PGMREGMMIORANGE, RamRange.aPages[cPagesTrackedByChunk]); 2603 2603 PPGMREGMMIORANGE pNew = NULL; 2604 2604 if ( iChunk + 1 < cChunks … … 2638 2638 pNew = (PPGMREGMMIORANGE)pvChunk; 2639 2639 pNew->RamRange.fFlags = PGM_RAM_RANGE_FLAGS_FLOATING; 2640 pNew->RamRange.pSelfR0 = R0PtrChunk + RT_ OFFSETOF(PGMREGMMIORANGE, RamRange);2640 pNew->RamRange.pSelfR0 = R0PtrChunk + RT_UOFFSETOF(PGMREGMMIORANGE, RamRange); 2641 2641 2642 2642 /* … … 2664 2664 break; 2665 2665 } 2666 pNew->RamRange.pSelfRC = GCPtrChunk + RT_ OFFSETOF(PGMREGMMIORANGE, RamRange);2666 pNew->RamRange.pSelfRC = GCPtrChunk + RT_UOFFSETOF(PGMREGMMIORANGE, RamRange); 2667 2667 } 2668 2668 } … … 2731 2731 if (pFree->RamRange.fFlags & PGM_RAM_RANGE_FLAGS_FLOATING) 2732 2732 { 2733 const size_t cbRange = RT_ OFFSETOF(PGMREGMMIORANGE, RamRange.aPages[pFree->RamRange.cb >> X86_PAGE_SHIFT]);2733 const size_t cbRange = RT_UOFFSETOF_DYN(PGMREGMMIORANGE, RamRange.aPages[pFree->RamRange.cb >> X86_PAGE_SHIFT]); 2734 2734 size_t const cChunkPages = RT_ALIGN_Z(cbRange, PAGE_SIZE) >> PAGE_SHIFT; 2735 2735 SUPR3PageFreeEx(pFree, cChunkPages); … … 2785 2785 Assert(pVM->pgm.s.apMmio2RangesR0[idMmio2 - 1] == NIL_RTR0PTR); 2786 2786 pVM->pgm.s.apMmio2RangesR3[idMmio2 - 1] = pNew; 2787 pVM->pgm.s.apMmio2RangesR0[idMmio2 - 1] = pNew->RamRange.pSelfR0 - RT_ OFFSETOF(PGMREGMMIORANGE, RamRange);2787 pVM->pgm.s.apMmio2RangesR0[idMmio2 - 1] = pNew->RamRange.pSelfR0 - RT_UOFFSETOF(PGMREGMMIORANGE, RamRange); 2788 2788 if (pNew->fFlags & PGMREGMMIORANGE_F_LAST_CHUNK) 2789 2789 break; … … 2920 2920 if (pFree->RamRange.fFlags & PGM_RAM_RANGE_FLAGS_FLOATING) 2921 2921 { 2922 const size_t cbRange = RT_ OFFSETOF(PGMREGMMIORANGE, RamRange.aPages[pFree->RamRange.cb >> X86_PAGE_SHIFT]);2922 const size_t cbRange = RT_UOFFSETOF_DYN(PGMREGMMIORANGE, RamRange.aPages[pFree->RamRange.cb >> X86_PAGE_SHIFT]); 2923 2923 size_t const cChunkPages = RT_ALIGN_Z(cbRange, PAGE_SIZE) >> PAGE_SHIFT; 2924 2924 SUPR3PageFreeEx(pFree, cChunkPages); … … 3198 3198 if (pCur->RamRange.fFlags & PGM_RAM_RANGE_FLAGS_FLOATING) 3199 3199 { 3200 const size_t cbRange = RT_ OFFSETOF(PGMREGMMIORANGE, RamRange.aPages[cPages]);3200 const size_t cbRange = RT_UOFFSETOF_DYN(PGMREGMMIORANGE, RamRange.aPages[cPages]); 3201 3201 size_t const cChunkPages = RT_ALIGN_Z(cbRange, PAGE_SIZE) >> PAGE_SHIFT; 3202 3202 SUPR3PageFreeEx(pCur, cChunkPages); … … 4025 4025 */ 4026 4026 PPGMROMRANGE pRomNew; 4027 rc = MMHyperAlloc(pVM, RT_ OFFSETOF(PGMROMRANGE, aPages[cPages]), 0, MM_TAG_PGM_PHYS, (void **)&pRomNew);4027 rc = MMHyperAlloc(pVM, RT_UOFFSETOF_DYN(PGMROMRANGE, aPages[cPages]), 0, MM_TAG_PGM_PHYS, (void **)&pRomNew); 4028 4028 if (RT_SUCCESS(rc)) 4029 4029 { 4030 4030 PPGMRAMRANGE pRamNew = NULL; 4031 4031 if (!fRamExists) 4032 rc = MMHyperAlloc(pVM, RT_ OFFSETOF(PGMRAMRANGE, aPages[cPages]), sizeof(PGMPAGE), MM_TAG_PGM_PHYS, (void **)&pRamNew);4032 rc = MMHyperAlloc(pVM, RT_UOFFSETOF_DYN(PGMRAMRANGE, aPages[cPages]), sizeof(PGMPAGE), MM_TAG_PGM_PHYS, (void **)&pRamNew); 4033 4033 if (RT_SUCCESS(rc)) 4034 4034 {
Note:
See TracChangeset
for help on using the changeset viewer.