1#include <threads.h>
2#include <errno.h>
3
4int __pthread_cond_timedwait(cnd_t *restrict, mtx_t *restrict, const struct timespec *restrict);
5
6int cnd_timedwait(cnd_t *restrict c, mtx_t *restrict m, const struct timespec *restrict ts)
7{
8	int ret = __pthread_cond_timedwait(c, m, ts);
9	switch (ret) {
10	/* May also return EINVAL or EPERM. */
11	default:        return thrd_error;
12	case 0:         return thrd_success;
13	case ETIMEDOUT: return thrd_timedout;
14	}
15}
16