3 * @author aurelien.morelle@parrot.fr
7 #include "VP_Os/vp_os_signal.h"
16 vp_os_mutex_init(vp_os_mutex_t *mutex)
18 pthread_mutex_init((pthread_mutex_t *)mutex, NULL);
23 vp_os_mutex_destroy(vp_os_mutex_t *mutex)
25 pthread_mutex_destroy((pthread_mutex_t *)mutex);
30 vp_os_mutex_lock(vp_os_mutex_t *mutex)
32 pthread_mutex_lock((pthread_mutex_t *)mutex);
36 vp_os_mutex_trylock(vp_os_mutex_t *mutex)
38 return pthread_mutex_trylock((pthread_mutex_t *)mutex) ? C_FAIL : C_OK;
42 vp_os_mutex_unlock(vp_os_mutex_t *mutex)
44 pthread_mutex_unlock((pthread_mutex_t *)mutex);
49 vp_os_cond_init(vp_os_cond_t *cond, vp_os_mutex_t *mutex)
51 pthread_cond_init(&cond->cond, NULL);
57 vp_os_cond_destroy(vp_os_cond_t *cond)
59 pthread_cond_destroy(&cond->cond);
64 vp_os_cond_wait(vp_os_cond_t *cond)
66 pthread_cond_wait(&cond->cond, (pthread_mutex_t *)cond->mutex);
71 vp_os_cond_timed_wait(vp_os_cond_t *cond, uint32_t ms)
75 gettimeofday(&tv, NULL);
76 TIMEVAL_TO_TIMESPEC(&tv, &ts);
77 /* ts.tv_sec += ms/1000;
78 // ts.tv_nsec += (ms%1000)*1000;
79 ts.tv_nsec += (ms%1000)*1000000;*/
82 ts.tv_nsec += ms * 1000000;
83 tmp = ts.tv_nsec / (1000 * 1000000);
85 ts.tv_nsec -= tmp * (1000 * 1000000);
86 return ( pthread_cond_timedwait(&cond->cond, (pthread_mutex_t *)cond->mutex, &ts) == ETIMEDOUT ? FAIL : SUCCESS );
91 vp_os_cond_signal(vp_os_cond_t *cond)
93 pthread_cond_signal(&cond->cond);