diff options
author | dimitri staessens <dimitri.staessens@intec.ugent.be> | 2017-02-10 07:59:45 +0000 |
---|---|---|
committer | Sander Vrijders <sander.vrijders@intec.ugent.be> | 2017-02-10 07:59:45 +0000 |
commit | 4051a5afbfc92873af44d47ae6613d7bd17f7433 (patch) | |
tree | 09afe1ad6bded8815a058ef6476ea4481d9a032a /src/lib/rib.c | |
parent | 0557bc02b963bab6f690b410fe937a9f487a84ba (diff) | |
parent | aa1643ae393d9460bea8e2922c9cc0a3e6caf63d (diff) | |
download | ouroboros-4051a5afbfc92873af44d47ae6613d7bd17f7433.tar.gz ouroboros-4051a5afbfc92873af44d47ae6613d7bd17f7433.zip |
Merged in dstaesse/ouroboros/be-bsd (pull request #368)
Be bsd
Diffstat (limited to 'src/lib/rib.c')
-rw-r--r-- | src/lib/rib.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/lib/rib.c b/src/lib/rib.c index e0456b6f..af4abccf 100644 --- a/src/lib/rib.c +++ b/src/lib/rib.c @@ -778,11 +778,19 @@ static struct rib_sub * rib_get_sub(uint32_t sid) static struct rib_sub * rib_sub_create(uint32_t sid) { + pthread_condattr_t cattr; struct rib_sub * sub = malloc(sizeof(*sub)); if (sub == NULL) return NULL; - if (pthread_cond_init(&sub->cond, NULL)) { + if (pthread_condattr_init(&cattr)) { + free(sub); + return NULL; + } +#ifndef __APPLE__ + pthread_condattr_setclock(&cattr, PTHREAD_COND_CLOCK); +#endif + if (pthread_cond_init(&sub->cond, &cattr)) { free(sub); return NULL; } @@ -1136,7 +1144,7 @@ int rib_event_wait(ro_set_t * set, if (ret != -ETIMEDOUT) list_move(&rq->events, &sub->events); - pthread_rwlock_wrlock(&rib.lock); + pthread_rwlock_unlock(&rib.lock); return ret; } |