Changeset 3717

Show
Ignore:
Timestamp:
02/21/06 23:35:54 (3 years ago)
Author:
morris
Message:

Return true if interrupted by condition, false if timed out

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • libwired/trunk/libwired/thread/wi-lock.c

    r3552 r3717  
    441441 
    442442 
    443 void wi_condition_lock_lock_when_condition(wi_condition_lock_t *lock, int condition, wi_time_interval_t time) { 
     443wi_boolean_t wi_condition_lock_lock_when_condition(wi_condition_lock_t *lock, int condition, wi_time_interval_t time) { 
    444444#ifdef WI_PTHREADS 
    445445        struct timespec         ts; 
     
    455455                                err = pthread_cond_timedwait(&lock->cond, &lock->mutex, &ts); 
    456456                        } while(lock->condition != condition && err != ETIMEDOUT); 
     457 
     458                        if(err == ETIMEDOUT) 
     459                                return false; 
    457460                } else { 
    458461                        do { 
     
    461464                } 
    462465        } 
     466         
     467        return true; 
     468#else 
     469        return false; 
    463470#endif 
    464471} 
  • libwired/trunk/libwired/thread/wi-lock.h

    r3552 r3717  
    8181 
    8282WI_EXPORT void                                                  wi_condition_lock_lock(wi_condition_lock_t *); 
    83 WI_EXPORT void                                                wi_condition_lock_lock_when_condition(wi_condition_lock_t *, int, wi_time_interval_t); 
     83WI_EXPORT wi_boolean_t                                        wi_condition_lock_lock_when_condition(wi_condition_lock_t *, int, wi_time_interval_t); 
    8484WI_EXPORT wi_boolean_t                                  wi_condition_lock_trylock(wi_condition_lock_t *); 
    8585WI_EXPORT wi_boolean_t                                  wi_condition_lock_trylock_when_condition(wi_condition_lock_t *, int);