Tracepoints and markers: cleanup init, add missing mutex lock/unlock
[ust.git] / libust / tracectl.c
index bc0a07c046d26333f36ef1b19145f79c8ba53fa8..ef7184fe7787696764088a82e56e0adf28661d90 100644 (file)
@@ -39,6 +39,7 @@
 
 #include <ust/marker.h>
 #include <ust/tracepoint.h>
+#include <ust/tracepoint-internal.h>
 #include <ust/tracectl.h>
 #include <ust/clock.h>
 #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);
 
@@ -119,7 +119,7 @@ static void print_ust_marker(FILE *fp)
                                 */
                ust_marker_iter_next(&iter);
        }
-       unlock_ust_marker();
+       ust_marker_iter_stop(&iter);
 }
 
 static void print_trace_events(FILE *fp)
@@ -1228,12 +1228,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");
@@ -1307,18 +1314,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
                 */
@@ -1350,6 +1356,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")) {
@@ -1393,12 +1400,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.
                 */
This page took 0.024098 seconds and 4 git commands to generate.