lttng-ctl and lttng-sessiond use serialized communication for messages using lttng_channel.
Signed-off-by: Yannick Lamarre <ylama...@efficios.com> --- src/bin/lttng-sessiond/client.c | 9 ++++++--- src/common/sessiond-comm/sessiond-comm.h | 4 ++-- src/lib/lttng-ctl/lttng-ctl.c | 24 ++++-------------------- 3 files changed, 12 insertions(+), 25 deletions(-) diff --git a/src/bin/lttng-sessiond/client.c b/src/bin/lttng-sessiond/client.c index a889529a..0e36e5ad 100644 --- a/src/bin/lttng-sessiond/client.c +++ b/src/bin/lttng-sessiond/client.c @@ -1182,10 +1182,13 @@ error_add_context: } case LTTNG_ENABLE_CHANNEL: { - cmd_ctx->lsm->u.channel.chan.attr.extended.ptr = - (struct lttng_channel_extended *) &cmd_ctx->lsm->u.channel.extended; + struct lttng_channel channel; + struct lttng_channel_extended extended; + lttng_channel_extended_deserialize(&extended, &cmd_ctx->lsm->u.channel.extended); + lttng_channel_deserialize(&channel, &cmd_ctx->lsm->u.channel.chan); + channel.attr.extended.ptr = &extended; ret = cmd_enable_channel(cmd_ctx->session, &cmd_ctx->lsm->domain, - &cmd_ctx->lsm->u.channel.chan, + &channel, kernel_poll_pipe[1]); break; } diff --git a/src/common/sessiond-comm/sessiond-comm.h b/src/common/sessiond-comm/sessiond-comm.h index 23e82c8a..d0905f9e 100644 --- a/src/common/sessiond-comm/sessiond-comm.h +++ b/src/common/sessiond-comm/sessiond-comm.h @@ -402,9 +402,9 @@ struct lttcomm_session_msg { } LTTNG_PACKED disable; /* Create channel */ struct { - struct lttng_channel chan LTTNG_PACKED; + struct lttng_channel_serialized chan; /* struct lttng_channel_extended is already packed. */ - struct lttng_channel_extended extended; + struct lttng_channel_extended_serialized extended; } LTTNG_PACKED channel; /* Context */ struct { diff --git a/src/lib/lttng-ctl/lttng-ctl.c b/src/lib/lttng-ctl/lttng-ctl.c index 165fef4d..789534c8 100644 --- a/src/lib/lttng-ctl/lttng-ctl.c +++ b/src/lib/lttng-ctl/lttng-ctl.c @@ -1527,34 +1527,18 @@ int lttng_enable_channel(struct lttng_handle *handle, } memset(&lsm, 0, sizeof(lsm)); - memcpy(&lsm.u.channel.chan, in_chan, sizeof(lsm.u.channel.chan)); - lsm.u.channel.chan.attr.extended.ptr = NULL; - if (!in_chan->attr.extended.ptr) { - struct lttng_channel *channel; - struct lttng_channel_extended *extended; - - channel = lttng_channel_create(&handle->domain); - if (!channel) { - return -LTTNG_ERR_NOMEM; - } - - /* - * Create a new channel in order to use default extended - * attribute values. - */ - extended = (struct lttng_channel_extended *) - channel->attr.extended.ptr; - memcpy(&lsm.u.channel.extended, extended, sizeof(*extended)); - lttng_channel_destroy(channel); + init_serialized_extended_channel(&handle->domain, &lsm.u.channel.extended); } else { struct lttng_channel_extended *extended; extended = (struct lttng_channel_extended *) in_chan->attr.extended.ptr; - memcpy(&lsm.u.channel.extended, extended, sizeof(*extended)); + lttng_channel_extended_serialize(&lsm.u.channel.extended, extended); } + lttng_channel_serialize(&lsm.u.channel.chan, in_chan); + /* * Verify that the amount of memory required to create the requested * buffer is available on the system at the moment. -- 2.11.0 _______________________________________________ lttng-dev mailing list lttng-dev@lists.lttng.org https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev