Implement channel fd monitoring thread for UST
[lttng-tools.git] / src / bin / lttng-consumerd / lttng-consumerd.c
index b854aabac9923c9b832b81b338d933b2feafa6d7..84868077c39e5e85624a973d70bfca270670bce2 100644 (file)
@@ -51,8 +51,8 @@
 
 /* TODO : support UST (all direct kernel-ctl accesses). */
 
-/* the two threads (receive fd, poll and metadata) */
-static pthread_t data_thread, metadata_thread, sessiond_thread;
+/* threads (channel handling, poll, metadata, sessiond) */
+static pthread_t channel_thread, data_thread, metadata_thread, sessiond_thread;
 
 /* to count the number of times the user pressed ctrl+c */
 static int sigintcount = 0;
@@ -363,12 +363,20 @@ int main(int argc, char **argv)
        }
        lttng_consumer_set_error_sock(ctx, ret);
 
+       /* Create thread to manage channels */
+       ret = pthread_create(&channel_thread, NULL, consumer_thread_channel_poll,
+                       (void *) ctx);
+       if (ret != 0) {
+               perror("pthread_create");
+               goto error;
+       }
+
        /* Create thread to manage the polling/writing of trace metadata */
        ret = pthread_create(&metadata_thread, NULL, consumer_thread_metadata_poll,
                        (void *) ctx);
        if (ret != 0) {
                perror("pthread_create");
-               goto error;
+               goto metadata_error;
        }
 
        /* Create thread to manage the polling/writing of trace data */
@@ -407,6 +415,13 @@ data_error:
                goto error;
        }
 
+metadata_error:
+       ret = pthread_join(channel_thread, &status);
+       if (ret != 0) {
+               perror("pthread_join");
+               goto error;
+       }
+
        if (!ret) {
                ret = EXIT_SUCCESS;
                lttng_consumer_send_error(ctx, LTTCOMM_CONSUMERD_EXIT_SUCCESS);
This page took 0.023037 seconds and 4 git commands to generate.