diff options
author | dimitri staessens <[email protected]> | 2016-08-01 11:17:42 +0200 |
---|---|---|
committer | dimitri staessens <[email protected]> | 2016-08-01 11:17:42 +0200 |
commit | 84293e0e57ee2a3d779a575717fbc54f8e94e178 (patch) | |
tree | e0825f5586c2870839f15e0c8f4b390463145cd0 /src/lib | |
parent | 434c782c99496b491684f4ab0058d9491c250774 (diff) | |
parent | cf719963be2e42026012e152ae49f4c764dd9b4f (diff) | |
download | ouroboros-84293e0e57ee2a3d779a575717fbc54f8e94e178.tar.gz ouroboros-84293e0e57ee2a3d779a575717fbc54f8e94e178.zip |
Merged in sandervrijders/ouroboros/be-enrolment (pull request #182)
Be enrolment
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/cdap.c | 50 | ||||
-rw-r--r-- | src/lib/shm_ap_rbuff.c | 2 |
2 files changed, 28 insertions, 24 deletions
diff --git a/src/lib/cdap.c b/src/lib/cdap.c index 4275bfc7..4599fd8b 100644 --- a/src/lib/cdap.c +++ b/src/lib/cdap.c @@ -69,6 +69,28 @@ static ssize_t cdap_msg_to_buffer(cdap_t * msg, return len; } +static int next_invoke_id(struct cdap * instance) +{ + int ret; + + pthread_mutex_lock(&instance->ids_lock); + ret = bmp_allocate(instance->ids); + pthread_mutex_unlock(&instance->ids_lock); + + return ret; +} + +static int release_invoke_id(struct cdap * instance, + int id) +{ + int ret; + + pthread_mutex_lock(&instance->ids_lock); + ret = bmp_release(instance->ids, id); + pthread_mutex_unlock(&instance->ids_lock); + + return ret; +} static void * sdu_reader(void * o) { @@ -146,6 +168,7 @@ static void * sdu_reader(void * o) msg->result, val, length); + release_invoke_id(instance, msg->invoke_id); free(val); } break; @@ -189,6 +212,7 @@ struct cdap * cdap_create(struct cdap_ops * ops, } instance->ops = ops; + instance->fd = fd; instance->ids = bmp_create(IDS_SIZE, 0); if (instance->ids == NULL) { @@ -211,6 +235,9 @@ int cdap_destroy(struct cdap * instance) pthread_cancel(instance->reader); + if (flow_dealloc(instance->fd)) + return -1; + pthread_mutex_lock(&instance->ids_lock); bmp_destroy(instance->ids); @@ -225,29 +252,6 @@ int cdap_destroy(struct cdap * instance) return 0; } -static int next_invoke_id(struct cdap * instance) -{ - int ret; - - pthread_mutex_lock(&instance->ids_lock); - ret = bmp_allocate(instance->ids); - pthread_mutex_unlock(&instance->ids_lock); - - return ret; -} - -static int release_invoke_id(struct cdap * instance, - int id) -{ - int ret; - - pthread_mutex_lock(&instance->ids_lock); - ret = bmp_release(instance->ids, id); - pthread_mutex_unlock(&instance->ids_lock); - - return ret; -} - static int write_msg(struct cdap * instance, cdap_t * msg) { diff --git a/src/lib/shm_ap_rbuff.c b/src/lib/shm_ap_rbuff.c index 605e5678..84f7617a 100644 --- a/src/lib/shm_ap_rbuff.c +++ b/src/lib/shm_ap_rbuff.c @@ -296,7 +296,7 @@ struct rb_entry * shm_ap_rbuff_read(struct shm_ap_rbuff * rb) while (tail_el_ptr->port_id < 0) *rb->ptr_tail = (*rb->ptr_tail + 1) & (SHM_RBUFF_SIZE -1); - while(shm_rbuff_empty(rb)) + while (shm_rbuff_empty(rb)) if (pthread_cond_wait(rb->work, rb->shm_mutex) == EOWNERDEAD) { LOG_DBGF("Recovering dead mutex."); |