X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=lttng-ring-buffer-client.h;h=63f2b4ca7befa82da0b2fdaf265f1d8f127abe11;hb=aa5d4c0dc4ba7a1f48a8a5e7e19888addc4548f0;hp=4fffab981affbd2064bc2724bb03eabe67f0acc5;hpb=5594698f9c8ad13e0964c67946d1867df7757dae;p=lttng-modules.git diff --git a/lttng-ring-buffer-client.h b/lttng-ring-buffer-client.h index 4fffab98..63f2b4ca 100644 --- a/lttng-ring-buffer-client.h +++ b/lttng-ring-buffer-client.h @@ -22,12 +22,12 @@ #include #include -#include "lib/bitfield.h" -#include "wrapper/vmalloc.h" /* for wrapper_vmalloc_sync_all() */ -#include "wrapper/trace-clock.h" -#include "lttng-events.h" -#include "lttng-tracer.h" -#include "wrapper/ringbuffer/frontend_types.h" +#include +#include /* for wrapper_vmalloc_sync_all() */ +#include +#include +#include +#include #define LTTNG_COMPACT_EVENT_BITS 5 #define LTTNG_COMPACT_TSC_BITS 27 @@ -124,13 +124,14 @@ void ctx_record(struct lib_ring_buffer_ctx *bufctx, * contains. */ static __inline__ -unsigned char record_header_size(const struct lib_ring_buffer_config *config, +size_t record_header_size(const struct lib_ring_buffer_config *config, struct channel *chan, size_t offset, size_t *pre_header_padding, struct lib_ring_buffer_ctx *ctx) { struct lttng_channel *lttng_chan = channel_get_private(chan); - struct lttng_event *event = ctx->priv; + struct lttng_probe_ctx *lttng_probe_ctx = ctx->priv; + struct lttng_event *event = lttng_probe_ctx->event; size_t orig_offset = offset; size_t padding; @@ -169,14 +170,14 @@ unsigned char record_header_size(const struct lib_ring_buffer_config *config, padding = 0; WARN_ON_ONCE(1); } - offset += ctx_get_size(offset, event->ctx); offset += ctx_get_size(offset, lttng_chan->ctx); + offset += ctx_get_size(offset, event->ctx); *pre_header_padding = padding; return offset - orig_offset; } -#include "wrapper/ringbuffer/api.h" +#include static void lttng_write_event_header_slow(const struct lib_ring_buffer_config *config, @@ -198,7 +199,8 @@ void lttng_write_event_header(const struct lib_ring_buffer_config *config, uint32_t event_id) { struct lttng_channel *lttng_chan = channel_get_private(ctx->chan); - struct lttng_event *event = ctx->priv; + struct lttng_probe_ctx *lttng_probe_ctx = ctx->priv; + struct lttng_event *event = lttng_probe_ctx->event; if (unlikely(ctx->rflags)) goto slow_path; @@ -249,7 +251,8 @@ void lttng_write_event_header_slow(const struct lib_ring_buffer_config *config, uint32_t event_id) { struct lttng_channel *lttng_chan = channel_get_private(ctx->chan); - struct lttng_event *event = ctx->priv; + struct lttng_probe_ctx *lttng_probe_ctx = ctx->priv; + struct lttng_event *event = lttng_probe_ctx->event; switch (lttng_chan->header_type) { case 1: /* compact */ @@ -603,7 +606,7 @@ int lttng_event_reserve(struct lib_ring_buffer_ctx *ctx, int ret, cpu; cpu = lib_ring_buffer_get_cpu(&client_config); - if (cpu < 0) + if (unlikely(cpu < 0)) return -EPERM; ctx->cpu = cpu; @@ -621,8 +624,10 @@ int lttng_event_reserve(struct lib_ring_buffer_ctx *ctx, } ret = lib_ring_buffer_reserve(&client_config, ctx); - if (ret) + if (unlikely(ret)) goto put; + lib_ring_buffer_backend_get_pages(&client_config, ctx, + &ctx->backend_pages); lttng_write_event_header(&client_config, ctx, event_id); return 0; put: