remove unused variables
[ust.git] / libust / tracectl.c
index ef0155db3388441d83fe3afe813f66b5e78d64e3..ac551d50e802afec1bcd3a1abdcba6cddbf1c326 100644 (file)
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
  */
 
+/* This file contains the implementation of the UST listener thread, which
+ * receives trace control commands. It also coordinates the initialization of
+ * libust.
+ */
+
 #define _GNU_SOURCE
 #include <stdio.h>
 #include <stdlib.h>
@@ -464,7 +469,6 @@ static int do_cmd_get_subbuf_size(const char *recvbuf, struct ustcomm_source *sr
 static unsigned int pow2_higher_or_eq(unsigned int v)
 {
        int hb = fls(v);
-       int hbm1 = hb-1;
        int retval = 1<<(hb-1);
 
        if(v-retval == 0)
@@ -783,6 +787,15 @@ static void listener_cleanup(void *ptr)
        ustcomm_fini_app(&ustcomm_app, 0);
 }
 
+static void do_cmd_force_switch()
+{
+       struct blocked_consumer *bc;
+
+       list_for_each_entry(bc, &blocked_consumers, list) {
+               ltt_force_switch(bc->buf, FORCE_FLUSH);
+       }
+}
+
 int process_client_cmd(char *recvbuf, struct ustcomm_source *src)
 {
        int result;
@@ -989,6 +1002,28 @@ int process_client_cmd(char *recvbuf, struct ustcomm_source *src)
 
                free(reply);
        }
+       else if(nth_token_is(recvbuf, "get_sock_path", 0) == 1) {
+               char *reply = getenv("UST_DAEMON_SOCKET");
+               if(!reply) {
+                       asprintf(&reply, "%s/%s", SOCK_DIR, "ustd");
+                       result = ustcomm_send_reply(&ustcomm_app.server, reply, src);
+                       free(reply);
+               }
+               else {
+                       result = ustcomm_send_reply(&ustcomm_app.server, reply, src);
+               }
+               if(result)
+                       ERR("ustcomm_send_reply failed");
+       }
+       else if(nth_token_is(recvbuf, "set_sock_path", 0) == 1) {
+               char *sock_path = nth_token(recvbuf, 1);
+               result = setenv("UST_DAEMON_SOCKET", sock_path, 1);
+               if(result)
+                       ERR("cannot set UST_DAEMON_SOCKET environment variable");
+       }
+       else if(nth_token_is(recvbuf, "force_switch", 0) == 1) {
+               do_cmd_force_switch();
+       }
        else {
                ERR("unable to parse message: %s", recvbuf);
        }
@@ -1065,8 +1100,9 @@ void create_listener(void)
        if(result) {
                PERROR("pthread_sigmask: %s", strerror(result));
        }
-
-       have_listener = 1;
+       else {
+               have_listener = 1;
+       }
 }
 
 static int init_socket(void)
@@ -1364,10 +1400,13 @@ int restarting_usleep(useconds_t usecs)
        return result;
 }
 
-static void stop_listener()
+static void stop_listener(void)
 {
        int result;
 
+       if(!have_listener)
+               return;
+
        result = pthread_cancel(listener_thread);
        if(result != 0) {
                ERR("pthread_cancel: %s", strerror(result));
This page took 0.023384 seconds and 4 git commands to generate.