add environment variables to set subbuffer options
[ust.git] / libust / tracectl.c
index 7a5cf9562282ce7fe90cc3d5e4c405d3bf44b8c6..ef0155db3388441d83fe3afe813f66b5e78d64e3 100644 (file)
@@ -49,6 +49,8 @@
  */
 s64 pidunique = -1LL;
 
+extern struct chan_info_struct chan_infos[];
+
 struct list_head blocked_consumers = LIST_HEAD_INIT(blocked_consumers);
 
 static struct ustcomm_app ustcomm_app;
@@ -1114,6 +1116,11 @@ static void __attribute__((constructor)) init()
 {
        int result;
        char* autoprobe_val = NULL;
+       char* subbuffer_size_val = NULL;
+       char* subbuffer_count_val = NULL;
+       unsigned int subbuffer_size;
+       unsigned int subbuffer_count;
+       unsigned int power;
 
        /* Assign the pidunique, to be able to differentiate the processes with same
         * pid, (before and after an exec).
@@ -1197,6 +1204,23 @@ static void __attribute__((constructor)) init()
                }
        }
 
+       subbuffer_size_val = getenv("UST_SUBBUF_SIZE");
+       if(subbuffer_size_val) {
+               sscanf(subbuffer_size_val, "%u", &subbuffer_size);
+               power = pow2_higher_or_eq(subbuffer_size);
+               if(power != subbuffer_size)
+                       WARN("using the next power of two for buffer size = %u\n", power);
+               chan_infos[LTT_CHANNEL_UST].def_subbufsize = power;
+       }
+
+       subbuffer_count_val = getenv("UST_SUBBUF_NUM");
+       if(subbuffer_count_val) {
+               sscanf(subbuffer_count_val, "%u", &subbuffer_count);
+               if(subbuffer_count < 2)
+                       subbuffer_count = 2;
+               chan_infos[LTT_CHANNEL_UST].def_subbufcount = subbuffer_count;
+       }
+
        if(getenv("UST_TRACE")) {
                char trace_name[] = "auto";
                char trace_type[] = "ustrelay";
@@ -1263,7 +1287,6 @@ static void __attribute__((constructor)) init()
                inform_consumer_daemon(trace_name);
        }
 
-
        return;
 
        /* should decrementally destroy stuff if error */
This page took 0.022987 seconds and 4 git commands to generate.