VirtualBox

Changeset 5355 in vbox for trunk/src/VBox/Runtime


Ignore:
Timestamp:
Oct 17, 2007 1:41:31 PM (17 years ago)
Author:
vboxsync
Message:

Solaris patch 18 (handle cMillies == RT_INDEFINITE_WAIT).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/r0drv/solaris/semeventmulti-r0drv-solaris.c

    r5335 r5355  
    162162    else
    163163    {
     164        ASMAtomicIncU32(&pEventMultiInt->cWaiters);
     165
    164166        /*
    165167         * Translate milliseconds into ticks and go to sleep.
    166168         */
    167         int cTicks;
    168         clock_t timeout;
    169169        if (cMillies != RT_INDEFINITE_WAIT)
    170             cTicks = drv_usectohz((clock_t)(cMillies * 1000L));
     170        {
     171            int cTicks = drv_usectohz((clock_t)(cMillies * 1000L));
     172            clock_t timeout = ddi_get_lbolt();
     173            timeout += cTicks;
     174            if (fInterruptible)
     175                rc = cv_timedwait_sig(&pEventMultiInt->Cnd, &pEventMultiInt->Mtx, timeout);
     176            else
     177                rc = cv_timedwait(&pEventMultiInt->Cnd, &pEventMultiInt->Mtx, timeout);
     178        }
    171179        else
    172             cTicks = 0;
    173 
    174         timeout = ddi_get_lbolt();
    175         timeout += cTicks;
    176        
    177         ASMAtomicIncU32(&pThis->cWaiters);
    178 
    179         if (fInterruptible)
    180             rc = cv_timedwait_sig(&pThis->Cnd, &pThis->Mtx, timeout);
    181         else
    182             rc = cv_timedwait(&pThis->Cnd, &pThis->Mtx, timeout);
     180        {
     181            if (fInterruptible)
     182                rc = cv_wait_sig(&pEventMultiInt->Cnd, &pEventMultiInt->Mtx);
     183            else
     184            {
     185                cv_wait(&pEventMultiInt->Cnd, &pEventMultiInt->Mtx);
     186                rc = 1;
     187            }
     188        }
    183189        if (rc > 0)
    184190        {
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