- int ret = LTTCOMM_OK;
-
- DBG("Processing client command %d", cmd_ctx->lsm->cmd_type);
-
- /*
- * Commands that DO NOT need a session.
- */
- switch (cmd_ctx->lsm->cmd_type) {
- case LTTNG_CREATE_SESSION:
- case LTTNG_LIST_SESSIONS:
- case LTTNG_LIST_TRACEPOINTS:
- case LTTNG_CALIBRATE:
- break;
- default:
- DBG("Getting session %s by name", cmd_ctx->lsm->session.name);
- cmd_ctx->session = find_session_by_name(cmd_ctx->lsm->session.name);
- if (cmd_ctx->session == NULL) {
- /* If session name not found */
- if (cmd_ctx->lsm->session.name != NULL) {
- ret = LTTCOMM_SESS_NOT_FOUND;
- } else { /* If no session name specified */
- ret = LTTCOMM_SELECT_SESS;
- }
- goto error;
- } else {
- /* Acquire lock for the session */
- lock_session(cmd_ctx->session);
- }
- break;
- }
-
- /*
- * Check domain type for specific "pre-action".
- */
- switch (cmd_ctx->lsm->domain.type) {
- case LTTNG_DOMAIN_KERNEL:
- /* Kernel tracer check */
- if (kernel_tracer_fd == 0) {
- init_kernel_tracer();
- if (kernel_tracer_fd == 0) {
- ret = LTTCOMM_KERN_NA;
- goto error;
- }
- }
- /* Need a session for kernel command */
- switch (cmd_ctx->lsm->cmd_type) {
- case LTTNG_CALIBRATE:
- case LTTNG_CREATE_SESSION:
- case LTTNG_LIST_SESSIONS:
- case LTTNG_LIST_TRACEPOINTS:
- break;
- default:
- if (cmd_ctx->session->kernel_session == NULL) {
- ret = create_kernel_session(cmd_ctx->session);
- if (ret < 0) {
- ret = LTTCOMM_KERN_SESS_FAIL;
- goto error;
- }
- /* Start the kernel consumer daemon */
- if (kconsumerd_pid == 0 &&
- cmd_ctx->lsm->cmd_type != LTTNG_REGISTER_CONSUMER) {
- ret = start_kconsumerd();
- if (ret < 0) {
- goto error;
- }
- }
- }
- }
- break;
- case LTTNG_DOMAIN_UST_PID:
- break;
- default:
- break;
- }
-
- /* Process by command type */
- switch (cmd_ctx->lsm->cmd_type) {
- case LTTNG_ADD_CONTEXT:
- {
- struct lttng_kernel_context kctx;
-
- /* Setup lttng message with no payload */
- ret = setup_lttng_msg(cmd_ctx, 0);
- if (ret < 0) {
- goto setup_error;
- }