VirtualBox

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


Ignore:
Timestamp:
Oct 17, 2007 1:38:33 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/semevent-r0drv-solaris.c

    r5333 r5354  
    153153    else
    154154    {
     155        ASMAtomicIncU32(&pEventInt->cWaiters);
     156       
    155157        /*
    156158         * Translate milliseconds into ticks and go to sleep.
    157159         */
    158         int cTicks;
    159         unsigned long timeout;
    160160        if (cMillies != RT_INDEFINITE_WAIT)
    161             cTicks = drv_usectohz((clock_t)(cMillies * 1000L));
     161        {
     162            int cTicks = drv_usectohz((clock_t)(cMillies * 1000L));
     163            clock_t timeout = ddi_get_lbolt();
     164            timeout += cTicks;
     165            if (fInterruptible)
     166                rc = cv_timedwait_sig(&pEventInt->Cnd, &pEventInt->Mtx, timeout);
     167            else
     168                rc = cv_timedwait(&pEventInt->Cnd, &pEventInt->Mtx, timeout);
     169        }
    162170        else
    163             cTicks = 0;
    164         timeout += cTicks;
    165 
    166         ASMAtomicIncU32(&pEventInt->cWaiters);
    167 
    168         if (fInterruptible)
    169             rc = cv_timedwait_sig(&pEventInt->Cnd, &pEventInt->Mtx, timeout);
    170         else
    171             rc = cv_timedwait(&pEventInt->Cnd, &pEventInt->Mtx, timeout);
     171        {
     172            if (fInterruptible)
     173                rc = cv_wait_sig(&pEventInt->Cnd, &pEventInt->Mtx);
     174            else
     175            {
     176                cv_wait(&pEventInt->Cnd, &pEventInt->Mtx);
     177                rc = 1;
     178            }
     179        }
    172180
    173181        if (rc > 0)
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