Changeset 20747 in vbox for trunk/src/VBox/VMM
- Timestamp:
- Jun 21, 2009 8:23:22 PM (16 years ago)
- svn:sync-xref-src-repo-rev:
- 48863
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/REMInternal.h
r20746 r20747 110 110 uint32_t idxSelf; 111 111 uint32_t volatile idxNext; 112 } REMHANDLERNOTIFICATION, *PREMHANDLERNOTIFICATION; 112 } REMHANDLERNOTIFICATION; 113 /** Pointer to a handler notification record. */ 114 typedef REMHANDLERNOTIFICATION *PREMHANDLERNOTIFICATION; 113 115 114 116 /** -
trunk/src/VBox/VMM/VMMAll/REMAll.cpp
r20746 r20747 93 93 static void remNotifyHandlerInsert(PVM pVM, PREMHANDLERNOTIFICATION pRec) 94 94 { 95 uint32_t idxFree; 96 uint32_t idxNext; 95 /* 96 * Fetch a free record. 97 */ 98 uint32_t cFlushes = 0; 99 uint32_t idxFree; 97 100 PREMHANDLERNOTIFICATION pFree; 98 99 /* Fetch a free record. */100 101 do 101 102 { … … 103 104 if (idxFree == (uint32_t)-1) 104 105 { 105 pFree = NULL; 106 break; 106 do 107 { 108 Assert(cFlushes++ != 128); 109 AssertFatal(cFlushes < _1M); 110 remFlushHandlerNotifications(pVM); 111 idxFree = ASMAtomicUoReadU32(&pVM->rem.s.idxFreeList); 112 } while (idxFree == (uint32_t)-1); 107 113 } 108 114 pFree = &pVM->rem.s.aHandlerNotifications[idxFree]; 109 115 } while (!ASMAtomicCmpXchgU32(&pVM->rem.s.idxFreeList, pFree->idxNext, idxFree)); 110 116 111 if (!pFree) 112 { 113 remFlushHandlerNotifications(pVM); 114 /** @todo why are we dropping the pReq here without a fight? If we can drop 115 * one, we can drop all... */ 116 return; 117 } 118 119 /* Copy the record. */ 120 *pFree = *pRec; 121 pFree->idxSelf = idxFree; /* was trashed */ 122 123 /* Insert it into the pending list. */ 117 /* 118 * Copy the record. 119 */ 120 pFree->enmKind = pRec->enmKind; 121 pFree->u = pRec->u; 122 123 /* 124 * Insert it into the pending list. 125 */ 126 uint32_t idxNext; 124 127 do 125 128 { -
trunk/src/VBox/VMM/testcase/tstVMStructGC.cpp
r20689 r20747 739 739 GEN_CHECK_OFF(REM, Env); 740 740 741 GEN_CHECK_SIZE(REMHANDLERNOTIFICATION); 742 GEN_CHECK_OFF(REMHANDLERNOTIFICATION, enmKind); 743 GEN_CHECK_OFF(REMHANDLERNOTIFICATION, u); 744 GEN_CHECK_OFF(REMHANDLERNOTIFICATION, u.PhysicalRegister.GCPhys); 745 GEN_CHECK_OFF(REMHANDLERNOTIFICATION, u.PhysicalRegister.cb); 746 GEN_CHECK_OFF(REMHANDLERNOTIFICATION, u.PhysicalRegister.enmType); 747 GEN_CHECK_OFF(REMHANDLERNOTIFICATION, u.PhysicalRegister.fHasHCHandler); 748 GEN_CHECK_OFF(REMHANDLERNOTIFICATION, u.PhysicalDeregister.GCPhys); 749 GEN_CHECK_OFF(REMHANDLERNOTIFICATION, u.PhysicalDeregister.cb); 750 GEN_CHECK_OFF(REMHANDLERNOTIFICATION, u.PhysicalDeregister.enmType); 751 GEN_CHECK_OFF(REMHANDLERNOTIFICATION, u.PhysicalDeregister.fHasHCHandler); 752 GEN_CHECK_OFF(REMHANDLERNOTIFICATION, u.PhysicalDeregister.fRestoreAsRAM); 753 GEN_CHECK_OFF(REMHANDLERNOTIFICATION, u.PhysicalModify.GCPhysOld); 754 GEN_CHECK_OFF(REMHANDLERNOTIFICATION, u.PhysicalModify.GCPhysNew); 755 GEN_CHECK_OFF(REMHANDLERNOTIFICATION, u.PhysicalModify.cb); 756 GEN_CHECK_OFF(REMHANDLERNOTIFICATION, u.PhysicalModify.enmType); 757 GEN_CHECK_OFF(REMHANDLERNOTIFICATION, u.PhysicalModify.fHasHCHandler); 758 GEN_CHECK_OFF(REMHANDLERNOTIFICATION, u.PhysicalModify.fRestoreAsRAM); 759 GEN_CHECK_OFF(REMHANDLERNOTIFICATION, idxSelf); 760 GEN_CHECK_OFF(REMHANDLERNOTIFICATION, idxNext); 761 741 762 GEN_CHECK_SIZE(SELM); 742 763 GEN_CHECK_OFF(SELM, offVM); -
trunk/src/VBox/VMM/testcase/tstVMStructSize.cpp
r20530 r20747 278 278 CHECK_MEMBER_ALIGNMENT(PGMMMIO2RANGE, RamRange, 16); 279 279 280 /* misc*/280 /* rem */ 281 281 CHECK_MEMBER_ALIGNMENT(REM, aGCPtrInvalidatedPages, 8); 282 CHECK_PADDING3(EMCPU, u.FatalLongJump, u.achPaddingFatalLongJump);283 282 CHECK_PADDING3(REMHANDLERNOTIFICATION, u.PhysicalRegister, u.padding); 284 283 CHECK_PADDING3(REMHANDLERNOTIFICATION, u.PhysicalDeregister, u.padding); 285 284 CHECK_PADDING3(REMHANDLERNOTIFICATION, u.PhysicalModify, u.padding); 285 CHECK_SIZE_ALIGNMENT(REMHANDLERNOTIFICATION, 8); 286 CHECK_MEMBER_ALIGNMENT(REMHANDLERNOTIFICATION, u.PhysicalDeregister.GCPhys, 8); 287 288 /* misc */ 289 CHECK_PADDING3(EMCPU, u.FatalLongJump, u.achPaddingFatalLongJump); 286 290 CHECK_SIZE_ALIGNMENT(VMMR0JMPBUF, 8); 287 291 CHECK_SIZE_ALIGNMENT(PATCHINFO, 8);
Note:
See TracChangeset
for help on using the changeset viewer.