patches 1 to 3 merged, thanks! Mathieu
* Julien Desfossez ([email protected]) wrote: > Prepare the ring-buffer config to have custom callbacks. These custom > callbacks are not related to the ring-buffer operations but allow > applications to add custom functions. > No additional feature or change in behaviour in this patch. > > Signed-off-by: Julien Desfossez <[email protected]> > Acked-by: Mathieu Desnoyers <[email protected]> > --- > include/lttng/ringbuffer-config.h | 4 +++- > include/lttng/ust-events.h | 6 +++--- > liblttng-ust/Makefile.am | 1 + > liblttng-ust/lttng-rb-clients.h | 26 > ++++++++++++++++++++++++ > liblttng-ust/lttng-ring-buffer-client.h | 18 +++++++++++++++- > liblttng-ust/lttng-ring-buffer-metadata-client.h | 18 +++++++++++++++- > 6 files changed, 67 insertions(+), 6 deletions(-) > create mode 100644 liblttng-ust/lttng-rb-clients.h > > diff --git a/include/lttng/ringbuffer-config.h > b/include/lttng/ringbuffer-config.h > index 3b7d348..9de9a73 100644 > --- a/include/lttng/ringbuffer-config.h > +++ b/include/lttng/ringbuffer-config.h > @@ -133,7 +133,7 @@ struct lttng_ust_lib_ring_buffer_client_cb { > * 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, > @@ -204,6 +204,8 @@ struct lttng_ust_lib_ring_buffer_config { > * 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]; > }; > > diff --git a/include/lttng/ust-events.h b/include/lttng/ust-events.h > index f40c044..74a3bc6 100644 > --- a/include/lttng/ust-events.h > +++ b/include/lttng/ust-events.h > @@ -569,9 +569,9 @@ int lttng_add_ip_to_ctx(struct lttng_ctx **ctx); > void lttng_context_vtid_reset(void); > void lttng_context_vpid_reset(void); > > -extern const struct lttng_ust_lib_ring_buffer_client_cb > *lttng_client_callbacks_metadata; > -extern const struct lttng_ust_lib_ring_buffer_client_cb > *lttng_client_callbacks_discard; > -extern const struct lttng_ust_lib_ring_buffer_client_cb > *lttng_client_callbacks_overwrite; > +extern const struct lttng_ust_client_lib_ring_buffer_client_cb > *lttng_client_callbacks_metadata; > +extern const struct lttng_ust_client_lib_ring_buffer_client_cb > *lttng_client_callbacks_discard; > +extern const struct lttng_ust_client_lib_ring_buffer_client_cb > *lttng_client_callbacks_overwrite; > > struct lttng_transport *lttng_transport_find(const char *name); > > diff --git a/liblttng-ust/Makefile.am b/liblttng-ust/Makefile.am > index 1e6401a..5a43cf5 100644 > --- a/liblttng-ust/Makefile.am > +++ b/liblttng-ust/Makefile.am > @@ -47,6 +47,7 @@ liblttng_ust_support_la_SOURCES = \ > lttng-tracer.h \ > lttng-tracer-core.h \ > ust-core.c \ > + lttng-rb-clients.h \ > lttng-ring-buffer-client.h \ > lttng-ring-buffer-client-discard.c \ > lttng-ring-buffer-client-discard-rt.c \ > diff --git a/liblttng-ust/lttng-rb-clients.h b/liblttng-ust/lttng-rb-clients.h > new file mode 100644 > index 0000000..c9a1619 > --- /dev/null > +++ b/liblttng-ust/lttng-rb-clients.h > @@ -0,0 +1,26 @@ > +#ifndef _LTTNG_RB_CLIENT_H > +#define _LTTNG_RB_CLIENT_H > + > +/* > + * Copyright (c) 2013 - Mathieu Desnoyers <[email protected]> > + * > + * This library is free software; you can redistribute it and/or > + * modify it under the terms of the GNU Lesser General Public > + * License as published by the Free Software Foundation; only > + * version 2.1 of the License. > + * > + * This library is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + * Lesser General Public License for more details. > + * > + * You should have received a copy of the GNU Lesser General Public > + * License along with this library; if not, write to the Free Software > + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 > USA > + */ > + > +struct lttng_ust_client_lib_ring_buffer_client_cb { > + struct lttng_ust_lib_ring_buffer_client_cb parent; > +}; > + > +#endif /* _LTTNG_RB_CLIENT_H */ > diff --git a/liblttng-ust/lttng-ring-buffer-client.h > b/liblttng-ust/lttng-ring-buffer-client.h > index 72b6d2c..383fce0 100644 > --- a/liblttng-ust/lttng-ring-buffer-client.h > +++ b/liblttng-ust/lttng-ring-buffer-client.h > @@ -161,6 +161,7 @@ unsigned char record_header_size(const struct > lttng_ust_lib_ring_buffer_config * > } > > #include "../libringbuffer/api.h" > +#include "lttng-rb-clients.h" > > static > void lttng_write_event_header_slow(const struct > lttng_ust_lib_ring_buffer_config *config, > @@ -385,6 +386,19 @@ static void client_buffer_finalize(struct > lttng_ust_lib_ring_buffer *buf, void * > { > } > > +static const > +struct lttng_ust_client_lib_ring_buffer_client_cb client_cb = { > + .parent = { > + .ring_buffer_clock_read = client_ring_buffer_clock_read, > + .record_header_size = client_record_header_size, > + .subbuffer_header_size = client_packet_header_size, > + .buffer_begin = client_buffer_begin, > + .buffer_end = client_buffer_end, > + .buffer_create = client_buffer_create, > + .buffer_finalize = client_buffer_finalize, > + }, > +}; > + > static const struct lttng_ust_lib_ring_buffer_config client_config = { > .cb.ring_buffer_clock_read = client_ring_buffer_clock_read, > .cb.record_header_size = client_record_header_size, > @@ -404,9 +418,11 @@ static const struct lttng_ust_lib_ring_buffer_config > client_config = { > .ipi = RING_BUFFER_NO_IPI_BARRIER, > .wakeup = LTTNG_CLIENT_WAKEUP, > .client_type = LTTNG_CLIENT_TYPE, > + > + .cb_ptr = &client_cb.parent, > }; > > -const struct lttng_ust_lib_ring_buffer_client_cb *LTTNG_CLIENT_CALLBACKS = > &client_config.cb; > +const struct lttng_ust_client_lib_ring_buffer_client_cb > *LTTNG_CLIENT_CALLBACKS = &client_cb; > > static > struct lttng_channel *_channel_create(const char *name, > diff --git a/liblttng-ust/lttng-ring-buffer-metadata-client.h > b/liblttng-ust/lttng-ring-buffer-metadata-client.h > index 89f2620..0d2a1f8 100644 > --- a/liblttng-ust/lttng-ring-buffer-metadata-client.h > +++ b/liblttng-ust/lttng-ring-buffer-metadata-client.h > @@ -61,6 +61,7 @@ unsigned char record_header_size(const struct > lttng_ust_lib_ring_buffer_config * > } > > #include "../libringbuffer/api.h" > +#include "lttng-rb-clients.h" > > static uint64_t client_ring_buffer_clock_read(struct channel *chan) > { > @@ -153,6 +154,19 @@ static void client_buffer_finalize(struct > lttng_ust_lib_ring_buffer *buf, > { > } > > +static const > +struct lttng_ust_client_lib_ring_buffer_client_cb client_cb = { > + .parent = { > + .ring_buffer_clock_read = client_ring_buffer_clock_read, > + .record_header_size = client_record_header_size, > + .subbuffer_header_size = client_packet_header_size, > + .buffer_begin = client_buffer_begin, > + .buffer_end = client_buffer_end, > + .buffer_create = client_buffer_create, > + .buffer_finalize = client_buffer_finalize, > + }, > +}; > + > static const struct lttng_ust_lib_ring_buffer_config client_config = { > .cb.ring_buffer_clock_read = client_ring_buffer_clock_read, > .cb.record_header_size = client_record_header_size, > @@ -172,9 +186,11 @@ static const struct lttng_ust_lib_ring_buffer_config > client_config = { > .ipi = RING_BUFFER_NO_IPI_BARRIER, > .wakeup = RING_BUFFER_WAKEUP_BY_WRITER, > .client_type = LTTNG_CLIENT_TYPE, > + > + .cb_ptr = &client_cb.parent, > }; > > -const struct lttng_ust_lib_ring_buffer_client_cb *LTTNG_CLIENT_CALLBACKS = > &client_config.cb; > +const struct lttng_ust_client_lib_ring_buffer_client_cb > *LTTNG_CLIENT_CALLBACKS = &client_cb; > > static > struct lttng_channel *_channel_create(const char *name, > -- > 1.8.3.2 > -- Mathieu Desnoyers EfficiOS Inc. http://www.efficios.com _______________________________________________ lttng-dev mailing list [email protected] http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
