-#ifndef _LINUX_RING_BUFFER_CONFIG_H
-#define _LINUX_RING_BUFFER_CONFIG_H
-
-/*
- * linux/ringbuffer/config.h
+/* SPDX-License-Identifier: (GPL-2.0 OR LGPL-2.1)
*
- * Copyright (C) 2010 - Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
+ * lib/ringbuffer/config.h
*
* Ring buffer configuration header. Note: after declaring the standard inline
* functions, clients should also include linux/ringbuffer/api.h.
*
- * Dual LGPL v2.1/GPL v2 license.
+ * Copyright (C) 2010-2012 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
*/
+#ifndef _LIB_RING_BUFFER_CONFIG_H
+#define _LIB_RING_BUFFER_CONFIG_H
+
#include <linux/types.h>
#include <linux/percpu.h>
+#include <lib/align.h>
+#include <lttng-tracer-core.h>
struct lib_ring_buffer;
struct channel;
u64 (*ring_buffer_clock_read) (struct channel *chan);
size_t (*record_header_size) (const struct lib_ring_buffer_config *config,
struct channel *chan, size_t offset,
- size_t data_size,
size_t *pre_header_padding,
- unsigned int rflags,
- struct lib_ring_buffer_ctx *ctx);
+ struct lib_ring_buffer_ctx *ctx,
+ void *client_ctx);
/* Slow path only, at subbuffer switch */
size_t (*subbuffer_header_size) (void);
*
* wakeup:
*
- * RING_BUFFER_WAKEUP_BY_TIMER uses per-cpu deferrable timers to poll the
+ * RING_BUFFER_WAKEUP_BY_TIMER uses per-cpu timers to poll the
* buffers and wake up readers if data is ready. Mainly useful for tracers which
* don't want to call into the wakeup code on the tracing path. Use in
* combination with "read_timer_interval" channel_create() argument.
*/
u64 tsc; /* time-stamp counter value */
unsigned int rflags; /* reservation flags */
+ /* Cache backend pages pointer chasing. */
+ struct lib_ring_buffer_backend_pages *backend_pages;
};
/**
* @ctx: ring buffer context to initialize
* @chan: channel
* @priv: client private data
- * @data_size: size of record data payload
+ * @data_size: size of record data payload. It must be greater than 0.
* @largest_align: largest alignment within data payload types
* @cpu: processor id
*/
ctx->data_size = data_size;
ctx->largest_align = largest_align;
ctx->cpu = cpu;
+ ctx->rflags = 0;
+ ctx->backend_pages = NULL;
}
/*
#define RING_BUFFER_RFLAG_FULL_TSC (1U << 0)
#define RING_BUFFER_RFLAG_END (1U << 1)
+#ifndef LTTNG_TRACER_CORE_H
+#error "lttng-tracer-core.h is needed for RING_BUFFER_ALIGN define"
+#endif
+
/*
* We need to define RING_BUFFER_ALIGN_ATTR so it is known early at
* compile-time. We have to duplicate the "config->align" information and the
return 0;
}
-#include "../../wrapper/ringbuffer/vatomic.h"
+#include <wrapper/ringbuffer/vatomic.h>
-#endif /* _LINUX_RING_BUFFER_CONFIG_H */
+#endif /* _LIB_RING_BUFFER_CONFIG_H */