cnd_timedwait.c 531 B

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