X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=include%2Fringbuffer%2Fconfig.h;h=43523de3055b55414a969d1ac30bee9610615e2c;hb=93e5bcec1d8d550a1983bbc013248dbd83573cc7;hp=4ce36d18c9fa4af35ec633208616239396cdb51d;hpb=8a57ec025ffbe56153748fd69b60118862707182;p=lttng-modules.git diff --git a/include/ringbuffer/config.h b/include/ringbuffer/config.h index 4ce36d18..43523de3 100644 --- a/include/ringbuffer/config.h +++ b/include/ringbuffer/config.h @@ -16,9 +16,9 @@ #include #include -struct lib_ring_buffer; -struct channel; -struct lib_ring_buffer_config; +struct lttng_kernel_ring_buffer; +struct lttng_kernel_ring_buffer_channel; +struct lttng_kernel_ring_buffer_config; struct lttng_kernel_ring_buffer_ctx; struct lttng_kernel_ring_buffer_ctx_private; @@ -28,42 +28,43 @@ struct lttng_kernel_ring_buffer_ctx_private; * provided as inline functions too. These may simply return 0 if not used by * the client. */ -struct lib_ring_buffer_client_cb { +struct lttng_kernel_ring_buffer_client_cb { /* Mandatory callbacks */ /* A static inline version is also required for fast path */ - 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, + u64 (*ring_buffer_clock_read) (struct lttng_kernel_ring_buffer_channel *chan); + size_t (*record_header_size) (const struct lttng_kernel_ring_buffer_config *config, + struct lttng_kernel_ring_buffer_channel *chan, size_t offset, size_t *pre_header_padding, struct lttng_kernel_ring_buffer_ctx *ctx, void *client_ctx); /* Slow path only, at subbuffer switch */ size_t (*subbuffer_header_size) (void); - void (*buffer_begin) (struct lib_ring_buffer *buf, u64 tsc, + void (*buffer_begin) (struct lttng_kernel_ring_buffer *buf, u64 tsc, unsigned int subbuf_idx); - void (*buffer_end) (struct lib_ring_buffer *buf, u64 tsc, - unsigned int subbuf_idx, unsigned long data_size); + void (*buffer_end) (struct lttng_kernel_ring_buffer *buf, u64 tsc, + unsigned int subbuf_idx, unsigned long data_size, + const struct lttng_kernel_ring_buffer_ctx *ctx); /* Optional callbacks (can be set to NULL) */ /* Called at buffer creation/finalize */ - int (*buffer_create) (struct lib_ring_buffer *buf, void *priv, + int (*buffer_create) (struct lttng_kernel_ring_buffer *buf, void *priv, int cpu, const char *name); /* * Clients should guarantee that no new reader handle can be opened * after finalize. */ - void (*buffer_finalize) (struct lib_ring_buffer *buf, void *priv, int cpu); + void (*buffer_finalize) (struct lttng_kernel_ring_buffer *buf, void *priv, int cpu); /* * Extract header length, payload length and timestamp from event * record. Used by buffer iterators. Timestamp is only used by channel * iterator. */ - void (*record_get) (const struct lib_ring_buffer_config *config, - struct channel *chan, struct lib_ring_buffer *buf, + void (*record_get) (const struct lttng_kernel_ring_buffer_config *config, + struct lttng_kernel_ring_buffer_channel *chan, struct lttng_kernel_ring_buffer *buf, size_t offset, size_t *header_len, size_t *payload_len, u64 *timestamp); }; @@ -109,7 +110,7 @@ struct lib_ring_buffer_client_cb { * RING_BUFFER_WAKEUP_NONE does not perform any wakeup whatsoever. The client * has the responsibility to perform wakeups. */ -struct lib_ring_buffer_config { +struct lttng_kernel_ring_buffer_config { enum { RING_BUFFER_ALLOC_PER_CPU, RING_BUFFER_ALLOC_GLOBAL, @@ -154,7 +155,7 @@ struct lib_ring_buffer_config { * 0 and 64 disable the timestamp compression scheme. */ unsigned int tsc_bits; - struct lib_ring_buffer_client_cb cb; + struct lttng_kernel_ring_buffer_client_cb cb; }; /* @@ -169,7 +170,7 @@ struct lib_ring_buffer_config { struct lttng_kernel_ring_buffer_ctx_private { /* input received by lib_ring_buffer_reserve(). */ - struct channel *chan; /* ring buffer channel */ + struct lttng_kernel_ring_buffer_channel *chan; /* ring buffer channel */ /* output from lib_ring_buffer_reserve() */ int reserve_cpu; /* processor id updated by the reserve */ @@ -184,11 +185,19 @@ struct lttng_kernel_ring_buffer_ctx_private { u64 tsc; /* time-stamp counter value */ unsigned int rflags; /* reservation flags */ - struct lib_ring_buffer *buf; /* + struct lttng_kernel_ring_buffer *buf; /* * buffer corresponding to processor id * for this channel */ - struct lib_ring_buffer_backend_pages *backend_pages; + struct lttng_kernel_ring_buffer_backend_pages *backend_pages; + + /* + * Records lost counts are only loaded into these fields before + * reserving the last bytes from the ring buffer. + */ + unsigned long records_lost_full; + unsigned long records_lost_wrap; + unsigned long records_lost_big; }; /* @@ -306,7 +315,7 @@ void lib_ring_buffer_align_ctx(struct lttng_kernel_ring_buffer_ctx *ctx, * Used internally to check for valid configurations at channel creation. */ static inline -int lib_ring_buffer_check_config(const struct lib_ring_buffer_config *config, +int lib_ring_buffer_check_config(const struct lttng_kernel_ring_buffer_config *config, unsigned int switch_timer_interval, unsigned int read_timer_interval) {