VirtualBox

Changeset 14253 in vbox


Ignore:
Timestamp:
Nov 17, 2008 12:49:21 PM (16 years ago)
Author:
vboxsync
Message:

TM: A shot at #3321

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/TMAllVirtual.cpp

    r13832 r14253  
    508508    }
    509509    else
     510    {
    510511        u64 = pVM->tm.s.u64VirtualSync;
     512
     513        /*
     514         * If it looks like a halt caused by pending timers, make sure the FF is raised.
     515         * This is a safeguard against timer queue runner leaving the virtual sync clock stopped.
     516         */
     517        if (    fCheckTimers
     518            &&  pVM->tm.s.fVirtualTicking
     519            &&  !VM_FF_ISSET(pVM, VM_FF_TIMER))
     520        {
     521            const uint64_t u64Expire = pVM->tm.s.CTX_SUFF(paTimerQueues)[TMCLOCK_VIRTUAL_SYNC].u64Expire;
     522            if (u64 >= u64Expire)
     523            {
     524                VM_FF_SET(pVM, VM_FF_TIMER);
     525#ifdef IN_RING3
     526                REMR3NotifyTimerPending(pVM);
     527                VMR3NotifyFF(pVM, true);
     528#endif
     529                STAM_COUNTER_INC(&pVM->tm.s.StatVirtualGetSyncSetFF);
     530                Log4(("TM: %RU64/%RU64: exp tmr=>ff (!)\n", u64, pVM->tm.s.offVirtualSync - pVM->tm.s.offVirtualSyncGivenUp));
     531            }
     532        }
     533    }
    511534    return u64;
    512535}
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette