41 i = pthread_cond_init(&tsem->
condition, NULL);
45 i = pthread_mutex_init(&tsem->
mutex, NULL);
59 pthread_mutex_destroy(&tsem->
mutex);
71 struct timespec final_time;
72 struct timeval currentTime;
75 gettimeofday(¤tTime, NULL);
77 microdelay = ((milliSecondsDelay * 1000 + currentTime.tv_usec));
78 final_time.tv_sec = currentTime.tv_sec + (microdelay / 1000000);
79 final_time.tv_nsec = (microdelay % 1000000) * 1000;
80 pthread_mutex_lock(&tsem->
mutex);
81 while (tsem->
semval == 0) {
88 pthread_mutex_unlock(&tsem->
mutex);
98 pthread_mutex_lock(&tsem->
mutex);
99 while (tsem->
semval == 0) {
103 pthread_mutex_unlock(&tsem->
mutex);
111 pthread_mutex_lock(&tsem->
mutex);
114 pthread_mutex_unlock(&tsem->
mutex);
122 pthread_mutex_lock(&tsem->
mutex);
124 pthread_mutex_unlock(&tsem->
mutex);
132 pthread_mutex_lock(&tsem->
mutex);
134 pthread_mutex_unlock(&tsem->
mutex);
142 pthread_mutex_lock(&tsem->
mutex);
144 pthread_mutex_unlock(&tsem->
mutex);
void tsem_deinit(tsem_t *tsem)
void tsem_signal(tsem_t *tsem)
int tsem_timed_down(tsem_t *tsem, unsigned int milliSecondsDelay)
void tsem_up(tsem_t *tsem)
int tsem_init(tsem_t *tsem, unsigned int val)
void tsem_down(tsem_t *tsem)
void tsem_reset(tsem_t *tsem)
void tsem_wait(tsem_t *tsem)