X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=libust%2Ftracectl.c;h=2f9215e65b29adc0df6095ce72c206425304c559;hb=6a843332a8ac7d1125e0961f148cc494e0397923;hp=7a5cf9562282ce7fe90cc3d5e4c405d3bf44b8c6;hpb=f51d84eac11907346fa02e33da358aad171ac80a;p=ust.git diff --git a/libust/tracectl.c b/libust/tracectl.c index 7a5cf95..2f9215e 100644 --- a/libust/tracectl.c +++ b/libust/tracectl.c @@ -15,6 +15,11 @@ * 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 #include @@ -49,6 +54,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 +1121,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 +1209,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 +1292,6 @@ static void __attribute__((constructor)) init() inform_consumer_daemon(trace_name); } - return; /* should decrementally destroy stuff if error */