* src/util/threads.h, src/util/threads-pthread.c,
src/libvirt_private.syms: Add virCondWaitUntil()
virCondInit;
virCondDestroy;
virCondWait;
+virCondWaitUntil;
virCondSignal;
virCondBroadcast;
return 0;
}
+int virCondWaitUntil(virCondPtr c, virMutexPtr m, unsigned long long whenms)
+{
+ int ret;
+ struct timespec ts;
+
+ ts.tv_sec = whenms / 1000;
+ ts.tv_nsec = (whenms % 1000) * 1000;
+
+ if ((ret = pthread_cond_timedwait(&c->cond, &m->lock, &ts)) != 0) {
+ errno = ret;
+ return -1;
+ }
+ return 0;
+}
+
void virCondSignal(virCondPtr c)
{
pthread_cond_signal(&c->cond);
int virCondDestroy(virCondPtr c) ATTRIBUTE_RETURN_CHECK;
int virCondWait(virCondPtr c, virMutexPtr m) ATTRIBUTE_RETURN_CHECK;
+int virCondWaitUntil(virCondPtr c, virMutexPtr m, unsigned long long whenms) ATTRIBUTE_RETURN_CHECK;
void virCondSignal(virCondPtr c);
void virCondBroadcast(virCondPtr c);