Markers: remove channel name from trace_mark()
[ust.git] / libust / tracectl.c
index 463edb6b492897546a84cf3161c07c680a12eb10..e84a35aecf4e3f979d4cb85163b89e3204ccf45c 100644 (file)
@@ -41,7 +41,7 @@
 #include <ust/tracectl.h>
 #include <ust/clock.h>
 #include "tracer.h"
-#include "usterr.h"
+#include "usterr_signal_safe.h"
 #include "ustcomm.h"
 #include "buffers.h"
 #include "marker-control.h"
@@ -77,8 +77,6 @@ static struct ustcomm_sock *listen_sock;
 
 extern struct chan_info_struct chan_infos[];
 
-static struct cds_list_head open_buffers_list = CDS_LIST_HEAD_INIT(open_buffers_list);
-
 static struct cds_list_head ust_socks = CDS_LIST_HEAD_INIT(ust_socks);
 
 /* volatile because shared between the listener and the main thread */
@@ -489,11 +487,6 @@ static int notify_buffer_mapped(const char *trace_name,
                CMM_STORE_SHARED(buffers_to_export, CMM_LOAD_SHARED(buffers_to_export)-1);
        }
 
-       /* The buffer has been exported, ergo, we can add it to the
-        * list of open buffers
-        */
-       cds_list_add(&buf->open_buffers_list, &open_buffers_list);
-
 unlock_traces:
        ltt_unlock_traces();
 
@@ -584,31 +577,6 @@ unlock_traces:
        return retval;
 }
 
-/* Simple commands are those which need only respond with a return value. */
-static int process_simple_client_cmd(int command, char *recv_buf)
-{
-       int result;
-
-       switch(command) {
-       case SET_SOCK_PATH:
-       {
-               struct ustcomm_single_field *sock_msg;
-               sock_msg = (struct ustcomm_single_field *)recv_buf;
-               result = ustcomm_unpack_single_field(sock_msg);
-               if (result < 0) {
-                       return result;
-               }
-               return setenv("UST_DAEMON_SOCKET", sock_msg->field, 1);
-       }
-
-       default:
-               return -EINVAL;
-       }
-
-       return 0;
-}
-
-
 static int process_trace_cmd(int command, char *trace_name)
 {
        int result;
@@ -1060,6 +1028,21 @@ static void process_client_cmd(struct ustcomm_header *recv_header,
 
                goto send_response;
        }
+       case SET_SOCK_PATH:
+       {
+               struct ustcomm_single_field *sock_msg;
+               sock_msg = (struct ustcomm_single_field *)recv_buf;
+               result = ustcomm_unpack_single_field(sock_msg);
+               if (result < 0) {
+                       reply_header->result = -EINVAL;
+                       goto send_response;
+               }
+
+               reply_header->result = setenv("UST_DAEMON_SOCKET",
+                                             sock_msg->field, 1);
+
+               goto send_response;
+       }
        case START:
        case SETUP_TRACE:
        case ALLOC_TRACE:
@@ -1086,11 +1069,9 @@ static void process_client_cmd(struct ustcomm_header *recv_header,
 
        }
        default:
-               reply_header->result =
-                       process_simple_client_cmd(recv_header->command,
-                                                 recv_buf);
-               goto send_response;
+               reply_header->result = -EINVAL;
 
+               goto send_response;
        }
 
        return;
@@ -1240,37 +1221,41 @@ static void auto_probe_connect(struct marker *m)
 
 static struct ustcomm_sock * init_app_socket(int epoll_fd)
 {
-       char *name;
+       char *dir_name, *sock_name;
        int result;
-       struct ustcomm_sock *sock;
+       struct ustcomm_sock *sock = NULL;
+
+       dir_name = ustcomm_user_sock_dir();
+       if (!dir_name)
+               return NULL;
 
-       result = asprintf(&name, "%s/%d", SOCK_DIR, (int)getpid());
+       result = asprintf(&sock_name, "%s/%d", dir_name, (int)getpid());
        if (result < 0) {
                ERR("string overflow allocating socket name, "
                    "UST thread bailing");
-               return NULL;
+               goto free_dir_name;
        }
 
-       result = ensure_dir_exists(SOCK_DIR);
+       result = ensure_dir_exists(dir_name, S_IRWXU);
        if (result == -1) {
                ERR("Unable to create socket directory %s, UST thread bailing",
-                   SOCK_DIR);
-               goto free_name;
+                   dir_name);
+               goto free_sock_name;
        }
 
-       sock = ustcomm_init_named_socket(name, epoll_fd);
+       sock = ustcomm_init_named_socket(sock_name, epoll_fd);
        if (!sock) {
                ERR("Error initializing named socket (%s). Check that directory"
-                   "exists and that it is writable. UST thread bailing", name);
-               goto free_name;
+                   "exists and that it is writable. UST thread bailing", sock_name);
+               goto free_sock_name;
        }
 
-       free(name);
-       return sock;
+free_sock_name:
+       free(sock_name);
+free_dir_name:
+       free(dir_name);
 
-free_name:
-       free(name);
-       return NULL;
+       return sock;
 }
 
 static void __attribute__((constructor)) init()
@@ -1591,7 +1576,7 @@ static void __attribute__((destructor)) keepalive()
 
 void ust_potential_exec(void)
 {
-       trace_mark(ust, potential_exec, MARK_NOARGS);
+       trace_mark(potential_exec, MARK_NOARGS);
 
        DBG("test");
 
@@ -1610,7 +1595,6 @@ void ust_potential_exec(void)
 
 static void ust_fork(void)
 {
-       struct ust_buffer *buf, *buf_tmp;
        struct ustcomm_sock *sock, *sock_tmp;
        struct ust_trace *trace, *trace_tmp;
        int result;
@@ -1634,12 +1618,6 @@ static void ust_fork(void)
                ustcomm_del_sock(sock, 1);
        }
 
-       /* Delete all blocked consumers */
-       cds_list_for_each_entry_safe(buf, buf_tmp, &open_buffers_list,
-                                open_buffers_list) {
-               cds_list_del(&buf->open_buffers_list);
-       }
-
        /*
         * FIXME: This could be prettier, we loop over the list twice and
         * following good locking practice should lock around the loop
This page took 0.026184 seconds and 4 git commands to generate.