X-Git-Url: https://git.lttng.org/?p=ust.git;a=blobdiff_plain;f=libustconsumer%2Flibustconsumer.c;h=c6dd20c355050c69c04ec8a5e97562f9d49c7056;hp=abf21d801ca1473fd8b1b3c1453636361fc0199a;hb=9edd34bd25f52dd39b354a84f02697254121aefd;hpb=5343b2860738c675311ce5949bdf9e31afc76fa4 diff --git a/libustconsumer/libustconsumer.c b/libustconsumer/libustconsumer.c index abf21d8..c6dd20c 100644 --- a/libustconsumer/libustconsumer.c +++ b/libustconsumer/libustconsumer.c @@ -146,7 +146,7 @@ void decrement_active_buffers(void *arg) pthread_mutex_unlock(&instance->mutex); } -static int get_pidunique(int sock, s64 *pidunique) +static int get_pidunique(int sock, int64_t *pidunique) { struct ustcomm_header _send_hdr, *send_hdr; struct ustcomm_header _recv_hdr, *recv_hdr; @@ -543,6 +543,10 @@ void *consumer_thread(void *arg) int result; sigset_t sigset; + pthread_mutex_lock(&args->instance->mutex); + args->instance->active_threads++; + pthread_mutex_unlock(&args->instance->mutex); + if(args->instance->callbacks->on_new_thread) args->instance->callbacks->on_new_thread(args->instance->callbacks); @@ -584,6 +588,10 @@ void *consumer_thread(void *arg) if(args->instance->callbacks->on_close_thread) args->instance->callbacks->on_close_thread(args->instance->callbacks); + pthread_mutex_lock(&args->instance->mutex); + args->instance->active_threads--; + pthread_mutex_unlock(&args->instance->mutex); + free((void *)args->channel); free(args); return NULL; @@ -735,7 +743,7 @@ int ustconsumer_start_instance(struct ustconsumer_instance *instance) if (instance->quit_program) { pthread_mutex_lock(&instance->mutex); - if(instance->active_buffers == 0) { + if (instance->active_buffers == 0 && instance->active_threads == 0) { pthread_mutex_unlock(&instance->mutex); break; }