}
-/* waits required interval for termination signal and returns 1 if got it, 0 otherwise */
+/* thread waits interval_usecs for runnable_cond to be signaled. returns 1 if signaled,
+ * -1 on error, and 0 otherwise. caller should call timed_thread_exit() on any non-zero
+ * return value. */
int
timed_thread_test (timed_thread* p_timed_thread)
{
assert (p_timed_thread != NULL);
+ /* acquire runnable_cond mutex */
+ if (pthread_mutex_lock (&p_timed_thread->runnable_mutex))
+ return (-1); /* could not acquire runnable_cond mutex, so tell caller to exit thread */
+
/* get the absolute time in the future we stop waiting for condition to signal */
clock_gettime (CLOCK_REALTIME, &abstime);
/* seconds portion of the microseconds interval */
abstime.tv_sec += reltime.tv_sec;
abstime.tv_nsec += reltime.tv_nsec;
- /* acquire runnable_cond mutex */
- if (pthread_mutex_lock (&p_timed_thread->runnable_mutex))
- return (-1); /* could not acquire runnable_cond mutex, so tell caller to exit thread */
-
/* release mutex and wait until future time for runnable_cond to signal */
rc = pthread_cond_timedwait (&p_timed_thread->runnable_cond,
&p_timed_thread->runnable_mutex,