X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=ltt-event-header.c;h=dc8bb9974aa5206365366659685773d5efeff11d;hb=b95190a774269f37d3f48352d093cfd0b16242c4;hp=4f049d31e5e841356391de7994f80d967b864fcd;hpb=1c8284ebdbd119314b8f01e442e64cf5fd4b9fe6;p=lttng-modules.git diff --git a/ltt-event-header.c b/ltt-event-header.c index 4f049d31..dc8bb997 100644 --- a/ltt-event-header.c +++ b/ltt-event-header.c @@ -12,19 +12,16 @@ */ #include - #include "ltt-tracer.h" -#include "ltt-relay.h" -size_t ltt_write_event_header_slow(struct ltt_chanbuf_alloc *bufa, - struct ltt_chan_alloc *chana, - long buf_offset, u16 eID, u32 event_size, - u64 tsc, unsigned int rflags) +void ltt_write_event_header_slow(const struct lib_ring_buffer_config *config, + struct lib_ring_buffer_ctx *ctx, + u16 eID, u32 event_size) { - struct ltt_event_header header; + struct event_header header; u16 small_size; - switch (rflags) { + switch (ctx->rflags) { case LTT_RFLAG_ID_SIZE_TSC: header.id_time = 29 << LTT_TSC_BITS; break; @@ -39,54 +36,31 @@ size_t ltt_write_event_header_slow(struct ltt_chanbuf_alloc *bufa, header.id_time = 0; } - header.id_time |= (u32)tsc & LTT_TSC_MASK; - ltt_relay_write(bufa, chana, buf_offset, &header, sizeof(header)); - buf_offset += sizeof(header); + header.id_time |= (u32)ctx->tsc & LTT_TSC_MASK; + lib_ring_buffer_write(config, ctx, &header, sizeof(header)); - switch (rflags) { + switch (ctx->rflags) { case LTT_RFLAG_ID_SIZE_TSC: small_size = (u16)min_t(u32, event_size, LTT_MAX_SMALL_SIZE); - ltt_relay_write(bufa, chana, buf_offset, - &eID, sizeof(u16)); - buf_offset += sizeof(u16); - ltt_relay_write(bufa, chana, buf_offset, - &small_size, sizeof(u16)); - buf_offset += sizeof(u16); - if (small_size == LTT_MAX_SMALL_SIZE) { - ltt_relay_write(bufa, chana, buf_offset, - &event_size, sizeof(u32)); - buf_offset += sizeof(u32); - } - buf_offset += ltt_align(buf_offset, sizeof(u64)); - ltt_relay_write(bufa, chana, buf_offset, - &tsc, sizeof(u64)); - buf_offset += sizeof(u64); + lib_ring_buffer_write(config, ctx, &eID, sizeof(u16)); + lib_ring_buffer_write(config, ctx, &small_size, sizeof(u16)); + if (small_size == LTT_MAX_SMALL_SIZE) + lib_ring_buffer_write(config, ctx, &event_size, + sizeof(u32)); + lib_ring_buffer_align_ctx(ctx, sizeof(u64)); + lib_ring_buffer_write(config, ctx, &ctx->tsc, sizeof(u64)); break; case LTT_RFLAG_ID_SIZE: small_size = (u16)min_t(u32, event_size, LTT_MAX_SMALL_SIZE); - ltt_relay_write(bufa, chana, buf_offset, - &eID, sizeof(u16)); - buf_offset += sizeof(u16); - ltt_relay_write(bufa, chana, buf_offset, - &small_size, sizeof(u16)); - buf_offset += sizeof(u16); - if (small_size == LTT_MAX_SMALL_SIZE) { - ltt_relay_write(bufa, chana, buf_offset, - &event_size, sizeof(u32)); - buf_offset += sizeof(u32); - } + lib_ring_buffer_write(config, ctx, &eID, sizeof(u16)); + lib_ring_buffer_write(config, ctx, &small_size, sizeof(u16)); + if (small_size == LTT_MAX_SMALL_SIZE) + lib_ring_buffer_write(config, ctx, &event_size, + sizeof(u32)); break; case LTT_RFLAG_ID: - ltt_relay_write(bufa, chana, buf_offset, - &eID, sizeof(u16)); - buf_offset += sizeof(u16); + lib_ring_buffer_write(config, ctx, &eID, sizeof(u16)); break; } - - return buf_offset; } EXPORT_SYMBOL_GPL(ltt_write_event_header_slow); - -MODULE_LICENSE("GPL and additional rights"); -MODULE_AUTHOR("Mathieu Desnoyers"); -MODULE_DESCRIPTION("Linux Trace Toolkit Next Generation Event Header");