/* * Copyright (c) 2023, Meta * * SPDX-License-Identifier: Apache-2.0 */ #include #include #include int cnd_broadcast(cnd_t *cond) { switch (pthread_cond_broadcast(cond)) { case 0: return thrd_success; default: return thrd_error; } } void cnd_destroy(cnd_t *cond) { (void)pthread_cond_destroy(cond); } int cnd_init(cnd_t *cond) { switch (pthread_cond_init(cond, NULL)) { case 0: return thrd_success; case ENOMEM: return thrd_nomem; default: return thrd_error; } } int cnd_signal(cnd_t *cond) { switch (pthread_cond_signal(cond)) { case 0: return thrd_success; case ENOMEM: return thrd_nomem; default: return thrd_error; } } int cnd_timedwait(cnd_t *restrict cond, mtx_t *restrict mtx, const struct timespec *restrict ts) { switch (pthread_cond_timedwait(cond, mtx, ts)) { case 0: return thrd_success; case ETIMEDOUT: return thrd_timedout; default: return thrd_error; } } int cnd_wait(cnd_t *cond, mtx_t *mtx) { switch (pthread_cond_wait(cond, mtx)) { case 0: return thrd_success; default: return thrd_error; } }