VirtualBox

vbox的更動 33736 路徑 trunk/src/VBox/Runtime/r0drv


忽略:
時間撮記:
2010-11-3 下午04:30:23 (14 年 以前)
作者:
vboxsync
訊息:

semeventwait-r0drv-solaris.h: Disabled deadlocking fallback code.

檔案:
修改 1 筆資料

圖例:

未更動
新增
刪除
  • trunk/src/VBox/Runtime/r0drv/solaris/semeventwait-r0drv-solaris.h

    r33168 r33736  
    7070    /** The thread to wake up. */
    7171    kthread_t      *pThread;
     72#if 0 /* @bugref{5342} */
    7273    /** Cylic timer ID (used by the timeout callback). */
    7374    cyclic_id_t     idCy;
     75#endif
    7476    /** The mutex associated with the condition variable wait. */
    7577    void volatile  *pvMtx;
     
    133135    {
    134136        pWait->fIndefinite      = false;
    135         if (   (fFlags & (RTSEMWAIT_FLAGS_NANOSECS | RTSEMWAIT_FLAGS_ABSOLUTE))
    136             || pWait->cNsRelTimeout < UINT32_C(1000000000) / 100 /*Hz*/ * 4)
     137        if (  (   (fFlags & (RTSEMWAIT_FLAGS_NANOSECS | RTSEMWAIT_FLAGS_ABSOLUTE))
     138               || pWait->cNsRelTimeout < UINT32_C(1000000000) / 100 /*Hz*/ * 4)
     139            && g_pfnrtR0Sol_timeout_generic != NULL /* See @bugref{5342} */)
    137140            pWait->fHighRes     = true;
    138141        else
     
    163166    pWait->pThread          = curthread;
    164167    pWait->pvMtx            = NULL;
     168#if 0 /* @bugref{5342} */
    165169    pWait->idCy             = CYCLIC_NONE;
     170#endif
    166171
    167172    return VINF_SUCCESS;
     
    169174
    170175
     176#if 0 /* @bugref{5342} */
    171177/**
    172178 * Cyclic timeout callback that sets the timeout indicator and wakes up the
     
    185191           before we wake it up.
    186192           Note: Trying to take the cpu_lock here doesn't work. */
     193        /** @todo LOCK ORDER INVERSION (pMtx & cpu_lock when arming the timer, here it's inverted).
     194         *  Possible fix: Use the thread lock for sleep/wakeup race prevention
     195         *  instead of the mutex associated with the cv/event. */
    187196        mutex_enter(pMtx);
    188197        if (mutex_owner(&cpu_lock) == curthread)
     
    196205    }
    197206}
     207#endif
    198208
    199209
     
    247257        if (pWait->fHighRes)
    248258        {
     259#if 0 /* @bugref{5342} */
    249260            if (g_pfnrtR0Sol_timeout_generic != NULL)
     261#endif
    250262            {
    251263                /*
     
    257269                                                      CALLOUT_FLAG_ABSOLUTE);
    258270            }
     271#if 0 /* @bugref{5342} */
    259272            else
    260273            {
     
    276289                mutex_exit(&cpu_lock);
    277290            }
     291#endif
    278292        }
    279293        else
     
    318332        if (pWait->fHighRes)
    319333        {
     334#if 0 /* @bugref{5342} */
    320335            if (g_pfnrtR0Sol_timeout_generic != NULL)
     336#endif
    321337                g_pfnrtR0Sol_untimeout_generic(u.idCo, 0 /*nowait*/);
     338#if 0 /* @bugref{5342} */
    322339            else
    323340            {
     
    330347                mutex_exit(&cpu_lock);
    331348            }
     349#endif
    332350        }
    333351        else
注意: 瀏覽 TracChangeset 來幫助您使用更動檢視器

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