X-Git-Url: https://git.liburcu.org/?a=blobdiff_plain;f=ltt-events.c;h=ffcc61ec65d5657fb03a0e0ca7958cb1df43f60f;hb=17baffe29814f2508556e498ab8c41a192e76b67;hp=6171c1c5791dbdaca021f344a1fa5a7472672067;hpb=8070f5c01e8e64ce52912dd4f27021c5d9e3dce2;p=lttng-modules.git diff --git a/ltt-events.c b/ltt-events.c index 6171c1c5..ffcc61ec 100644 --- a/ltt-events.c +++ b/ltt-events.c @@ -4,6 +4,8 @@ * Copyright 2010 (c) - Mathieu Desnoyers * * Holds LTTng per-session event registry. + * + * Dual LGPL v2.1/GPL v2 license. */ #include @@ -470,31 +472,34 @@ int _ltt_field_statedump(struct ltt_session *session, length_type = &field->type.u.sequence.length_type; ret = lttng_metadata_printf(session, " integer { size = %u; align = %u; signed = %u; encoding = %s; base = %u;%s } __%s_length;\n", - " integer { size = %u; align = %u; signed = %u; encoding = %s; base = %u;%s } %s[ __%s_length ];\n", length_type->u.basic.integer.size, - length_type->u.basic.integer.alignment, + (unsigned int) length_type->u.basic.integer.alignment, length_type->u.basic.integer.signedness, (length_type->u.basic.integer.encoding == lttng_encode_none) ? "none" - : (length_type->u.basic.integer.encoding == lttng_encode_UTF8) + : ((length_type->u.basic.integer.encoding == lttng_encode_UTF8) ? "UTF8" - : "ASCII", + : "ASCII"), length_type->u.basic.integer.base, #ifdef __BIG_ENDIAN length_type->u.basic.integer.reverse_byte_order ? " byte_order = le;" : "", #else - length_type->u.basic.integer.reverse_byte_order -? " byte_order = be;" : "", + length_type->u.basic.integer.reverse_byte_order ? " byte_order = be;" : "", #endif - field->name, + field->name); + if (ret) + return ret; + + ret = lttng_metadata_printf(session, + " integer { size = %u; align = %u; signed = %u; encoding = %s; base = %u;%s } %s[ __%s_length ];\n", elem_type->u.basic.integer.size, - elem_type->u.basic.integer.alignment, + (unsigned int) elem_type->u.basic.integer.alignment, elem_type->u.basic.integer.signedness, (elem_type->u.basic.integer.encoding == lttng_encode_none) ? "none" - : (elem_type->u.basic.integer.encoding == lttng_encode_UTF8) + : ((elem_type->u.basic.integer.encoding == lttng_encode_UTF8) ? "UTF8" - : "ASCII", + : "ASCII"), elem_type->u.basic.integer.base, #ifdef __BIG_ENDIAN elem_type->u.basic.integer.reverse_byte_order ? " byte_order = le;" : "", @@ -502,8 +507,7 @@ int _ltt_field_statedump(struct ltt_session *session, elem_type->u.basic.integer.reverse_byte_order ? " byte_order = be;" : "", #endif field->name, - field->name - ); + field->name); break; } @@ -575,20 +579,30 @@ int _ltt_event_metadata_statedump(struct ltt_session *session, "event {\n" " name = %s;\n" " id = %u;\n" - " stream_id = %u;\n" - " context := struct {\n", + " stream_id = %u;\n", event->desc->name, event->id, event->chan->id); if (ret) goto end; + if (event->ctx) { + ret = lttng_metadata_printf(session, + " context := struct {\n"); + if (ret) + goto end; + } ret = _ltt_context_metadata_statedump(session, event->ctx); if (ret) goto end; + if (event->ctx) { + ret = lttng_metadata_printf(session, + " };\n"); + if (ret) + goto end; + } ret = lttng_metadata_printf(session, - " };\n" " fields := struct {\n" ); if (ret) @@ -630,22 +644,31 @@ int _ltt_channel_metadata_statedump(struct ltt_session *session, "stream {\n" " id = %u;\n" " event.header := %s;\n" - " packet.context := struct packet_context;\n" - " event.context := {\n", + " packet.context := struct packet_context;\n", chan->id, chan->header_type == 1 ? "struct event_header_compact" : "struct event_header_large"); if (ret) goto end; + if (chan->ctx) { + ret = lttng_metadata_printf(session, + " event.context := struct {\n"); + if (ret) + goto end; + } ret = _ltt_context_metadata_statedump(session, chan->ctx); if (ret) goto end; + if (chan->ctx) { + ret = lttng_metadata_printf(session, + " };\n"); + if (ret) + goto end; + } ret = lttng_metadata_printf(session, - " };\n" - "};\n\n" - ); + "};\n\n"); chan->metadata_dumped = 1; end: