3 * @author aurelien.morelle@parrot.fr
7 #include "VP_Os/vp_os_signal.h"
18 vp_os_mutex_init(vp_os_mutex_t *mutex)
20 pthread_mutex_init((pthread_mutex_t *)mutex, NULL);
25 vp_os_mutex_destroy(vp_os_mutex_t *mutex)
27 pthread_mutex_destroy((pthread_mutex_t *)mutex);
32 vp_os_mutex_lock(vp_os_mutex_t *mutex)
34 pthread_mutex_lock((pthread_mutex_t *)mutex);
38 vp_os_mutex_trylock(vp_os_mutex_t *mutex)
40 return pthread_mutex_trylock((pthread_mutex_t *)mutex) ? C_FAIL : C_OK;
45 vp_os_mutex_unlock(vp_os_mutex_t *mutex)
47 pthread_mutex_unlock((pthread_mutex_t *)mutex);
52 vp_os_cond_init(vp_os_cond_t *cond, vp_os_mutex_t *mutex)
54 pthread_cond_init(&cond->cond, NULL);
60 vp_os_cond_destroy(vp_os_cond_t *cond)
62 pthread_cond_destroy(&cond->cond);
67 vp_os_cond_wait(vp_os_cond_t *cond)
69 pthread_cond_wait(&cond->cond, (pthread_mutex_t *)cond->mutex);
73 #ifndef TIMEVAL_TO_TIMESPEC
74 #define TIMEVAL_TO_TIMESPEC(tv, ts) do { \
75 (ts)->tv_sec = (tv)->tv_sec; \
76 (ts)->tv_nsec = (tv)->tv_usec * 1000; \
82 vp_os_cond_timed_wait(vp_os_cond_t *cond, uint32_t ms)
86 gettimeofday(&tv, NULL);
87 TIMEVAL_TO_TIMESPEC(&tv, &ts);
89 ts.tv_nsec += (ms%1000)*1000;
90 return ( pthread_cond_timedwait(&cond->cond, (pthread_mutex_t *)cond->mutex, &ts) == ETIMEDOUT ? FAIL : SUCCESS );
95 vp_os_cond_signal(vp_os_cond_t *cond)
97 pthread_cond_signal(&cond->cond);
101 vp_os_cond_broadcast(vp_os_cond_t *cond)
103 pthread_cond_broadcast(&cond->cond);