#define _LGPL_SOURCE
-#include <common/common.h>
-#include <common/utils.h>
-#include <common/compat/endian.h>
+#include <common/common.hpp>
+#include <common/utils.hpp>
+#include <common/compat/endian.hpp>
-#include "lttng-relayd.h"
-#include "stream.h"
-#include "index.h"
-#include "connection.h"
+#include "lttng-relayd.hpp"
+#include "stream.hpp"
+#include "index.hpp"
+#include "connection.hpp"
/*
* Allocate a new relay index object. Pass the stream in which it is
DBG2("Creating relay index for stream id %" PRIu64 " and seqnum %" PRIu64,
stream->stream_handle, net_seq_num);
- index = (relay_index *) zmalloc(sizeof(*index));
+ index = zmalloc<relay_index>();
if (!index) {
PERROR("Relay index zmalloc");
goto end;
struct cds_lfht_node *node_ptr;
struct relay_index *_index;
+ ASSERT_RCU_READ_LOCKED();
+
DBG2("Adding relay index with stream id %" PRIu64 " and seqnum %" PRIu64,
stream->stream_handle, index->index_n.key);
*/
static bool relay_index_get(struct relay_index *index)
{
+ ASSERT_RCU_READ_LOCKED();
+
DBG2("index get for stream id %" PRIu64 " and seqnum %" PRIu64 " refcount %d",
index->stream->stream_handle, index->index_n.key,
(int) index->ref.refcount);
lttng_ht_lookup(stream->indexes_ht, &net_seq_num, &iter);
node = lttng_ht_iter_get_node_u64(&iter);
if (node) {
- index = caa_container_of(node, struct relay_index, index_n);
+ index = lttng::utils::container_of(node, &relay_index::index_n);
} else {
struct relay_index *oldindex;
static void index_destroy_rcu(struct rcu_head *rcu_head)
{
struct relay_index *index =
- caa_container_of(rcu_head, struct relay_index, rcu_node);
+ lttng::utils::container_of(rcu_head, &relay_index::rcu_node);
index_destroy(index);
}
/* Stream lock must be held by the caller. */
static void index_release(struct urcu_ref *ref)
{
- struct relay_index *index = caa_container_of(ref, struct relay_index, ref);
+ struct relay_index *index = lttng::utils::container_of(ref, &relay_index::ref);
struct relay_stream *stream = index->stream;
int ret;
struct lttng_ht_iter iter;