Remove unused code
[lttng-tools.git] / src / common / consumer.c
index 0b2f07391009f4a317b8f7c876443addad39d660..0f0e60ad839a9beab57168634a8d7220a86fae62 100644 (file)
@@ -172,17 +172,6 @@ void consumer_free_stream(struct rcu_head *head)
        free(stream);
 }
 
-static
-void consumer_free_metadata_stream(struct rcu_head *head)
-{
-       struct lttng_ht_node_ulong *node =
-               caa_container_of(head, struct lttng_ht_node_ulong, head);
-       struct lttng_consumer_stream *stream =
-               caa_container_of(node, struct lttng_consumer_stream, waitfd_node);
-
-       free(stream);
-}
-
 /*
  * RCU protected relayd socket pair free.
  */
@@ -292,16 +281,11 @@ void consumer_del_stream(struct lttng_consumer_stream *stream,
        iter.iter.node = &stream->node.node;
        ret = lttng_ht_del(ht, &iter);
        assert(!ret);
-
        rcu_read_unlock();
 
-       if (consumer_data.stream_count <= 0) {
-               goto end;
-       }
+       assert(consumer_data.stream_count > 0);
        consumer_data.stream_count--;
-       if (!stream) {
-               goto end;
-       }
+
        if (stream->out_fd >= 0) {
                ret = close(stream->out_fd);
                if (ret) {
@@ -417,8 +401,17 @@ struct lttng_consumer_stream *consumer_allocate_stream(
        stream->metadata_flag = metadata_flag;
        strncpy(stream->path_name, path_name, sizeof(stream->path_name));
        stream->path_name[sizeof(stream->path_name) - 1] = '\0';
-       lttng_ht_node_init_ulong(&stream->waitfd_node, stream->wait_fd);
-       lttng_ht_node_init_ulong(&stream->node, stream->key);
+
+       /*
+        * Index differently the metadata node because the thread is using an
+        * internal hash table to match streams in the metadata_ht to the epoll set
+        * file descriptor.
+        */
+       if (metadata_flag) {
+               lttng_ht_node_init_ulong(&stream->node, stream->wait_fd);
+       } else {
+               lttng_ht_node_init_ulong(&stream->node, stream->key);
+       }
 
        /*
         * The cpu number is needed before using any ustctl_* actions. Ignored for
@@ -630,23 +623,6 @@ error:
        return outfd;
 }
 
-/*
- * Update a stream according to what we just received.
- */
-void consumer_change_stream_state(int stream_key,
-               enum lttng_consumer_stream_state state)
-{
-       struct lttng_consumer_stream *stream;
-
-       pthread_mutex_lock(&consumer_data.lock);
-       stream = consumer_find_stream(stream_key, consumer_data.stream_ht);
-       if (stream) {
-               stream->state = state;
-       }
-       consumer_data.need_update = 1;
-       pthread_mutex_unlock(&consumer_data.lock);
-}
-
 static
 void consumer_free_channel(struct rcu_head *head)
 {
@@ -822,10 +798,10 @@ static int consumer_update_poll_array(
        rcu_read_unlock();
 
        /*
-        * Insert the consumer_poll_pipe at the end of the array and don't
+        * Insert the consumer_data_pipe at the end of the array and don't
         * increment i so nb_fd is the number of real FD.
         */
-       (*pollfd)[i].fd = ctx->consumer_poll_pipe[0];
+       (*pollfd)[i].fd = ctx->consumer_data_pipe[0];
        (*pollfd)[i].events = POLLIN | POLLPRI;
        return i;
 }
@@ -904,17 +880,6 @@ void lttng_consumer_cleanup(void)
 
        rcu_read_lock();
 
-       /*
-        * close all outfd. Called when there are no more threads running (after
-        * joining on the threads), no need to protect list iteration with mutex.
-        */
-       cds_lfht_for_each_entry(consumer_data.stream_ht->ht, &iter.iter, node,
-                       node) {
-               struct lttng_consumer_stream *stream =
-                       caa_container_of(node, struct lttng_consumer_stream, node);
-               consumer_del_stream(stream, consumer_data.stream_ht);
-       }
-
        cds_lfht_for_each_entry(consumer_data.channel_ht->ht, &iter.iter, node,
                        node) {
                struct lttng_consumer_channel *channel =
@@ -924,7 +889,6 @@ void lttng_consumer_cleanup(void)
 
        rcu_read_unlock();
 
-       lttng_ht_destroy(consumer_data.stream_ht);
        lttng_ht_destroy(consumer_data.channel_ht);
 }
 
@@ -1022,21 +986,21 @@ struct lttng_consumer_local_data *lttng_consumer_create(
        ctx->on_recv_stream = recv_stream;
        ctx->on_update_stream = update_stream;
 
-       ret = pipe(ctx->consumer_poll_pipe);
+       ret = pipe(ctx->consumer_data_pipe);
        if (ret < 0) {
                PERROR("Error creating poll pipe");
                goto error_poll_pipe;
        }
 
        /* set read end of the pipe to non-blocking */
-       ret = fcntl(ctx->consumer_poll_pipe[0], F_SETFL, O_NONBLOCK);
+       ret = fcntl(ctx->consumer_data_pipe[0], F_SETFL, O_NONBLOCK);
        if (ret < 0) {
                PERROR("fcntl O_NONBLOCK");
                goto error_poll_fcntl;
        }
 
        /* set write end of the pipe to non-blocking */
-       ret = fcntl(ctx->consumer_poll_pipe[1], F_SETFL, O_NONBLOCK);
+       ret = fcntl(ctx->consumer_data_pipe[1], F_SETFL, O_NONBLOCK);
        if (ret < 0) {
                PERROR("fcntl O_NONBLOCK");
                goto error_poll_fcntl;
@@ -1084,7 +1048,7 @@ error_quit_pipe:
        for (i = 0; i < 2; i++) {
                int err;
 
-               err = close(ctx->consumer_poll_pipe[i]);
+               err = close(ctx->consumer_data_pipe[i]);
                if (err) {
                        PERROR("close");
                }
@@ -1114,11 +1078,11 @@ void lttng_consumer_destroy(struct lttng_consumer_local_data *ctx)
        if (ret) {
                PERROR("close");
        }
-       ret = close(ctx->consumer_poll_pipe[0]);
+       ret = close(ctx->consumer_data_pipe[0]);
        if (ret) {
                PERROR("close");
        }
-       ret = close(ctx->consumer_poll_pipe[1]);
+       ret = close(ctx->consumer_data_pipe[1]);
        if (ret) {
                PERROR("close");
        }
@@ -1576,11 +1540,11 @@ static void destroy_stream_ht(struct lttng_ht *ht)
        }
 
        rcu_read_lock();
-       cds_lfht_for_each_entry(ht->ht, &iter.iter, stream, waitfd_node.node) {
+       cds_lfht_for_each_entry(ht->ht, &iter.iter, stream, node.node) {
                ret = lttng_ht_del(ht, &iter);
                assert(!ret);
 
-               call_rcu(&stream->waitfd_node.head, consumer_free_metadata_stream);
+               call_rcu(&stream->node.head, consumer_free_stream);
        }
        rcu_read_unlock();
 
@@ -1633,7 +1597,7 @@ void consumer_del_metadata_stream(struct lttng_consumer_stream *stream,
        }
 
        rcu_read_lock();
-       iter.iter.node = &stream->waitfd_node.node;
+       iter.iter.node = &stream->node.node;
        ret = lttng_ht_del(ht, &iter);
        assert(!ret);
        rcu_read_unlock();
@@ -1704,7 +1668,7 @@ end:
        }
 
 free_stream:
-       call_rcu(&stream->waitfd_node.head, consumer_free_metadata_stream);
+       call_rcu(&stream->node.head, consumer_free_stream);
 }
 
 /*
@@ -1753,7 +1717,7 @@ static int consumer_add_metadata_stream(struct lttng_consumer_stream *stream,
        /* Steal stream identifier to avoid having streams with the same key */
        consumer_steal_stream_key(stream->key, ht);
 
-       lttng_ht_add_unique_ulong(ht, &stream->waitfd_node);
+       lttng_ht_add_unique_ulong(ht, &stream->node);
        rcu_read_unlock();
 
        pthread_mutex_unlock(&consumer_data.lock);
@@ -1878,7 +1842,7 @@ restart:
                        assert(node);
 
                        stream = caa_container_of(node, struct lttng_consumer_stream,
-                                       waitfd_node);
+                                       node);
 
                        /* Check for error event */
                        if (revents & (LPOLLERR | LPOLLHUP)) {
@@ -1983,7 +1947,7 @@ void *consumer_thread_data_poll(void *data)
                                local_stream = NULL;
                        }
 
-                       /* allocate for all fds + 1 for the consumer_poll_pipe */
+                       /* allocate for all fds + 1 for the consumer_data_pipe */
                        pollfd = zmalloc((consumer_data.stream_count + 1) * sizeof(struct pollfd));
                        if (pollfd == NULL) {
                                PERROR("pollfd malloc");
@@ -1991,7 +1955,7 @@ void *consumer_thread_data_poll(void *data)
                                goto end;
                        }
 
-                       /* allocate for all fds + 1 for the consumer_poll_pipe */
+                       /* allocate for all fds + 1 for the consumer_data_pipe */
                        local_stream = zmalloc((consumer_data.stream_count + 1) *
                                        sizeof(struct lttng_consumer_stream));
                        if (local_stream == NULL) {
@@ -2037,17 +2001,17 @@ void *consumer_thread_data_poll(void *data)
                }
 
                /*
-                * If the consumer_poll_pipe triggered poll go directly to the
+                * If the consumer_data_pipe triggered poll go directly to the
                 * beginning of the loop to update the array. We want to prioritize
                 * array update over low-priority reads.
                 */
                if (pollfd[nb_fd].revents & (POLLIN | POLLPRI)) {
                        size_t pipe_readlen;
 
-                       DBG("consumer_poll_pipe wake up");
+                       DBG("consumer_data_pipe wake up");
                        /* Consume 1 byte of pipe data */
                        do {
-                               pipe_readlen = read(ctx->consumer_poll_pipe[0], &new_stream,
+                               pipe_readlen = read(ctx->consumer_data_pipe[0], &new_stream,
                                                sizeof(new_stream));
                        } while (pipe_readlen == -1 && errno == EINTR);
 
@@ -2298,7 +2262,7 @@ end:
        do {
                struct lttng_consumer_stream *null_stream = NULL;
 
-               ret = write(ctx->consumer_poll_pipe[1], &null_stream,
+               ret = write(ctx->consumer_data_pipe[1], &null_stream,
                                sizeof(null_stream));
        } while (ret < 0 && errno == EINTR);
 
@@ -2342,7 +2306,6 @@ int lttng_consumer_on_recv_stream(struct lttng_consumer_stream *stream)
  */
 void lttng_consumer_init(void)
 {
-       consumer_data.stream_ht = lttng_ht_new(0, LTTNG_HT_TYPE_ULONG);
        consumer_data.channel_ht = lttng_ht_new(0, LTTNG_HT_TYPE_ULONG);
        consumer_data.relayd_ht = lttng_ht_new(0, LTTNG_HT_TYPE_ULONG);
 
This page took 0.028256 seconds and 4 git commands to generate.