#include "util/timespec.h"
+
/**
* Create a new fence object.
*
mtx_unlock(&fence->mutex);
}
+
boolean
lp_fence_signalled(struct lp_fence *f)
{
return f->count == f->rank;
}
+
void
lp_fence_wait(struct lp_fence *f)
{
lp_fence_timedwait(struct lp_fence *f, uint64_t timeout)
{
struct timespec ts, abs_ts;
- int ret;
timespec_get(&ts, TIME_UTC);
mtx_lock(&f->mutex);
assert(f->issued);
while (f->count < f->rank) {
+ int ret;
if (ts_overflow)
ret = cnd_wait(&f->signalled, &f->mutex);
else
if (ret != thrd_success)
break;
}
+
const boolean result = (f->count >= f->rank);
mtx_unlock(&f->mutex);
+
return result;
}