1*433d6423SLionel Sambuc #ifndef _ddekit_condvar_h 2*433d6423SLionel Sambuc #define _ddekit_condvar_h 3*433d6423SLionel Sambuc 4*433d6423SLionel Sambuc /** \file ddekit/condvar.h */ 5*433d6423SLionel Sambuc #include <ddekit/ddekit.h> 6*433d6423SLionel Sambuc 7*433d6423SLionel Sambuc #include <ddekit/lock.h> 8*433d6423SLionel Sambuc 9*433d6423SLionel Sambuc struct ddekit_condvar; 10*433d6423SLionel Sambuc typedef struct ddekit_condvar ddekit_condvar_t; 11*433d6423SLionel Sambuc 12*433d6423SLionel Sambuc /* Initialize conditional variable. */ 13*433d6423SLionel Sambuc ddekit_condvar_t * ddekit_condvar_init(void); 14*433d6423SLionel Sambuc 15*433d6423SLionel Sambuc /* Uninitialize conditional variable. */ 16*433d6423SLionel Sambuc void ddekit_condvar_deinit(ddekit_condvar_t *cvp); 17*433d6423SLionel Sambuc 18*433d6423SLionel Sambuc /* Wait on a conditional variable. */ 19*433d6423SLionel Sambuc void ddekit_condvar_waiti(ddekit_condvar_t *cvp, ddekit_lock_t *mp); 20*433d6423SLionel Sambuc 21*433d6423SLionel Sambuc /* Wait on a conditional variable at most until a timeout expires. (UNIMPL) */ 22*433d6423SLionel Sambuc int ddekit_condvar_wait_timed(ddekit_condvar_t *cvp, ddekit_lock_t *mp, 23*433d6423SLionel Sambuc int timo); 24*433d6423SLionel Sambuc 25*433d6423SLionel Sambuc /* Send signal to the next one waiting for condvar. */ 26*433d6423SLionel Sambuc void ddekit_condvar_signal(ddekit_condvar_t *cvp); 27*433d6423SLionel Sambuc 28*433d6423SLionel Sambuc /* Send signal to all threads waiting for condvar. */ 29*433d6423SLionel Sambuc void ddekit_condvar_broadcast(ddekit_condvar_t *cvp); 30*433d6423SLionel Sambuc 31*433d6423SLionel Sambuc #endif 32