From 9dce327e10bffddc9dc5058f06407e8ff12389b7 Mon Sep 17 00:00:00 2001 From: dimitri staessens Date: Tue, 9 Aug 2016 16:06:12 +0200 Subject: lib: Various fixes Fix missing set of api upon flow_alloc. Various locking fixes. --- src/lib/dev.c | 4 ++-- src/lib/shm_ap_rbuff.c | 13 ------------- src/lib/shm_du_map.c | 10 +++------- 3 files changed, 5 insertions(+), 22 deletions(-) (limited to 'src/lib') diff --git a/src/lib/dev.c b/src/lib/dev.c index 6f0de8c8..3c31ce6d 100644 --- a/src/lib/dev.c +++ b/src/lib/dev.c @@ -203,6 +203,7 @@ int flow_accept(char ** ae_name) _ap_instance->flows[cfd].port_id = recv_msg->port_id; _ap_instance->flows[cfd].oflags = FLOW_O_DEFAULT; + _ap_instance->flows[cfd].api = recv_msg->api; pthread_rwlock_unlock(&_ap_instance->flows_lock); pthread_rwlock_unlock(&_ap_instance->data_lock); @@ -321,8 +322,7 @@ int flow_alloc(char * dst_name, _ap_instance->flows[fd].port_id = recv_msg->port_id; _ap_instance->flows[fd].oflags = FLOW_O_DEFAULT; - _ap_instance->flows[fd].api = - shm_ap_rbuff_get_api(_ap_instance->flows[fd].rb); + _ap_instance->flows[fd].api = recv_msg->api; pthread_rwlock_unlock(&_ap_instance->flows_lock); pthread_rwlock_unlock(&_ap_instance->data_lock); diff --git a/src/lib/shm_ap_rbuff.c b/src/lib/shm_ap_rbuff.c index 62ef5cf1..1c7fd600 100644 --- a/src/lib/shm_ap_rbuff.c +++ b/src/lib/shm_ap_rbuff.c @@ -462,19 +462,6 @@ ssize_t shm_ap_rbuff_read_port_b(struct shm_ap_rbuff * rb, return idx; } -pid_t shm_ap_rbuff_get_api(struct shm_ap_rbuff *rb) -{ - pid_t api = -1; - if (rb == NULL) - return -1; - - pthread_mutex_lock(rb->lock); - api = rb->api; - pthread_mutex_unlock(rb->lock); - - return api; -} - void shm_ap_rbuff_reset(struct shm_ap_rbuff * rb) { if (rb == NULL) diff --git a/src/lib/shm_du_map.c b/src/lib/shm_du_map.c index 3e2c99d4..9ca282b9 100644 --- a/src/lib/shm_du_map.c +++ b/src/lib/shm_du_map.c @@ -91,14 +91,11 @@ static void garbage_collect(struct shm_du_map * dum) { #ifdef SHM_DU_MAP_MULTI_BLOCK struct shm_du_buff * sdb; - while (!shm_map_empty(dum) && - (sdb = get_tail_ptr(dum))->dst_api == -1) - + while (!shm_map_empty(dum) && (sdb = get_tail_ptr(dum))->dst_api == -1) *dum->ptr_tail = (*dum->ptr_tail + sdb->blocks) & (SHM_BUFFER_SIZE - 1); #else - while (!shm_map_empty(dum) && - get_tail_ptr(dum)->dst_api == -1) + while (!shm_map_empty(dum) && get_tail_ptr(dum)->dst_api == -1) *dum->ptr_tail = (*dum->ptr_tail + 1) & (SHM_BUFFER_SIZE - 1); @@ -296,8 +293,7 @@ void * shm_du_map_sanitize(void * o) struct timespec now; struct timespec dl; - if (pthread_cond_wait(dum->full, dum->lock) - == EOWNERDEAD) { + if (pthread_cond_wait(dum->full, dum->lock) == EOWNERDEAD) { LOG_WARN("Recovering dead mutex."); pthread_mutex_consistent(dum->lock); } -- cgit v1.2.3