[lttng-dev] [MODULES PATCH 3/3] Export the stream instance ID.
Julien Desfossez
jdesfossez at efficios.com
Mon Jul 13 11:09:25 EDT 2015
Allow the lttng-consumer to query the stream instance ID.
Signed-off-by: Julien Desfossez <jdesfossez at efficios.com>
---
lttng-abi.c | 18 ++++++++++++++++++
lttng-abi.h | 5 +++++
lttng-events.h | 3 +++
lttng-ring-buffer-client.h | 12 ++++++++++++
lttng-ring-buffer-metadata-client.h | 9 +++++++++
5 files changed, 47 insertions(+)
diff --git a/lttng-abi.c b/lttng-abi.c
index 586116d..79d6e7f 100644
--- a/lttng-abi.c
+++ b/lttng-abi.c
@@ -1517,6 +1517,15 @@ static long lttng_stream_ring_buffer_ioctl(struct file *filp,
goto error;
return put_u64(seq, arg);
}
+ case LTTNG_RING_BUFFER_INSTANCE_ID:
+ {
+ uint64_t id;
+
+ ret = ops->instance_id(config, buf, &id);
+ if (ret < 0)
+ goto error;
+ return put_u64(id, arg);
+ }
default:
return lib_ring_buffer_file_operations.unlocked_ioctl(filp,
cmd, arg);
@@ -1612,6 +1621,15 @@ static long lttng_stream_ring_buffer_compat_ioctl(struct file *filp,
goto error;
return put_u64(seq, arg);
}
+ case LTTNG_RING_BUFFER_COMPAT_INSTANCE_ID:
+ {
+ uint64_t id;
+
+ ret = ops->instance_id(config, buf, &id);
+ if (ret < 0)
+ goto error;
+ return put_u64(id, arg);
+ }
default:
return lib_ring_buffer_file_operations.compat_ioctl(filp,
cmd, arg);
diff --git a/lttng-abi.h b/lttng-abi.h
index 2d342c1..994d280 100644
--- a/lttng-abi.h
+++ b/lttng-abi.h
@@ -230,6 +230,8 @@ struct lttng_kernel_filter_bytecode {
#define LTTNG_RING_BUFFER_GET_CURRENT_TIMESTAMP _IOR(0xF6, 0x26, uint64_t)
/* returns the packet sequence number */
#define LTTNG_RING_BUFFER_GET_SEQ_NUM _IOR(0xF6, 0x27, uint64_t)
+/* returns the stream instance id */
+#define LTTNG_RING_BUFFER_INSTANCE_ID _IOR(0xF6, 0x28, uint64_t)
#ifdef CONFIG_COMPAT
/* returns the timestamp begin of the current sub-buffer */
@@ -256,6 +258,9 @@ struct lttng_kernel_filter_bytecode {
/* returns the packet sequence number */
#define LTTNG_RING_BUFFER_COMPAT_GET_SEQ_NUM \
LTTNG_RING_BUFFER_GET_SEQ_NUM
+/* returns the stream instance id */
+#define LTTNG_RING_BUFFER_COMPAT_INSTANCE_ID \
+ LTTNG_RING_BUFFER_INSTANCE_ID
#endif /* CONFIG_COMPAT */
#endif /* _LTTNG_ABI_H */
diff --git a/lttng-events.h b/lttng-events.h
index c8afd8f..f695bd5 100644
--- a/lttng-events.h
+++ b/lttng-events.h
@@ -362,6 +362,9 @@ struct lttng_channel_ops {
struct lib_ring_buffer *bufb,
uint64_t *seq);
uint64_t (*subbuf_size)(struct channel *chan);
+ int (*instance_id) (const struct lib_ring_buffer_config *config,
+ struct lib_ring_buffer *bufb,
+ uint64_t *id);
};
struct lttng_transport {
diff --git a/lttng-ring-buffer-client.h b/lttng-ring-buffer-client.h
index 69cc99e..6a2ee83 100644
--- a/lttng-ring-buffer-client.h
+++ b/lttng-ring-buffer-client.h
@@ -505,6 +505,17 @@ uint64_t client_get_subbuf_size(struct channel *chan)
return chan->backend.subbuf_size;
}
+static
+int client_instance_id(const struct lib_ring_buffer_config *config,
+ struct lib_ring_buffer *buf,
+ uint64_t *id)
+{
+ struct packet_header *header = client_packet_header(config, buf);
+ *id = header->stream_instance_id;
+
+ return 0;
+}
+
static const struct lib_ring_buffer_config client_config = {
.cb.ring_buffer_clock_read = client_ring_buffer_clock_read,
.cb.record_header_size = client_record_header_size,
@@ -737,6 +748,7 @@ static struct lttng_transport lttng_relay_transport = {
.current_timestamp = client_current_timestamp,
.sequence_number = client_sequence_number,
.subbuf_size = client_get_subbuf_size,
+ .instance_id = client_instance_id,
},
};
diff --git a/lttng-ring-buffer-metadata-client.h b/lttng-ring-buffer-metadata-client.h
index da94aeb..a402301 100644
--- a/lttng-ring-buffer-metadata-client.h
+++ b/lttng-ring-buffer-metadata-client.h
@@ -212,6 +212,14 @@ uint64_t client_get_subbuf_size(struct channel *chan)
return -ENOSYS;
}
+static
+int client_instance_id(const struct lib_ring_buffer_config *config,
+ struct lib_ring_buffer *bufb,
+ uint64_t *id)
+{
+ return -ENOSYS;
+}
+
static const struct lib_ring_buffer_config client_config = {
.cb.ring_buffer_clock_read = client_ring_buffer_clock_read,
.cb.record_header_size = client_record_header_size,
@@ -420,6 +428,7 @@ static struct lttng_transport lttng_relay_transport = {
.current_timestamp = client_current_timestamp,
.sequence_number = client_sequence_number,
.subbuf_size = client_get_subbuf_size,
+ .instance_id = client_instance_id,
},
};
--
1.9.1
More information about the lttng-dev
mailing list