VirtualBox

Changeset 58161 in vbox for trunk/src/VBox/Devices/VMMDev


Ignore:
Timestamp:
Oct 9, 2015 6:07:59 PM (10 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
103269
Message:

VMMDev: Heartbeat adjustments and build fix.

Location:
trunk/src/VBox/Devices/VMMDev
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/VMMDev/VMMDev.cpp

    r58160 r58161  
    438438{
    439439    int rc;
    440     if (pThis->fHBCheckEnabled)
    441     {
    442         uint64_t const nsNowTS = TMTimerGetNano(pThis->pHearbeatFlatlinedTimer);
    443         if (!pThis->fHasMissedHB)
     440    if (pThis->fHeartbeatActive)
     441    {
     442        uint64_t const nsNowTS = TMTimerGetNano(pThis->pFlatlinedTimer);
     443        if (!pThis->fFlatlined)
    444444        { /* likely */ }
    445445        else
    446446        {
    447447            LogRel(("VMMDev: GuestHeartBeat: Guest is alive (gone %'llu ns)\n", nsNowTS - pThis->nsLastHeartbeatTS));
    448             ASMAtomicWriteBool(&pThis->fHasMissedHB, false);
     448            ASMAtomicWriteBool(&pThis->fFlatlined, false);
    449449        }
    450450        ASMAtomicWriteU64(&pThis->nsLastHeartbeatTS, nsNowTS);
    451451
    452452        /* Postpone (or restart if we missed a beat) the timeout timer. */
    453         rc = TMTimerSetNano(pThis->pHearbeatFlatlinedTimer, pThis->cNsHeartbeatTimeout);
     453        rc = TMTimerSetNano(pThis->pFlatlinedTimer, pThis->cNsHeartbeatTimeout);
    454454    }
    455455    else
     
    467467{
    468468    PVMMDEV pThis = (PVMMDEV)pvUser;
    469     if (pThis->fHBCheckEnabled)
     469    if (pThis->fHeartbeatActive)
    470470    {
    471471        uint64_t cNsElapsed = TMTimerGetNano(pTimer) - pThis->nsLastHeartbeatTS;
    472         if (   !pThis->fHasMissedHB
     472        if (   !pThis->fFlatlined
    473473            && cNsElapsed >= pThis->cNsHeartbeatInterval)
    474474        {
    475475            LogRel(("VMMDev: vmmDevHeartbeatFlatlinedTimer: Guest seems to be unresponsive. Last heartbeat received %RU64 seconds ago\n",
    476476                    cNsElapsed / RT_NS_1SEC));
    477             ASMAtomicWriteBool(&pThis->fHasMissedHB, true);
     477            ASMAtomicWriteBool(&pThis->fFlatlined, true);
    478478        }
    479479    }
     
    496496    pReq->cNsInterval = pThis->cNsHeartbeatInterval;
    497497
    498     if (pReq->fEnabled != pThis->fHBCheckEnabled)
    499     {
    500         ASMAtomicWriteBool(&pThis->fHBCheckEnabled, pReq->fEnabled);
     498    if (pReq->fEnabled != pThis->fHeartbeatActive)
     499    {
     500        ASMAtomicWriteBool(&pThis->fHeartbeatActive, pReq->fEnabled);
    501501        if (pReq->fEnabled)
    502502        {
    503503            /* Start the countdown. */
    504             rc = TMTimerSetNano(pThis->pHearbeatFlatlinedTimer, pThis->cNsHeartbeatTimeout);
     504            rc = TMTimerSetNano(pThis->pFlatlinedTimer, pThis->cNsHeartbeatTimeout);
    505505            if (RT_SUCCESS(rc))
    506506                LogRel(("VMMDev: Heartbeat checking timer set to trigger every %RU64 milliseconds\n",
     
    511511        else
    512512        {
    513             rc = TMTimerStop(pThis->pHearbeatFlatlinedTimer);
     513            rc = TMTimerStop(pThis->pFlatlinedTimer);
    514514            LogRel(("VMMDev: Heartbeat checking timer has been stopped, rc=%Rrc\n", rc));
    515515        }
     
    517517    else
    518518    {
    519         LogRel(("VMMDev: vmmDevReqHandler_HeartbeatConfigure: fHBCheckEnabled=%RTbool\n", pThis->fHBCheckEnabled));
     519        LogRel(("VMMDev: vmmDevReqHandler_HeartbeatConfigure: fHBCheckEnabled=%RTbool\n", pThis->fHeartbeatActive));
    520520        rc = VINF_SUCCESS;
    521521    }
     
    41764176     */
    41774177    rc = PDMDevHlpTMTimerCreate(pDevIns, TMCLOCK_VIRTUAL, vmmDevHeartbeatFlatlinedTimer, pThis,
    4178                                 TMTIMER_FLAGS_NO_CRIT_SECT, "Heartbeat flatlined", &pThis->pHearbeatFlatlinedTimer);
     4178                                TMTIMER_FLAGS_NO_CRIT_SECT, "Heartbeat flatlined", &pThis->pFlatlinedTimer);
    41794179    AssertRCReturn(rc, rc);
    41804180
  • trunk/src/VBox/Devices/VMMDev/VMMDevState.h

    r58159 r58161  
    360360#endif /* !VBOX_WITHOUT_TESTING_FEATURES */
    361361
     362    /** @name Heartbeat
     363     * @{ */
    362364    /** Timestamp of the last heartbeat from guest in nanosec. */
    363365    uint64_t volatile   nsLastHeartbeatTS;
    364366    /** Indicates whether we missed HB from guest on last check. */
    365     bool volatile       fHasMissedHB;
     367    bool volatile       fFlatlined;
    366368    /** Indicates whether heartbeat check is active. */
    367     bool volatile       fHBCheckEnabled;
     369    bool volatile       fHeartbeatActive;
    368370    /** Alignment padding. */
    369371    bool                afAlignment8[6];
     
    375377    uint64_t            cNsHeartbeatTimeout;
    376378    /** Timer for signalling a flatlined guest. */
    377     PTMTIMERR3          pHearbeatFlatlinedTimer;
     379    PTMTIMERR3          pFlatlinedTimer;
     380    /** @} */
    378381} VMMDevState;
    379382typedef VMMDevState VMMDEV;
Note: See TracChangeset for help on using the changeset viewer.

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