Changeset 87774 in vbox for trunk/src/VBox/VMM/VMMAll
- Timestamp:
- Feb 16, 2021 11:40:35 PM (4 years ago)
- svn:sync-xref-src-repo-rev:
- 142830
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/TMAll.cpp
r87773 r87774 450 450 * Links a timer into the active list of a timer queue. 451 451 * 452 * @param pVM The cross context VM structure. 452 453 * @param pQueue The queue. 453 454 * @param pTimer The timer. … … 456 457 * @remarks Called while owning the relevant queue lock. 457 458 */ 458 DECL_FORCE_INLINE(void) tmTimerQueueLinkActive(P TMTIMERQUEUE pQueue, PTMTIMER pTimer, uint64_t u64Expire)459 DECL_FORCE_INLINE(void) tmTimerQueueLinkActive(PVMCC pVM, PTMTIMERQUEUE pQueue, PTMTIMER pTimer, uint64_t u64Expire) 459 460 { 460 461 Assert(!pTimer->offNext); 461 462 Assert(!pTimer->offPrev); 462 463 Assert(pTimer->enmState == TMTIMERSTATE_ACTIVE || pTimer->enmClock != TMCLOCK_VIRTUAL_SYNC); /* (active is not a stable state) */ 464 RT_NOREF(pVM); 463 465 464 466 PTMTIMER pCur = TMTIMER_GET_HEAD(pQueue); … … 478 480 TMTIMER_SET_HEAD(pQueue, pTimer); 479 481 ASMAtomicWriteU64(&pQueue->u64Expire, u64Expire); 480 DBGFTRACE_U64_TAG2(p Timer->CTX_SUFF(pVM), u64Expire, "tmTimerQueueLinkActive head", pTimer->szName);482 DBGFTRACE_U64_TAG2(pVM, u64Expire, "tmTimerQueueLinkActive head", pTimer->szName); 481 483 } 482 484 TMTIMER_SET_PREV(pCur, pTimer); … … 487 489 TMTIMER_SET_NEXT(pCur, pTimer); 488 490 TMTIMER_SET_PREV(pTimer, pCur); 489 DBGFTRACE_U64_TAG2(p Timer->CTX_SUFF(pVM), u64Expire, "tmTimerQueueLinkActive tail", pTimer->szName);491 DBGFTRACE_U64_TAG2(pVM, u64Expire, "tmTimerQueueLinkActive tail", pTimer->szName); 490 492 return; 491 493 } … … 496 498 TMTIMER_SET_HEAD(pQueue, pTimer); 497 499 ASMAtomicWriteU64(&pQueue->u64Expire, u64Expire); 498 DBGFTRACE_U64_TAG2(p Timer->CTX_SUFF(pVM), u64Expire, "tmTimerQueueLinkActive empty", pTimer->szName);500 DBGFTRACE_U64_TAG2(pVM, u64Expire, "tmTimerQueueLinkActive empty", pTimer->szName); 499 501 } 500 502 } … … 531 533 if (RT_UNLIKELY(!tmTimerTry(pTimer, TMTIMERSTATE_PENDING_SCHEDULE, TMTIMERSTATE_PENDING_RESCHEDULE))) 532 534 break; /* retry */ 533 tmTimerQueueUnlinkActive(p Queue, pTimer);535 tmTimerQueueUnlinkActive(pVM, pQueue, pTimer); 534 536 RT_FALL_THRU(); 535 537 … … 541 543 if (RT_UNLIKELY(!tmTimerTry(pTimer, TMTIMERSTATE_ACTIVE, TMTIMERSTATE_PENDING_SCHEDULE))) 542 544 break; /* retry */ 543 tmTimerQueueLinkActive(p Queue, pTimer, pTimer->u64Expire);545 tmTimerQueueLinkActive(pVM, pQueue, pTimer, pTimer->u64Expire); 544 546 return; 545 547 … … 550 552 if (RT_UNLIKELY(!tmTimerTry(pTimer, TMTIMERSTATE_PENDING_STOP_SCHEDULE, TMTIMERSTATE_PENDING_STOP))) 551 553 break; /* retry */ 552 tmTimerQueueUnlinkActive(p Queue, pTimer);554 tmTimerQueueUnlinkActive(pVM, pQueue, pTimer); 553 555 RT_FALL_THRU(); 554 556 … … 1167 1169 * @param u64Expire The new expire time. 1168 1170 */ 1169 static int tmTimerSetOptimizedStart(PVM pVM, PTMTIMER pTimer, uint64_t u64Expire)1171 static int tmTimerSetOptimizedStart(PVMCC pVM, PTMTIMER pTimer, uint64_t u64Expire) 1170 1172 { 1171 1173 Assert(!pTimer->offPrev); … … 1191 1193 * Link the timer into the active list. 1192 1194 */ 1193 tmTimerQueueLinkActive( &pVM->tm.s.CTX_SUFF(paTimerQueues)[enmClock], pTimer, u64Expire);1195 tmTimerQueueLinkActive(pVM, &pVM->tm.s.CTX_SUFF(paTimerQueues)[enmClock], pTimer, u64Expire); 1194 1196 1195 1197 STAM_COUNTER_INC(&pVM->tm.s.StatTimerSetOpt); … … 1233 1235 pTimer->u64Expire = u64Expire; 1234 1236 TM_SET_STATE(pTimer, TMTIMERSTATE_ACTIVE); 1235 tmTimerQueueLinkActive(p Queue, pTimer, u64Expire);1237 tmTimerQueueLinkActive(pVM, pQueue, pTimer, u64Expire); 1236 1238 rc = VINF_SUCCESS; 1237 1239 break; … … 1239 1241 case TMTIMERSTATE_ACTIVE: 1240 1242 STAM_COUNTER_INC(&pVM->tm.s.StatTimerSetVsStActive); 1241 tmTimerQueueUnlinkActive(p Queue, pTimer);1243 tmTimerQueueUnlinkActive(pVM, pQueue, pTimer); 1242 1244 pTimer->u64Expire = u64Expire; 1243 tmTimerQueueLinkActive(p Queue, pTimer, u64Expire);1245 tmTimerQueueLinkActive(pVM, pQueue, pTimer, u64Expire); 1244 1246 rc = VINF_SUCCESS; 1245 1247 break; … … 1492 1494 */ 1493 1495 DBGFTRACE_U64_TAG2(pVM, u64Expire, "tmTimerSetRelativeOptimizedStart", pTimer->szName); 1494 tmTimerQueueLinkActive( &pVM->tm.s.CTX_SUFF(paTimerQueues)[enmClock], pTimer, u64Expire);1496 tmTimerQueueLinkActive(pVM, &pVM->tm.s.CTX_SUFF(paTimerQueues)[enmClock], pTimer, u64Expire); 1495 1497 1496 1498 STAM_COUNTER_INC(&pVM->tm.s.StatTimerSetRelativeOpt); … … 1540 1542 pTimer->u64Expire = u64Expire; 1541 1543 TM_SET_STATE(pTimer, TMTIMERSTATE_ACTIVE); 1542 tmTimerQueueLinkActive(p Queue, pTimer, u64Expire);1544 tmTimerQueueLinkActive(pVM, pQueue, pTimer, u64Expire); 1543 1545 rc = VINF_SUCCESS; 1544 1546 break; … … 1546 1548 case TMTIMERSTATE_ACTIVE: 1547 1549 STAM_COUNTER_INC(&pVM->tm.s.StatTimerSetRelativeVsStActive); 1548 tmTimerQueueUnlinkActive(p Queue, pTimer);1550 tmTimerQueueUnlinkActive(pVM, pQueue, pTimer); 1549 1551 pTimer->u64Expire = u64Expire; 1550 tmTimerQueueLinkActive(p Queue, pTimer, u64Expire);1552 tmTimerQueueLinkActive(pVM, pQueue, pTimer, u64Expire); 1551 1553 rc = VINF_SUCCESS; 1552 1554 break; … … 1882 1884 { 1883 1885 case TMTIMERSTATE_ACTIVE: 1884 tmTimerQueueUnlinkActive(p Queue, pTimer);1886 tmTimerQueueUnlinkActive(pVM, pQueue, pTimer); 1885 1887 TM_SET_STATE(pTimer, TMTIMERSTATE_STOPPED); 1886 1888 rc = VINF_SUCCESS;
Note:
See TracChangeset
for help on using the changeset viewer.