X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=lttng-events.c;h=2fedbea59202df8da309a6b24fb348b37db1092c;hb=57be518d19d7c433f79c57cd7815160110ac19c2;hp=c25d4449ebec3e72985dee8ce246caed33655c08;hpb=a82c63f10514ca43282498ea4fdee3908576528a;p=lttng-modules.git diff --git a/lttng-events.c b/lttng-events.c index c25d4449..2fedbea5 100644 --- a/lttng-events.c +++ b/lttng-events.c @@ -1,11 +1,23 @@ /* * lttng-events.c * - * Copyright 2010-2011 (c) - Mathieu Desnoyers - * * Holds LTTng per-session event registry. * - * Dual LGPL v2.1/GPL v2 license. + * Copyright (C) 2010-2012 Mathieu Desnoyers + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; only + * version 2.1 of the License. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #include @@ -14,6 +26,7 @@ #include #include #include +#include #include "wrapper/uuid.h" #include "wrapper/vmalloc.h" /* for wrapper_vmalloc_sync_all() */ #include "wrapper/random.h" @@ -112,6 +125,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: @@ -226,9 +244,9 @@ struct lttng_channel *lttng_channel_create(struct lttng_session *session, * headers. Therefore the "chan" information used as input * should be already accessible. */ - chan->chan = transport->ops.channel_create("[lttng]", chan, buf_addr, - subbuf_size, num_subbuf, switch_timer_interval, - read_timer_interval); + chan->chan = transport->ops.channel_create(transport_name, + chan, buf_addr, subbuf_size, num_subbuf, + switch_timer_interval, read_timer_interval); if (!chan->chan) goto create_error; chan->enabled = 1; @@ -869,7 +887,7 @@ uint64_t measure_clock_offset(void) local_irq_restore(flags); offset = (monotonic[0] + monotonic[1]) >> 1; - realtime = rts.tv_sec * NSEC_PER_SEC; + realtime = (uint64_t) rts.tv_sec * NSEC_PER_SEC; realtime += rts.tv_nsec; offset = realtime - offset; return offset; @@ -926,8 +944,8 @@ int _lttng_session_metadata_statedump(struct lttng_session *session) lttng_alignof(uint16_t) * CHAR_BIT, lttng_alignof(uint32_t) * CHAR_BIT, lttng_alignof(uint64_t) * CHAR_BIT, - CTF_VERSION_MAJOR, - CTF_VERSION_MINOR, + CTF_SPEC_MAJOR, + CTF_SPEC_MINOR, uuid_s, #ifdef __BIG_ENDIAN "be" @@ -938,6 +956,27 @@ int _lttng_session_metadata_statedump(struct lttng_session *session) if (ret) goto end; + ret = lttng_metadata_printf(session, + "env {\n" + " domain = \"kernel\";\n" + " sysname = \"%s\";\n" + " kernel_release = \"%s\";\n" + " kernel_version = \"%s\";\n" + " tracer_name = \"lttng-modules\";\n" + " tracer_major = %d;\n" + " tracer_minor = %d;\n" + " tracer_patchlevel = %d;\n" + "};\n\n", + utsname()->sysname, + utsname()->release, + utsname()->version, + LTTNG_MODULES_MAJOR_VERSION, + LTTNG_MODULES_MINOR_VERSION, + LTTNG_MODULES_PATCHLEVEL_VERSION + ); + if (ret) + goto end; + ret = lttng_metadata_printf(session, "clock {\n" " name = %s;\n", @@ -948,7 +987,7 @@ int _lttng_session_metadata_statedump(struct lttng_session *session) if (!trace_clock_uuid(clock_uuid_s)) { ret = lttng_metadata_printf(session, - " uuid = %s;\n", + " uuid = \"%s\";\n", clock_uuid_s ); if (ret)