X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=ltt-sessiond%2Fmain.c;h=70ce53c8b1cd50c87e1712bc42a2c2e0ba0f9bd4;hp=450a6ffc8c075c4f905fd465f6298c8add38a760;hb=47b74d6393632d4d793a89d24b0fd600eac602b5;hpb=3f9947db38d28a772b76dc63ab5688ef4037b107 diff --git a/ltt-sessiond/main.c b/ltt-sessiond/main.c index 450a6ffc8..70ce53c8b 100644 --- a/ltt-sessiond/main.c +++ b/ltt-sessiond/main.c @@ -101,6 +101,8 @@ static void *thread_manage_apps(void *data) uid_t uid; } reg_msg; + DBG("[thread] Manage apps started"); + /* Notify all applications to register */ notify_apps(default_global_apps_pipe); @@ -157,6 +159,8 @@ static void *thread_manage_clients(void *data) int sock, ret; struct lttcomm_session_msg lsm; + DBG("[thread] Manage client started"); + ret = lttcomm_listen_unix_sock(client_socket); if (ret < 0) { goto error; @@ -233,6 +237,8 @@ static int connect_app(pid_t pid) int sock; struct ltt_traceable_app *lta; + DBG("Connect to application pid %d", pid); + lta = find_app_by_pid(pid); if (lta == NULL) { /* App not found */ @@ -261,6 +267,8 @@ static int notify_apps(const char *name) int fd; int ret = -1; + DBG("Notify the global application pipe"); + /* Try opening the global pipe */ fd = open(name, O_WRONLY); if (fd < 0) { @@ -289,6 +297,8 @@ static int ust_create_trace(pid_t pid) int sock, ret; struct ltt_ust_trace *trace; + DBG("Creating trace for pid %d", pid); + trace = malloc(sizeof(struct ltt_ust_trace)); if (trace == NULL) { perror("malloc"); @@ -299,6 +309,11 @@ static int ust_create_trace(pid_t pid) /* Init */ trace->pid = pid; trace->shmid = 0; + /* NOTE: to be removed. Trace name will no longer be + * required for LTTng userspace tracer. For now, we set it + * to 'auto' for API compliance. + */ + snprintf(trace->name, 5, "auto"); /* Connect to app using ustctl API */ sock = connect_app(pid); @@ -307,7 +322,7 @@ static int ust_create_trace(pid_t pid) goto error; } - ret = ustctl_create_trace(sock, "auto"); + ret = ustctl_create_trace(sock, trace->name); if (ret < 0) { ret = LTTCOMM_CREATE_FAIL; goto error; @@ -316,6 +331,7 @@ static int ust_create_trace(pid_t pid) /* Check if current session is valid */ if (current_session) { cds_list_add(&trace->list, ¤t_session->ust_traces); + current_session->ust_trace_count++; } error: @@ -427,6 +443,8 @@ static int process_client_msg(int sock, struct lttcomm_session_msg *lsm) char *send_buf = NULL; struct lttcomm_lttng_msg llm; + DBG("Processing client message"); + /* Copy common data to identify the response * on the lttng client side. */ @@ -485,6 +503,25 @@ static int process_client_msg(int sock, struct lttcomm_session_msg *lsm) /* No auxiliary data so only send the llm struct. */ goto end; } + case LTTNG_LIST_TRACES: + { + unsigned int trace_count = get_trace_count_per_session(current_session); + + if (trace_count == 0) { + ret = LTTCOMM_NO_TRACE; + goto end; + } + + buf_size = setup_data_buffer(&send_buf, + sizeof(struct lttng_trace) * trace_count, &llm); + if (buf_size < 0) { + ret = LTTCOMM_FATAL; + goto end; + } + + get_traces_per_session(current_session, (struct lttng_trace *)(send_buf + header_size)); + break; + } case UST_CREATE_TRACE: { ret = ust_create_trace(lsm->pid); @@ -771,6 +808,8 @@ static int set_socket_perms(void) perror("chown"); } + DBG("Sockets permissions set"); + end: return ret; } @@ -810,6 +849,8 @@ static int set_signal_handler(void) return ret; } + DBG("Signal handler set for SIGTERM, SIGPIPE and SIGINT"); + return ret; } @@ -822,9 +863,14 @@ static void sighandler(int sig) { switch (sig) { case SIGPIPE: + DBG("SIGPIPE catched"); return; case SIGINT: + DBG("SIGINT catched"); + cleanup(); + break; case SIGTERM: + DBG("SIGTERM catched"); cleanup(); break; default: @@ -841,6 +887,8 @@ static void sighandler(int sig) */ static void cleanup() { + DBG("Cleaning up"); + /* */ MSG("\n%c[%d;%dm*** assert failed *** ==> %c[%dm", 27,1,31,27,0); MSG("%c[%d;%dmMatthew, BEET driven development works!%c[%dm",27,1,33,27,0);