cmd_ctx->lttng_msg_size = total_msg_size;
/* Copy command header */
- memcpy(((uint8_t *) cmd_ctx->llm) + cmd_header_offset, cmd_header_buf,
- cmd_header_len);
+ if (cmd_header_len) {
+ memcpy(((uint8_t *) cmd_ctx->llm) + cmd_header_offset, cmd_header_buf,
+ cmd_header_len);
+ }
/* Copy payload */
- memcpy(((uint8_t *) cmd_ctx->llm) + payload_offset, payload_buf,
- payload_len);
+ if (payload_len) {
+ memcpy(((uint8_t *) cmd_ctx->llm) + payload_offset, payload_buf,
+ payload_len);
+ }
end:
return ret;
case LTTNG_SNAPSHOT_RECORD:
case LTTNG_SAVE_SESSION:
case LTTNG_SET_SESSION_SHM_PATH:
+ case LTTNG_METADATA_REGENERATE:
need_domain = 0;
break;
default:
}
case LTTNG_LIST_CHANNELS:
{
- int nb_chan;
+ ssize_t payload_size;
struct lttng_channel *channels = NULL;
- nb_chan = cmd_list_channels(cmd_ctx->lsm->domain.type,
+ payload_size = cmd_list_channels(cmd_ctx->lsm->domain.type,
cmd_ctx->session, &channels);
- if (nb_chan < 0) {
+ if (payload_size < 0) {
/* Return value is a negative lttng_error_code. */
- ret = -nb_chan;
+ ret = -payload_size;
goto error;
}
ret = setup_lttng_msg_no_cmd_header(cmd_ctx, channels,
- nb_chan * sizeof(struct lttng_channel));
+ payload_size);
free(channels);
if (ret < 0) {
{
ssize_t nb_event;
struct lttng_event *events = NULL;
+ struct lttcomm_event_command_header cmd_header;
+ size_t total_size;
+
+ memset(&cmd_header, 0, sizeof(cmd_header));
+ /* Extended infos are included at the end of events */
+ nb_event = cmd_list_events(cmd_ctx->lsm->domain.type,
+ cmd_ctx->session, cmd_ctx->lsm->u.list.channel_name,
+ &events, &total_size);
- nb_event = cmd_list_events(cmd_ctx->lsm->domain.type, cmd_ctx->session,
- cmd_ctx->lsm->u.list.channel_name, &events);
if (nb_event < 0) {
/* Return value is a negative lttng_error_code. */
ret = -nb_event;
goto error;
}
- ret = setup_lttng_msg_no_cmd_header(cmd_ctx, events,
- nb_event * sizeof(struct lttng_event));
+ cmd_header.nb_events = nb_event;
+ ret = setup_lttng_msg(cmd_ctx, events, total_size,
+ &cmd_header, sizeof(cmd_header));
free(events);
if (ret < 0) {
cmd_ctx->lsm->u.set_shm_path.shm_path);
break;
}
+ case LTTNG_METADATA_REGENERATE:
+ {
+ ret = cmd_metadata_regenerate(cmd_ctx->session);
+ break;
+ }
default:
ret = LTTNG_ERR_UND;
break;