X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=libust%2Ftracectl.c;h=1bd722949aaca5c4335f53b16b270d30e68f238d;hb=3659d94c0cfe5f112b4e60cf5f1e1432097faf4d;hp=b783c76e2ba8c87f0aa7280408c7c60236c885fe;hpb=9dc7b7ff797a5cbb1e9ffd59e053a04562f306c4;p=lttng-ust.git diff --git a/libust/tracectl.c b/libust/tracectl.c index b783c76e..1bd72294 100644 --- a/libust/tracectl.c +++ b/libust/tracectl.c @@ -39,6 +39,7 @@ #include #include #include +#include #include "tracer.h" #include "usterr.h" #include "ustcomm.h" @@ -73,6 +74,8 @@ static struct cds_list_head ust_socks = CDS_LIST_HEAD_INIT(ust_socks); /* volatile because shared between the listener and the main thread */ int buffers_to_export = 0; +int ust_clock_source; + static long long make_pidunique(void) { s64 retval; @@ -97,11 +100,11 @@ static void print_markers(FILE *fp) while (iter.marker) { fprintf(fp, "marker: %s/%s %d \"%s\" %p\n", - iter.marker->channel, - iter.marker->name, - (int)imv_read(iter.marker->state), - iter.marker->format, - iter.marker->location); + (*iter.marker)->channel, + (*iter.marker)->name, + (int)imv_read((*iter.marker)->state), + (*iter.marker)->format, + (*iter.marker)->location); marker_iter_next(&iter); } unlock_markers(); @@ -116,7 +119,7 @@ static void print_trace_events(FILE *fp) trace_event_iter_start(&iter); while (iter.trace_event) { - fprintf(fp, "trace_event: %s\n", iter.trace_event->name); + fprintf(fp, "trace_event: %s\n", (*iter.trace_event)->name); trace_event_iter_next(&iter); } unlock_trace_events(); @@ -352,7 +355,7 @@ static int set_subbuf_size(const char *trace_name, const char *ch_name, } channel->subbuf_size = power; - DBG("the set_subbuf_size for the requested channel is %u", channel->subbuf_size); + DBG("the set_subbuf_size for the requested channel is %zu", channel->subbuf_size); unlock_traces: ltt_unlock_traces(); @@ -390,7 +393,7 @@ static int set_subbuf_num(const char *trace_name, const char *ch_name, } channel->subbuf_cnt = num; - DBG("the set_subbuf_cnt for the requested channel is %zd", channel->subbuf_cnt); + DBG("the set_subbuf_cnt for the requested channel is %u", channel->subbuf_cnt); unlock_traces: ltt_unlock_traces(); @@ -825,7 +828,7 @@ static void process_marker_cmd(int sock, int command, { struct ustcomm_header _reply_header; struct ustcomm_header *reply_header = &_reply_header; - int result; + int result = 0; memset(reply_header, 0, sizeof(*reply_header)); @@ -1229,6 +1232,7 @@ free_name: static void __attribute__((constructor)) init() { + struct timespec ts; int result; char* autoprobe_val = NULL; char* subbuffer_size_val = NULL; @@ -1262,6 +1266,15 @@ static void __attribute__((constructor)) init() create_listener(); + /* Get clock the clock source type */ + + /* Default clock source */ + ust_clock_source = CLOCK_TRACE; + if (clock_gettime(ust_clock_source, &ts) != 0) { + ust_clock_source = CLOCK_MONOTONIC; + DBG("UST traces will not be synchronized with LTTng traces"); + } + autoprobe_val = getenv("UST_AUTOPROBE"); if (autoprobe_val) { struct marker_iter iter; @@ -1301,8 +1314,8 @@ static void __attribute__((constructor)) init() DBG("now iterating on markers already registered"); while (iter.marker) { - DBG("now iterating on marker %s", iter.marker->name); - auto_probe_connect(iter.marker); + DBG("now iterating on marker %s", (*iter.marker)->name); + auto_probe_connect(*iter.marker); marker_iter_next(&iter); } } @@ -1568,7 +1581,6 @@ static void ust_fork(void) ltt_unlock_traces(); ltt_trace_stop("auto"); - ltt_trace_destroy("auto", 1); /* Delete all active connections, but leave them in the epoll set */ cds_list_for_each_entry_safe(sock, sock_tmp, &ust_socks, list) { ustcomm_del_sock(sock, 1); @@ -1588,6 +1600,8 @@ static void ust_fork(void) cds_list_del(&buf->open_buffers_list); } + ltt_trace_destroy("auto", 1); + /* Clean up the listener socket and epoll, keeping the scoket file */ ustcomm_del_named_sock(listen_sock, 1); close(epoll_fd);