Signed-off-by: Francis Deslauriers <francis.deslauriers@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
/* Prep channel message structure */
consumer_init_channel_comm_msg(&lkm,
LTTNG_CONSUMER_ADD_CHANNEL,
/* Prep channel message structure */
consumer_init_channel_comm_msg(&lkm,
LTTNG_CONSUMER_ADD_CHANNEL,
+ session->metadata->key,
session->id,
pathname,
session->uid,
session->id,
pathname,
session->uid,
/* Prep stream message structure */
consumer_init_stream_comm_msg(&lkm,
LTTNG_CONSUMER_ADD_STREAM,
/* Prep stream message structure */
consumer_init_stream_comm_msg(&lkm,
LTTNG_CONSUMER_ADD_STREAM,
+ session->metadata->key,
session->metadata_stream_fd,
0); /* CPU: 0 for metadata. */
session->metadata_stream_fd,
0); /* CPU: 0 for metadata. */
assert(metadata);
assert(socket);
assert(metadata);
assert(socket);
- DBG("Sending kernel consumer destroy channel key %d", metadata->fd);
+ DBG("Sending kernel consumer destroy channel key %" PRIu64, metadata->key);
memset(&msg, 0, sizeof(msg));
msg.cmd_type = LTTNG_CONSUMER_DESTROY_CHANNEL;
memset(&msg, 0, sizeof(msg));
msg.cmd_type = LTTNG_CONSUMER_DESTROY_CHANNEL;
- msg.u.destroy_channel.key = metadata->fd;
+ msg.u.destroy_channel.key = metadata->key;
pthread_mutex_lock(socket->lock);
health_code_update();
pthread_mutex_lock(socket->lock);
health_code_update();
+ lkm->key = ++next_kernel_channel_key;
/* Prevent fd duplication after execlp() */
ret = fcntl(lkm->fd, F_SETFD, FD_CLOEXEC);
if (ret < 0) {
/* Prevent fd duplication after execlp() */
ret = fcntl(lkm->fd, F_SETFD, FD_CLOEXEC);
if (ret < 0) {
}
/* Snapshot metadata, */
}
/* Snapshot metadata, */
- ret = consumer_snapshot_channel(socket, ksess->metadata->fd, output,
+ ret = consumer_snapshot_channel(socket, ksess->metadata->key, output,
1, ksess->uid, ksess->gid,
DEFAULT_KERNEL_TRACE_DIR, wait, 0);
if (ret < 0) {
1, ksess->uid, ksess->gid,
DEFAULT_KERNEL_TRACE_DIR, wait, 0);
if (ret < 0) {
/* Metadata */
struct ltt_kernel_metadata {
int fd;
/* Metadata */
struct ltt_kernel_metadata {
int fd;
+ uint64_t key; /* Key to reference this channel with the consumer. */
struct lttng_channel *conf;
};
struct lttng_channel *conf;
};