-#ifndef _UST_LTTNG_EVENTS_H
-#define _UST_LTTNG_EVENTS_H
+#ifndef _LTTNG_UST_EVENTS_H
+#define _LTTNG_UST_EVENTS_H
/*
- * ust/lttng-events.h
+ * lttng/ust-events.h
*
* Copyright 2010 (c) - Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
*
#include <lttng/ust-tracer.h>
#include <endian.h>
#include <float.h>
+#include <lttng/tracepoint-internal.h>
struct ltt_channel;
struct ltt_session;
struct ltt_channel_ops {
struct ltt_channel *(*channel_create)(const char *name,
- struct ltt_channel *ltt_chan,
void *buf_addr,
size_t subbuf_size, size_t num_subbuf,
unsigned int switch_timer_interval,
unsigned int read_timer_interval,
int *shm_fd, int *wait_fd,
- uint64_t *memory_map_size);
+ uint64_t *memory_map_size,
+ struct ltt_channel *chan_priv_init);
void (*channel_destroy)(struct ltt_channel *ltt_chan);
struct lttng_ust_lib_ring_buffer *(*buffer_read_open)(struct channel *chan,
struct lttng_ust_shm_handle *handle,
};
struct ltt_channel {
- unsigned int id;
+ /*
+ * The pointers located in this private data are NOT safe to be
+ * dereferenced by the consumer. The only operations the
+ * consumer process is designed to be allowed to do is to read
+ * and perform subbuffer flush.
+ */
struct channel *chan; /* Channel buffers */
int enabled;
struct lttng_ctx *ctx;
int header_type; /* 0: unset, 1: compact, 2: large */
struct lttng_ust_shm_handle *handle; /* shared-memory handle */
int metadata_dumped:1;
+
+ /* Channel ID, available for consumer too */
+ unsigned int id;
+ /* Copy of session UUID for consumer (availability through shm) */
+ uuid_t uuid; /* Trace session unique ID */
};
struct ltt_session {
struct ltt_channel_ops ops;
};
+struct ltt_tracepoint_list {
+ struct tracepoint_iter iter;
+ int got_first;
+};
+
struct ltt_session *ltt_session_create(void);
int ltt_session_enable(struct ltt_session *session);
int ltt_session_disable(struct ltt_session *session);
unsigned int switch_timer_interval,
unsigned int read_timer_interval,
int *shm_fd, int *wait_fd,
- uint64_t *memory_map_size);
+ uint64_t *memory_map_size,
+ struct ltt_channel *chan_priv_init);
struct ltt_channel *ltt_global_channel_create(struct ltt_session *session,
int overwrite, void *buf_addr,
size_t subbuf_size, size_t num_subbuf,
struct cds_list_head ltt_transport_list;
struct ltt_transport *ltt_transport_find(const char *name);
-#endif /* _UST_LTTNG_EVENTS_H */
+#endif /* _LTTNG_UST_EVENTS_H */