X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;ds=sidebyside;f=lttng-events.c;h=a3758229c745ef53fa0929d766fc95dce8d66bec;hb=3e8b3fb853ead73ecbebdd8cf80d3a69c89567b7;hp=6dd3ba4ed19ef1bfb77002c50c1ab90f3714375a;hpb=a3ccff4ffbfa87702cf3bc4693f86c2aaac27be2;p=lttng-modules.git diff --git a/lttng-events.c b/lttng-events.c index 6dd3ba4e..a3758229 100644 --- a/lttng-events.c +++ b/lttng-events.c @@ -14,8 +14,10 @@ #include #include #include +#include #include "wrapper/uuid.h" #include "wrapper/vmalloc.h" /* for wrapper_vmalloc_sync_all() */ +#include "wrapper/random.h" #include "lttng-events.h" #include "lttng-tracer.h" @@ -111,6 +113,11 @@ int lttng_session_enable(struct lttng_session *session) ACCESS_ONCE(session->active) = 1; ACCESS_ONCE(session->been_active) = 1; ret = _lttng_session_metadata_statedump(session); + if (ret) { + ACCESS_ONCE(session->active) = 0; + goto end; + } + ret = lttng_statedump_start(session); if (ret) ACCESS_ONCE(session->active) = 0; end: @@ -881,7 +888,7 @@ static int _lttng_session_metadata_statedump(struct lttng_session *session) { unsigned char *uuid_c = session->uuid.b; - unsigned char uuid_s[37]; + unsigned char uuid_s[37], clock_uuid_s[BOOT_ID_LEN]; struct lttng_channel *chan; struct lttng_event *event; int ret = 0; @@ -937,17 +944,44 @@ int _lttng_session_metadata_statedump(struct lttng_session *session) if (ret) goto end; + ret = lttng_metadata_printf(session, + "env {\n" + " domain = \"%s\";\n" + " sysname = \"%s\";\n" + " release = \"%s\";\n" + " version = \"%s\";\n" + "};\n\n", + "kernel", + utsname()->sysname, + utsname()->release, + utsname()->version + ); + if (ret) + goto end; + ret = lttng_metadata_printf(session, "clock {\n" - " name = %s;\n" - " uuid = %s;\n" + " name = %s;\n", + "monotonic" + ); + if (ret) + goto end; + + if (!trace_clock_uuid(clock_uuid_s)) { + ret = lttng_metadata_printf(session, + " uuid = \"%s\";\n", + clock_uuid_s + ); + if (ret) + goto end; + } + + ret = lttng_metadata_printf(session, " description = \"Monotonic Clock\";\n" " freq = %llu; /* Frequency, in Hz */\n" " /* clock value offset from Epoch is: offset * (1/freq) */\n" " offset = %llu;\n" "};\n\n", - "monotonic", - trace_clock_uuid(), (unsigned long long) trace_clock_freq(), (unsigned long long) measure_clock_offset() );