00001 #ifndef _ddekit_condvar_h 00002 #define _ddekit_condvar_h 00003 00004 /** \file ddekit/condvar.h */ 00005 00006 #include <l4/dde/ddekit/lock.h> 00007 00008 struct ddekit_condvar; 00009 typedef struct ddekit_condvar ddekit_condvar_t; 00010 00011 /** Initialize conditional variable. 00012 * 00013 * \ingroup DDEKit_synchronization 00014 */ 00015 ddekit_condvar_t * ddekit_condvar_init(void); 00016 00017 /** Uninitialize conditional variable. 00018 * 00019 * \ingroup DDEKit_synchronization 00020 */ 00021 void ddekit_condvar_deinit(ddekit_condvar_t *cvp); 00022 00023 /** Wait on a conditional variable. 00024 * 00025 * \ingroup DDEKit_synchronization 00026 */ 00027 void ddekit_condvar_wait(ddekit_condvar_t *cvp, ddekit_lock_t *mp); 00028 00029 /** Wait on a conditional variable at most until a timeout expires. 00030 * 00031 * \ingroup DDEKit_synchronization 00032 * 00033 * \param cvp pointer to condvar 00034 * \param mp lock 00035 * \param timo timeout in ms 00036 * 00037 * \return 0 success 00038 * \return !=0 timeout 00039 */ 00040 int ddekit_condvar_wait_timed(ddekit_condvar_t *cvp, ddekit_lock_t *mp, int timo); 00041 00042 /** Send signal to the next one waiting for condvar. 00043 * 00044 * \ingroup DDEKit_synchronization 00045 */ 00046 void ddekit_condvar_signal(ddekit_condvar_t *cvp); 00047 00048 /** Send signal to all threads waiting for condvar. 00049 * 00050 * \ingroup DDEKit_synchronization 00051 */ 00052 void ddekit_condvar_broadcast(ddekit_condvar_t *cvp); 00053 00054 #endif
1.5.6