cond_init_destroy.vgtest cond_init_destroy.stderr.exp \
cond_timedwait_invalid.vgtest cond_timedwait_invalid.stdout.exp \
cond_timedwait_invalid.stderr.exp \
+ cond_timedwait_test.vgtest cond_timedwait_test.stdout.exp \
+ cond_timedwait_test.stderr.exp \
bar_bad.vgtest bar_bad.stdout.exp bar_bad.stderr.exp \
bar_trivial.vgtest bar_trivial.stdout.exp bar_trivial.stderr.exp \
free_is_write.vgtest free_is_write.stdout.exp \
annotate_hbefore \
cond_init_destroy \
cond_timedwait_invalid \
+ cond_timedwait_test \
free_is_write \
hg01_all_ok \
hg02_deadlock \
--- /dev/null
+#include <pthread.h>
+#include <string.h>
+
+int main() {
+ pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
+ pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
+
+ // This time has most definitely passed already. (Epoch)
+ struct timespec now;
+ memset(&now, 0, sizeof(now));
+
+ pthread_mutex_lock(&mutex);
+ pthread_cond_timedwait(&cond, &mutex, &now);
+ pthread_mutex_unlock(&mutex);
+
+ pthread_mutex_destroy(&mutex);
+ pthread_cond_destroy(&cond);
+
+ return 0;
+}