X-Git-Url: http://git.lttng.org/?p=ust.git;a=blobdiff_plain;f=libust%2Ftracectl.c;h=410b1c72e75cb52a2fd24a2898c590f31c011455;hp=1487ac73a3dd0b462798c3095fceed0f44d5a4a9;hb=HEAD;hpb=b0c4126fca44c9fdc9b350ce0e896ec2818fbb3e diff --git a/libust/tracectl.c b/libust/tracectl.c index 1487ac7..410b1c7 100644 --- a/libust/tracectl.c +++ b/libust/tracectl.c @@ -34,11 +34,12 @@ #include #include #include -#include +#include #include #include #include +#include #include #include #include "tracer.h" @@ -103,7 +104,6 @@ static void print_ust_marker(FILE *fp) { struct ust_marker_iter iter; - lock_ust_marker(); ust_marker_iter_reset(&iter); ust_marker_iter_start(&iter); @@ -113,17 +113,19 @@ static void print_ust_marker(FILE *fp) (*iter.ust_marker)->name, (int)(*iter.ust_marker)->state, (*iter.ust_marker)->format, - (*iter.ust_marker)->location); + NULL); /* + * location is null for now, will be added + * to a different table. + */ ust_marker_iter_next(&iter); } - unlock_ust_marker(); + ust_marker_iter_stop(&iter); } static void print_trace_events(FILE *fp) { struct trace_event_iter iter; - lock_trace_events(); trace_event_iter_reset(&iter); trace_event_iter_start(&iter); @@ -131,7 +133,7 @@ static void print_trace_events(FILE *fp) fprintf(fp, "trace_event: %s\n", (*iter.trace_event)->name); trace_event_iter_next(&iter); } - unlock_trace_events(); + trace_event_iter_stop(&iter); } static int connect_ustconsumer(void) @@ -1225,12 +1227,19 @@ static struct ustcomm_sock * init_app_socket(int epoll_fd) char *dir_name, *sock_name; int result; struct ustcomm_sock *sock = NULL; + time_t mtime; dir_name = ustcomm_user_sock_dir(); if (!dir_name) return NULL; - result = asprintf(&sock_name, "%s/%d", dir_name, (int)getpid()); + mtime = ustcomm_pid_st_mtime(getpid()); + if (!mtime) { + goto free_dir_name; + } + + result = asprintf(&sock_name, "%s/%d.%ld", dir_name, + (int) getpid(), (long) mtime); if (result < 0) { ERR("string overflow allocating socket name, " "UST thread bailing"); @@ -1304,18 +1313,17 @@ static void __attribute__((constructor)) init() DBG("UST traces will not be synchronized with LTTng traces"); } + if (getenv("UST_TRACE") || getenv("UST_AUTOPROBE")) { + /* Ensure ust_marker control is initialized */ + init_ust_marker_control(); + } + autoprobe_val = getenv("UST_AUTOPROBE"); if (autoprobe_val) { struct ust_marker_iter iter; DBG("Autoprobe enabled."); - /* Ensure ust_marker are initialized */ - //init_ust_marker(); - - /* Ensure ust_marker control is initialized, for the probe */ - init_ust_marker_control(); - /* first, set the callback that will connect the * probe on new ust_marker */ @@ -1347,6 +1355,7 @@ static void __attribute__((constructor)) init() auto_probe_connect(*iter.ust_marker); ust_marker_iter_next(&iter); } + ust_marker_iter_stop(&iter); } if (getenv("UST_OVERWRITE")) { @@ -1390,12 +1399,6 @@ static void __attribute__((constructor)) init() DBG("starting early tracing"); - /* Ensure ust_marker control is initialized */ - init_ust_marker_control(); - - /* Ensure ust_marker are initialized */ - init_ust_marker(); - /* Ensure buffers are initialized, for the transport to be available. * We are about to set a trace type and it will fail without this. */ @@ -1706,7 +1709,6 @@ static void ust_after_fork_common(ust_fork_info_t *fork_info) pthread_mutex_unlock(&listen_sock_mutex); pthread_mutex_unlock(&listener_thread_data_mutex); - /* Restore signals */ result = sigprocmask(SIG_SETMASK, &fork_info->orig_sigs, NULL); if (result == -1) { @@ -1730,7 +1732,7 @@ void ust_after_fork_child(ust_fork_info_t *fork_info) /* Sanitize the child */ ust_fork(); - /* Then release mutexes and reenable signals */ + /* Release mutexes and reenable signals */ ust_after_fork_common(fork_info); }