xref: /minix3/minix/include/ddekit/condvar.h (revision 433d6423c39e34ec4b79c950597bb2d236f886be)
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