| #include <threads.h> | |
| #include <errno.h> | |
| int __pthread_cond_timedwait(cnd_t* restrict, | |
| mtx_t* restrict, | |
| const struct timespec* restrict); | |
| int cnd_timedwait(cnd_t* restrict c, | |
| mtx_t* restrict m, | |
| const struct timespec* restrict ts) { | |
| int ret = __pthread_cond_timedwait(c, m, ts); | |
| switch (ret) { | |
| /* May also return EINVAL or EPERM. */ | |
| default: | |
| return thrd_error; | |
| case 0: | |
| return thrd_success; | |
| case ETIMEDOUT: | |
| return thrd_timedout; | |
| } | |
| } |