X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=liblttng-ust%2Flttng-ring-buffer-client.h;h=72b6d2c8f1a21a2328f726eb94b50d6503929cd2;hb=08fc51bdb83e1d05b7ce5cb71c1efcd39eaaacc4;hp=ad77802f964063eced5c6ba7097db2077913c98f;hpb=7dd08bec735b428479201f9f84d59c78deabdf57;p=lttng-ust.git diff --git a/liblttng-ust/lttng-ring-buffer-client.h b/liblttng-ust/lttng-ring-buffer-client.h index ad77802f..72b6d2c8 100644 --- a/liblttng-ust/lttng-ring-buffer-client.h +++ b/liblttng-ust/lttng-ring-buffer-client.h @@ -24,7 +24,6 @@ #include #include "lttng/bitfield.h" #include "clock.h" -#include "lttng-ust-uuid.h" #include "lttng-tracer.h" #include "../libringbuffer/frontend_types.h" @@ -403,7 +402,7 @@ static const struct lttng_ust_lib_ring_buffer_config client_config = { .output = RING_BUFFER_MMAP, .oops = RING_BUFFER_OOPS_CONSISTENCY, .ipi = RING_BUFFER_NO_IPI_BARRIER, - .wakeup = RING_BUFFER_WAKEUP_BY_WRITER, + .wakeup = LTTNG_CLIENT_WAKEUP, .client_type = LTTNG_CLIENT_TYPE, }; @@ -415,58 +414,35 @@ struct lttng_channel *_channel_create(const char *name, size_t subbuf_size, size_t num_subbuf, unsigned int switch_timer_interval, unsigned int read_timer_interval, - int **shm_fd, int **wait_fd, - uint64_t **memory_map_size, - struct lttng_channel *chan_priv_init) + unsigned char *uuid, + uint32_t chan_id) { - void *priv; - struct lttng_channel *lttng_chan = NULL; + struct lttng_channel chan_priv_init; struct lttng_ust_shm_handle *handle; + struct lttng_channel *lttng_chan; + void *priv; + memset(&chan_priv_init, 0, sizeof(chan_priv_init)); + memcpy(chan_priv_init.uuid, uuid, LTTNG_UST_UUID_LEN); + chan_priv_init.id = chan_id; handle = channel_create(&client_config, name, - &priv, __alignof__(*lttng_chan), sizeof(*lttng_chan), - chan_priv_init, + &priv, __alignof__(struct lttng_channel), + sizeof(struct lttng_channel), + &chan_priv_init, buf_addr, subbuf_size, num_subbuf, - switch_timer_interval, read_timer_interval, - shm_fd, wait_fd, memory_map_size); + switch_timer_interval, read_timer_interval); if (!handle) return NULL; lttng_chan = priv; lttng_chan->handle = handle; - lttng_chan->chan = shmp(lttng_chan->handle, lttng_chan->handle->chan); + lttng_chan->chan = shmp(handle, handle->chan); return lttng_chan; } static -void lttng_channel_destroy(struct lttng_channel *lttng_chan) -{ - channel_destroy(lttng_chan->chan, lttng_chan->handle, 0); -} - -static -struct lttng_ust_lib_ring_buffer *lttng_buffer_read_open(struct channel *chan, - struct lttng_ust_shm_handle *handle, - int **shm_fd, int **wait_fd, - uint64_t **memory_map_size) -{ - struct lttng_ust_lib_ring_buffer *buf; - int cpu; - - for_each_channel_cpu(cpu, chan) { - buf = channel_get_ring_buffer(&client_config, chan, - cpu, handle, shm_fd, wait_fd, - memory_map_size); - if (!lib_ring_buffer_open_read(buf, handle, 0)) - return buf; - } - return NULL; -} - -static -void lttng_buffer_read_close(struct lttng_ust_lib_ring_buffer *buf, - struct lttng_ust_shm_handle *handle) +void lttng_channel_destroy(struct lttng_channel *chan) { - lib_ring_buffer_release_read(buf, handle, 0); + channel_destroy(chan->chan, chan->handle, 1); } static @@ -551,12 +527,12 @@ int lttng_flush_buffer(struct channel *chan, struct lttng_ust_shm_handle *handle int cpu; for_each_channel_cpu(cpu, chan) { - int *shm_fd, *wait_fd; - uint64_t *memory_map_size; + int shm_fd, wait_fd, wakeup_fd; + uint64_t memory_map_size; buf = channel_get_ring_buffer(&client_config, chan, cpu, handle, &shm_fd, &wait_fd, - &memory_map_size); + &wakeup_fd, &memory_map_size); lib_ring_buffer_switch(&client_config, buf, SWITCH_ACTIVE, handle); } @@ -568,8 +544,6 @@ static struct lttng_transport lttng_relay_transport = { .ops = { .channel_create = _channel_create, .channel_destroy = lttng_channel_destroy, - .buffer_read_open = lttng_buffer_read_open, - .buffer_read_close = lttng_buffer_read_close, .event_reserve = lttng_event_reserve, .event_commit = lttng_event_commit, .event_write = lttng_event_write, @@ -580,16 +554,19 @@ static struct lttng_transport lttng_relay_transport = { .is_disabled = lttng_is_disabled, .flush_buffer = lttng_flush_buffer, }, + .client_config = &client_config, }; void RING_BUFFER_MODE_TEMPLATE_INIT(void) { - DBG("LTT : ltt ring buffer client init\n"); + DBG("LTT : ltt ring buffer client \"%s\" init\n", + "relay-" RING_BUFFER_MODE_TEMPLATE_STRING "-mmap"); lttng_transport_register(<tng_relay_transport); } void RING_BUFFER_MODE_TEMPLATE_EXIT(void) { - DBG("LTT : ltt ring buffer client exit\n"); + DBG("LTT : ltt ring buffer client \"%s\" exit\n", + "relay-" RING_BUFFER_MODE_TEMPLATE_STRING "-mmap"); lttng_transport_unregister(<tng_relay_transport); }