Tests: add kernel test into the `make check` test suite.
[lttng-tools.git] / src / common / consumer / consumer.cpp
index 47bb5bd98b1a1fbf0c10a8795672ca1af0a556e9..0585b7d50ee149d28243697f46cca6dc427b9f4a 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2011 Julien Desfossez <julien.desfossez@polymtl.ca>
+ * Copyright (C) 2011 EfficiOS Inc.
  * Copyright (C) 2011 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
  * Copyright (C) 2012 David Goulet <dgoulet@efficios.com>
  *
@@ -246,6 +246,8 @@ struct lttng_consumer_channel *consumer_find_channel(uint64_t key)
        struct lttng_ht_node_u64 *node;
        struct lttng_consumer_channel *channel = NULL;
 
+       ASSERT_RCU_READ_LOCKED();
+
        /* -1ULL keys are lookup failures */
        if (key == (uint64_t) -1ULL) {
                return NULL;
@@ -521,6 +523,7 @@ void lttng_consumer_cleanup_relayd(struct consumer_relayd_sock_pair *relayd)
 void consumer_flag_relayd_for_destroy(struct consumer_relayd_sock_pair *relayd)
 {
        LTTNG_ASSERT(relayd);
+       ASSERT_RCU_READ_LOCKED();
 
        /* Set destroy flag for this object */
        uatomic_set(&relayd->destroy_flag, 1);
@@ -633,6 +636,7 @@ static int add_relayd(struct consumer_relayd_sock_pair *relayd)
        struct lttng_ht_iter iter;
 
        LTTNG_ASSERT(relayd);
+       ASSERT_RCU_READ_LOCKED();
 
        lttng_ht_lookup(the_consumer_data.relayd_ht, &relayd->net_seq_idx,
                        &iter);
@@ -690,6 +694,8 @@ struct consumer_relayd_sock_pair *consumer_find_relayd(uint64_t key)
        struct lttng_ht_node_u64 *node;
        struct consumer_relayd_sock_pair *relayd = NULL;
 
+       ASSERT_RCU_READ_LOCKED();
+
        /* Negative keys are lookup failures */
        if (key == (uint64_t) -1ULL) {
                goto error;
@@ -3381,6 +3387,8 @@ ssize_t lttng_consumer_read_subbuffer(struct lttng_consumer_stream *stream,
 
        if (!locked_by_caller) {
                stream->read_subbuffer_ops.lock(stream);
+       } else {
+               stream->read_subbuffer_ops.assert_locked(stream);
        }
 
        if (stream->read_subbuffer_ops.on_wake_up) {
@@ -3568,6 +3576,7 @@ error:
 
        LTTNG_ASSERT(ctx);
        LTTNG_ASSERT(relayd_sock);
+       ASSERT_RCU_READ_LOCKED();
 
        DBG("Consumer adding relayd socket (idx: %" PRIu64 ")", net_seq_idx);
 
@@ -3747,6 +3756,8 @@ static struct consumer_relayd_sock_pair *find_relayd_by_session_id(uint64_t id)
        struct lttng_ht_iter iter;
        struct consumer_relayd_sock_pair *relayd = NULL;
 
+       ASSERT_RCU_READ_LOCKED();
+
        /* Iterate over all relayd since they are indexed by net_seq_idx. */
        cds_lfht_for_each_entry(the_consumer_data.relayd_ht->ht, &iter.iter,
                        relayd, node.node) {
@@ -4011,6 +4022,8 @@ int lttng_consumer_rotate_channel(struct lttng_consumer_channel *channel,
        struct lttng_dynamic_pointer_array streams_packet_to_open;
        size_t stream_idx;
 
+       ASSERT_RCU_READ_LOCKED();
+
        DBG("Consumer sample rotate position for channel %" PRIu64, key);
 
        lttng_dynamic_array_init(&stream_rotation_positions,
@@ -4670,6 +4683,8 @@ int lttng_consumer_rotate_ready_streams(struct lttng_consumer_channel *channel,
        struct lttng_ht_iter iter;
        struct lttng_ht *ht = the_consumer_data.stream_per_chan_id_ht;
 
+       ASSERT_RCU_READ_LOCKED();
+
        rcu_read_lock();
 
        DBG("Consumer rotate ready streams in channel %" PRIu64, key);
This page took 0.025112 seconds and 4 git commands to generate.