From 4ab16c933f829f51d202c77cfb98f552ad887159 Mon Sep 17 00:00:00 2001 From: dimitri staessens Date: Thu, 9 Feb 2017 23:44:19 +0100 Subject: lib, ipcp: Correctly init condvars The timerwheel and RIB use timedwaits. The condition variables are now correctly initialised to use the configuration defined clock. --- src/lib/rib.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src/lib/rib.c') diff --git a/src/lib/rib.c b/src/lib/rib.c index e0456b6f..c77eab20 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; } -- cgit v1.2.3 From aa1643ae393d9460bea8e2922c9cc0a3e6caf63d Mon Sep 17 00:00:00 2001 From: dimitri staessens Date: Fri, 10 Feb 2017 00:42:13 +0100 Subject: lib: Fix bad lock in rib --- src/lib/rib.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/lib/rib.c') diff --git a/src/lib/rib.c b/src/lib/rib.c index c77eab20..af4abccf 100644 --- a/src/lib/rib.c +++ b/src/lib/rib.c @@ -1144,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; } -- cgit v1.2.3