3 /** \file ddekit/condvar.h */
6 * This file is part of DDEKit.
8 * (c) 2006-2010 Bjoern Doebel <doebel@os.inf.tu-dresden.de>
9 * Christian Helmuth <ch12@os.inf.tu-dresden.de>
10 * Thomas Friebel <tf13@os.inf.tu-dresden.de>
11 * economic rights: Technische Universitaet Dresden (Germany)
13 * This file is part of TUD:OS and distributed under the terms of the
14 * GNU General Public License 2.
15 * Please see the COPYING-GPL-2 file for details.
18 #include <l4/dde/ddekit/lock.h>
19 #include <l4/sys/compiler.h>
23 struct ddekit_condvar;
24 typedef struct ddekit_condvar ddekit_condvar_t;
26 /** Initialize conditional variable.
28 * \ingroup DDEKit_synchronization
30 ddekit_condvar_t * ddekit_condvar_init(void);
32 /** Uninitialize conditional variable.
34 * \ingroup DDEKit_synchronization
36 void ddekit_condvar_deinit(ddekit_condvar_t *cvp);
38 /** Wait on a conditional variable.
40 * \ingroup DDEKit_synchronization
42 void ddekit_condvar_wait(ddekit_condvar_t *cvp, ddekit_lock_t *mp);
44 /** Wait on a conditional variable at most until a timeout expires.
46 * \ingroup DDEKit_synchronization
48 * \param cvp pointer to condvar
50 * \param timo timeout in ms
55 int ddekit_condvar_wait_timed(ddekit_condvar_t *cvp, ddekit_lock_t *mp, int timo);
57 /** Send signal to the next one waiting for condvar.
59 * \ingroup DDEKit_synchronization
61 void ddekit_condvar_signal(ddekit_condvar_t *cvp);
63 /** Send signal to all threads waiting for condvar.
65 * \ingroup DDEKit_synchronization
67 void ddekit_condvar_broadcast(ddekit_condvar_t *cvp);