* RING_BUFFER_WAKEUP_NONE does not perform any wakeup whatsoever. The client
* has the responsibility to perform wakeups.
*/
-#define LTTNG_UST_RING_BUFFER_CONFIG_PADDING 32
+#define LTTNG_UST_RING_BUFFER_CONFIG_PADDING 20
enum lttng_ust_lib_ring_buffer_alloc_types {
RING_BUFFER_ALLOC_PER_CPU,
* callbacks and update the cb pointers.
*/
int client_type;
+ int _unused1;
+ const struct lttng_ust_lib_ring_buffer_client_cb *cb_ptr;
char padding[LTTNG_UST_RING_BUFFER_CONFIG_PADDING];
};
* UST. Fields need to be only added at the end, never reordered, never
* removed.
*/
-#define LTTNG_UST_RING_BUFFER_CTX_PADDING 24
+#define LTTNG_UST_RING_BUFFER_CTX_PADDING \
+ (24 - sizeof(int) - sizeof(void *))
struct lttng_ust_lib_ring_buffer_ctx {
/* input received by lib_ring_buffer_reserve(), saved here. */
struct channel *chan; /* channel */
*/
uint64_t tsc; /* time-stamp counter value */
unsigned int rflags; /* reservation flags */
- char padding[LTTNG_UST_RING_BUFFER_CTX_PADDING];
+ unsigned int padding1; /* padding to realign on pointer */
+ void *ip; /* caller ip address */
+ char padding2[LTTNG_UST_RING_BUFFER_CTX_PADDING];
};
/**
ctx->cpu = cpu;
ctx->rflags = 0;
ctx->handle = handle;
- memset(ctx->padding, 0, LTTNG_UST_RING_BUFFER_CTX_PADDING);
+ ctx->padding1 = 0;
+ ctx->ip = 0;
+ memset(ctx->padding2, 0, LTTNG_UST_RING_BUFFER_CTX_PADDING);
}
/*