summaryrefslogtreecommitdiff
path: root/src/lib/rib.c
diff options
context:
space:
mode:
authordimitri staessens <[email protected]>2017-02-10 07:59:45 +0000
committerSander Vrijders <[email protected]>2017-02-10 07:59:45 +0000
commit4051a5afbfc92873af44d47ae6613d7bd17f7433 (patch)
tree09afe1ad6bded8815a058ef6476ea4481d9a032a /src/lib/rib.c
parent0557bc02b963bab6f690b410fe937a9f487a84ba (diff)
parentaa1643ae393d9460bea8e2922c9cc0a3e6caf63d (diff)
downloadouroboros-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.c12
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;
}