Changeset 5219 in vbox
- Timestamp:
- Oct 10, 2007 2:14:15 PM (17 years ago)
- Location:
- trunk/src/VBox/VMM/VMMR0
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/GVMMR0.cpp
r5211 r5219 476 476 pGVM->gvmm.s.VMPagesMemObj = NIL_RTR0MEMOBJ; 477 477 pGVM->gvmm.s.VMPagesMapObj = NIL_RTR0MEMOBJ; 478 pGVM->gvmm.s.HaltEvent = NIL_RTSEMEVENT;478 pGVM->gvmm.s.HaltEventMulti = NIL_RTSEMEVENTMULTI; 479 479 } 480 480 … … 559 559 if (RT_SUCCESS(rc)) 560 560 { 561 if (pGVM->gvmm.s.HaltEvent == NIL_RTSEMEVENT)562 { 563 rc = RTSemEvent Create(&pGVM->gvmm.s.HaltEvent);561 if (pGVM->gvmm.s.HaltEventMulti == NIL_RTSEMEVENTMULTI) 562 { 563 rc = RTSemEventMultiCreate(&pGVM->gvmm.s.HaltEventMulti); 564 564 if (RT_FAILURE(rc)) 565 pGVM->gvmm.s.HaltEvent = NIL_RTSEMEVENT;565 pGVM->gvmm.s.HaltEventMulti = NIL_RTSEMEVENTMULTI; 566 566 } 567 567 else … … 1129 1129 { 1130 1130 ASMAtomicXchgU64(&pCurGVM->gvmm.s.u64HaltExpire, 0); 1131 int rc = RTSemEvent Signal(pCurGVM->gvmm.s.HaltEvent);1131 int rc = RTSemEventMultiSignal(pCurGVM->gvmm.s.HaltEventMulti); 1132 1132 AssertRC(rc); 1133 1133 cWoken++; … … 1158 1158 { 1159 1159 ASMAtomicXchgU64(&pCurGVM->gvmm.s.u64HaltExpire, 0); 1160 int rc = RTSemEvent Signal(pCurGVM->gvmm.s.HaltEvent);1160 int rc = RTSemEventMultiSignal(pCurGVM->gvmm.s.HaltEventMulti); 1161 1161 AssertRC(rc); 1162 1162 cWoken++; … … 1177 1177 { 1178 1178 ASMAtomicXchgU64(&pCurGVM->gvmm.s.u64HaltExpire, 0); 1179 int rc = RTSemEvent Signal(pCurGVM->gvmm.s.HaltEvent);1179 int rc = RTSemEventMultiSignal(pCurGVM->gvmm.s.HaltEventMulti); 1180 1180 AssertRC(rc); 1181 1181 cWoken++; … … 1239 1239 1240 1240 uint32_t cMillies = (u64ExpireGipTime - u64Now) / 1000000; 1241 rc = RTSemEvent WaitNoResume(pGVM->gvmm.s.HaltEvent, cMillies ? cMillies : 1);1241 rc = RTSemEventMultiWaitNoResume(pGVM->gvmm.s.HaltEventMulti, cMillies ? cMillies : 1); 1242 1242 ASMAtomicXchgU64(&pGVM->gvmm.s.u64HaltExpire, 0); 1243 1243 if (rc == VERR_TIMEOUT) … … 1252 1252 RTSemFastMutexRelease(pGVMM->UsedLock); 1253 1253 } 1254 1255 /* Make sure false wake up calls (gvmmR0SchedDoWakeUps) cause us to spin. */ 1256 RTSemEventMultiReset(pGVM->gvmm.s.HaltEventMulti); 1254 1257 1255 1258 return rc; … … 1296 1299 } 1297 1300 1298 int rc2 = RTSemEvent Signal(pGVM->gvmm.s.HaltEvent);1301 int rc2 = RTSemEventMultiSignal(pGVM->gvmm.s.HaltEventMulti); 1299 1302 AssertRC(rc2); 1300 1303 -
trunk/src/VBox/VMM/VMMR0/GVMMR0Internal.h
r5211 r5219 40 40 uint64_t volatile u64HaltExpire; 41 41 /** The event semaphore the EMT thread is blocking on. */ 42 RTSEMEVENT HaltEvent;42 RTSEMEVENTMULTI HaltEventMulti; 43 43 /** The APIC ID of the CPU that EMT was scheduled on the last time we checked. */ 44 44 uint8_t iCpuEmt;
Note:
See TracChangeset
for help on using the changeset viewer.