- struct ltt_kernel_channel *chan;
-
- /* Setup lttng message with no payload */
- ret = setup_lttng_msg(cmd_ctx, 0);
- if (ret < 0) {
- goto setup_error;
- }
-
- /* Kernel tracing */
- if (cmd_ctx->session->kernel_session != NULL) {
- if (cmd_ctx->session->kernel_session->metadata == NULL) {
- DBG("Open kernel metadata");
- ret = kernel_open_metadata(cmd_ctx->session->kernel_session,
- cmd_ctx->session->kernel_session->trace_path);
- if (ret < 0) {
- ret = LTTCOMM_KERN_META_FAIL;
- goto error;
- }
- }
-
- if (cmd_ctx->session->kernel_session->metadata_stream_fd == 0) {
- DBG("Opening kernel metadata stream");
- if (cmd_ctx->session->kernel_session->metadata_stream_fd == 0) {
- ret = kernel_open_metadata_stream(cmd_ctx->session->kernel_session);
- if (ret < 0) {
- ERR("Kernel create metadata stream failed");
- ret = LTTCOMM_KERN_STREAM_FAIL;
- goto error;
- }
- }
- }
-
- /* For each channel */
- cds_list_for_each_entry(chan,
- &cmd_ctx->session->kernel_session->channel_list.head, list) {
- if (chan->stream_count == 0) {
- ret = kernel_open_channel_stream(chan);
- if (ret < 0) {
- ERR("Kernel create channel stream failed");
- ret = LTTCOMM_KERN_STREAM_FAIL;
- goto error;
- }
- /* Update the stream global counter */
- cmd_ctx->session->kernel_session->stream_count_global += ret;
- }
- }
-
- ret = start_kernel_trace(cmd_ctx->session->kernel_session);
- if (ret < 0) {
- ret = LTTCOMM_KERN_START_FAIL;
- goto error;
- }
-
- DBG("Start kernel tracing");
- ret = kernel_start_session(cmd_ctx->session->kernel_session);
- if (ret < 0) {
- ERR("Kernel start session failed");
- ret = LTTCOMM_KERN_START_FAIL;
- goto error;
- }
-
- /* Quiescent wait after starting trace */
- kernel_wait_quiescent(kernel_tracer_fd);
- }
-
- /* TODO: Start all UST traces */
-
- ret = LTTCOMM_OK;