X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=lttng-sessiond%2Fmain.c;h=2e6292d38a7e567b84d96484d8be22c10f9e28eb;hp=aae9b3dfe6f5f1f7ea2516873ee5f778aca2be27;hb=464dd62d5617322366e321877b440951e00a0152;hpb=5b4a0ec04ce1ee5a4cf4c8a5896edab28750da56 diff --git a/lttng-sessiond/main.c b/lttng-sessiond/main.c index aae9b3dfe..2e6292d38 100644 --- a/lttng-sessiond/main.c +++ b/lttng-sessiond/main.c @@ -157,6 +157,8 @@ static struct ust_cmd_queue ust_cmd_queue; */ static struct ltt_session_list *session_list_ptr; +int ust_consumer_fd; + /* * Create a poll set with O_CLOEXEC and add the thread quit pipe to the set. */ @@ -588,9 +590,9 @@ static int setup_lttng_msg(struct command_ctx *cmd_ctx, size_t size) buf_size = size; - cmd_ctx->llm = malloc(sizeof(struct lttcomm_lttng_msg) + buf_size); + cmd_ctx->llm = zmalloc(sizeof(struct lttcomm_lttng_msg) + buf_size); if (cmd_ctx->llm == NULL) { - perror("malloc"); + perror("zmalloc"); ret = -ENOMEM; goto error; } @@ -1260,9 +1262,9 @@ static void *thread_registration_apps(void *data) } /* Create UST registration command for enqueuing */ - ust_cmd = malloc(sizeof(struct ust_command)); + ust_cmd = zmalloc(sizeof(struct ust_command)); if (ust_cmd == NULL) { - perror("ust command malloc"); + perror("ust command zmalloc"); goto error; } @@ -1788,6 +1790,7 @@ static void list_lttng_sessions(struct lttng_session *sessions) sessions[i].path[PATH_MAX - 1] = '\0'; strncpy(sessions[i].name, session->name, NAME_MAX); sessions[i].name[NAME_MAX - 1] = '\0'; + sessions[i].enabled = session->enabled; i++; } } @@ -2510,6 +2513,10 @@ static int cmd_start_trace(struct ltt_session *session) ksession = session->kernel_session; usess = session->ust_session; + if (session->enabled) + return LTTCOMM_UST_START_FAIL; + session->enabled = 1; + /* Kernel tracing */ if (ksession != NULL) { struct ltt_kernel_channel *kchan; @@ -2595,6 +2602,10 @@ static int cmd_stop_trace(struct ltt_session *session) /* Short cut */ ksession = session->kernel_session; + if (!session->enabled) + return LTTCOMM_UST_START_FAIL; + session->enabled = 0; + /* Kernel tracer */ if (ksession != NULL) { DBG("Stop kernel tracing"); @@ -3010,8 +3021,7 @@ static int process_client_msg(struct command_ctx *cmd_ctx) goto error; } - cmd_ctx->session->ust_session->consumer_fd = - ustconsumer_data.cmd_sock; + ust_consumer_fd = ustconsumer_data.cmd_sock; } pthread_mutex_unlock(&ustconsumer_data.pid_mutex); } @@ -3344,16 +3354,16 @@ static void *thread_manage_clients(void *data) } /* Allocate context command to process the client request */ - cmd_ctx = malloc(sizeof(struct command_ctx)); + cmd_ctx = zmalloc(sizeof(struct command_ctx)); if (cmd_ctx == NULL) { - perror("malloc cmd_ctx"); + perror("zmalloc cmd_ctx"); goto error; } /* Allocate data buffer for reception */ - cmd_ctx->lsm = malloc(sizeof(struct lttcomm_session_msg)); + cmd_ctx->lsm = zmalloc(sizeof(struct lttcomm_session_msg)); if (cmd_ctx->lsm == NULL) { - perror("malloc cmd_ctx->lsm"); + perror("zmalloc cmd_ctx->lsm"); goto error; } @@ -3390,7 +3400,7 @@ static void *thread_manage_clients(void *data) if (ret < 0) { /* * TODO: Inform client somehow of the fatal error. At - * this point, ret < 0 means that a malloc failed + * this point, ret < 0 means that a zmalloc failed * (ENOMEM). Error detected but still accept command. */ clean_command_ctx(&cmd_ctx);