X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=lttng-events.c;h=a66e6711fc03bc0ec2a20732dc33e956451177c9;hb=489de24bfb835022b64c2e71d717eaf333ab3633;hp=f2a9a8a58498f1f1a833e8ec1b97e76093391982;hpb=64af2437213d40fdb1f386ffcad2c83ed5c11185;p=lttng-modules.git diff --git a/lttng-events.c b/lttng-events.c index f2a9a8a5..a66e6711 100644 --- a/lttng-events.c +++ b/lttng-events.c @@ -213,6 +213,16 @@ void lttng_session_destroy(struct lttng_session *session) kfree(session); } +int lttng_session_statedump(struct lttng_session *session) +{ + int ret; + + mutex_lock(&sessions_mutex); + ret = lttng_statedump_start(session); + mutex_unlock(&sessions_mutex); + return ret; +} + int lttng_session_enable(struct lttng_session *session) { int ret = 0; @@ -244,8 +254,10 @@ int lttng_session_enable(struct lttng_session *session) lttng_session_sync_enablers(session); /* Clear each stream's quiescent state. */ - list_for_each_entry(chan, &session->chan, list) - lib_ring_buffer_clear_quiescent_channel(chan->chan); + list_for_each_entry(chan, &session->chan, list) { + if (chan->channel_type != METADATA_CHANNEL) + lib_ring_buffer_clear_quiescent_channel(chan->chan); + } ACCESS_ONCE(session->active) = 1; ACCESS_ONCE(session->been_active) = 1; @@ -279,8 +291,10 @@ int lttng_session_disable(struct lttng_session *session) lttng_session_sync_enablers(session); /* Set each stream's quiescent state. */ - list_for_each_entry(chan, &session->chan, list) - lib_ring_buffer_set_quiescent_channel(chan->chan); + list_for_each_entry(chan, &session->chan, list) { + if (chan->channel_type != METADATA_CHANNEL) + lib_ring_buffer_set_quiescent_channel(chan->chan); + } end: mutex_unlock(&sessions_mutex); return ret; @@ -1895,7 +1909,7 @@ int _lttng_enum_statedump(struct lttng_session *session, if (ret) goto end; ret = lttng_metadata_printf(session, - "enum : integer { size = %u; align = %u; signed = %u; encoding = %s; base = %u; } {\n", + "enum : integer { size = %u; align = %u; signed = %u; encoding = %s; base = %u;%s } {\n", container_type->size, container_type->alignment, container_type->signedness, @@ -1904,7 +1918,13 @@ int _lttng_enum_statedump(struct lttng_session *session, : (container_type->encoding == lttng_encode_UTF8) ? "UTF8" : "ASCII", - container_type->base); + container_type->base, +#if __BYTE_ORDER == __BIG_ENDIAN + container_type->reverse_byte_order ? " byte_order = le;" : "" +#else + container_type->reverse_byte_order ? " byte_order = be;" : "" +#endif + ); if (ret) goto end; /* Dump all entries */ @@ -1941,33 +1961,46 @@ int _lttng_enum_statedump(struct lttng_session *session, if (ret) goto end; } - ret = lttng_metadata_printf(session, - "\" = "); - if (ret) - goto end; - if (entry->start.signedness) - ret = lttng_metadata_printf(session, - "%lld", (long long) entry->start.value); - else - ret = lttng_metadata_printf(session, - "%llu", entry->start.value); + ret = lttng_metadata_printf(session, "\""); if (ret) goto end; - if (entry->start.signedness == entry->end.signedness && - entry->start.value == entry->end.value) { - ret = lttng_metadata_printf(session, - ",\n"); + + if (entry->options.is_auto) { + ret = lttng_metadata_printf(session, ",\n"); + if (ret) + goto end; } else { - if (entry->end.signedness) { + ret = lttng_metadata_printf(session, + " = "); + if (ret) + goto end; + if (entry->start.signedness) ret = lttng_metadata_printf(session, - " ... %lld,\n", (long long) entry->end.value); - } else { + "%lld", (long long) entry->start.value); + else ret = lttng_metadata_printf(session, - " ... %llu,\n", entry->end.value); + "%llu", entry->start.value); + if (ret) + goto end; + if (entry->start.signedness == entry->end.signedness && + entry->start.value + == entry->end.value) { + ret = lttng_metadata_printf(session, + ",\n"); + } else { + if (entry->end.signedness) { + ret = lttng_metadata_printf(session, + " ... %lld,\n", + (long long) entry->end.value); + } else { + ret = lttng_metadata_printf(session, + " ... %llu,\n", + entry->end.value); + } } + if (ret) + goto end; } - if (ret) - goto end; } ret = print_tabs(session, nesting); if (ret) @@ -2388,7 +2421,7 @@ int64_t measure_clock_offset(void) /* Disable interrupts to increase correlation precision. */ local_irq_save(flags); monotonic[0] = trace_clock_read64(); - getnstimeofday(&rts); + getnstimeofday(&rts); monotonic[1] = trace_clock_read64(); local_irq_restore(flags); @@ -2644,6 +2677,12 @@ static int __init lttng_events_init(void) ret = lttng_logger_init(); if (ret) goto error_logger; + printk(KERN_NOTICE "LTTng: Loaded modules v%s.%s.%s%s (%s)\n", + __stringify(LTTNG_MODULES_MAJOR_VERSION), + __stringify(LTTNG_MODULES_MINOR_VERSION), + __stringify(LTTNG_MODULES_PATCHLEVEL_VERSION), + LTTNG_MODULES_EXTRAVERSION, + LTTNG_VERSION_NAME); return 0; error_logger: @@ -2654,6 +2693,12 @@ error_kmem: lttng_tracepoint_exit(); error_tp: lttng_context_exit(); + printk(KERN_NOTICE "LTTng: Failed to load modules v%s.%s.%s%s (%s)\n", + __stringify(LTTNG_MODULES_MAJOR_VERSION), + __stringify(LTTNG_MODULES_MINOR_VERSION), + __stringify(LTTNG_MODULES_PATCHLEVEL_VERSION), + LTTNG_MODULES_EXTRAVERSION, + LTTNG_VERSION_NAME); return ret; } @@ -2670,6 +2715,12 @@ static void __exit lttng_events_exit(void) kmem_cache_destroy(event_cache); lttng_tracepoint_exit(); lttng_context_exit(); + printk(KERN_NOTICE "LTTng: Unloaded modules v%s.%s.%s%s (%s)\n", + __stringify(LTTNG_MODULES_MAJOR_VERSION), + __stringify(LTTNG_MODULES_MINOR_VERSION), + __stringify(LTTNG_MODULES_PATCHLEVEL_VERSION), + LTTNG_MODULES_EXTRAVERSION, + LTTNG_VERSION_NAME); } module_exit(lttng_events_exit);