X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=libringbuffer%2Fring_buffer_frontend.c;h=c9de2923034231e2edd266b33d45cd554f5f3248;hb=167ff4df850ed5c954ee374db66a04b1c9a4ef34;hp=6d4a21bac101d0cfbc2809c4fce3a8489cdc1b41;hpb=a1360615a384dbd51bdbb1f8a542a3cbbd2ee937;p=lttng-ust.git diff --git a/libringbuffer/ring_buffer_frontend.c b/libringbuffer/ring_buffer_frontend.c index 6d4a21ba..c9de2923 100644 --- a/libringbuffer/ring_buffer_frontend.c +++ b/libringbuffer/ring_buffer_frontend.c @@ -1,7 +1,22 @@ /* * ring_buffer_frontend.c * - * (C) Copyright 2005-2010 - Mathieu Desnoyers + * Copyright (C) 2005-2012 Mathieu Desnoyers + * + * 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 + * * * Ring buffer wait-free buffer synchronization. Producer-consumer and flight * recorder (overwrite) modes. See thesis: @@ -34,8 +49,6 @@ * - splice one subbuffer worth of data to a pipe * - splice the data from pipe to disk/network * - put_subbuf - * - * Dual LGPL v2.1/GPL v2 license. */ #define _GNU_SOURCE @@ -426,7 +439,8 @@ struct lttng_ust_shm_handle *channel_create(const struct lttng_ust_lib_ring_buff void *buf_addr, 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) + int **shm_fd, char **shm_path, + int **wait_fd, char **wait_pipe_path, uint64_t **memory_map_size) { int ret, cpu; size_t shmsize, chansize; @@ -517,7 +531,7 @@ struct lttng_ust_shm_handle *channel_create(const struct lttng_ust_lib_ring_buff lib_ring_buffer_start_read_timer(buf, handle); } ref = &handle->chan._ref; - shm_get_object_data(handle, ref, shm_fd, wait_fd, memory_map_size); + shm_get_object_data(handle, ref, shm_fd, shm_path, wait_fd, wait_pipe_path, memory_map_size); return handle; error_backend_init: @@ -616,22 +630,23 @@ struct lttng_ust_lib_ring_buffer *channel_get_ring_buffer( const struct lttng_ust_lib_ring_buffer_config *config, struct channel *chan, int cpu, struct lttng_ust_shm_handle *handle, - int **shm_fd, int **wait_fd, + int **shm_fd, char **shm_path, + int **wait_fd, char **wait_pipe_path, uint64_t **memory_map_size) { struct shm_ref *ref; if (config->alloc == RING_BUFFER_ALLOC_GLOBAL) { ref = &chan->backend.buf[0].shmp._ref; - shm_get_object_data(handle, ref, shm_fd, wait_fd, - memory_map_size); + shm_get_object_data(handle, ref, shm_fd, shm_path, + wait_fd, wait_pipe_path, memory_map_size); return shmp(handle, chan->backend.buf[0].shmp); } else { if (cpu >= num_possible_cpus()) return NULL; ref = &chan->backend.buf[cpu].shmp._ref; - shm_get_object_data(handle, ref, shm_fd, wait_fd, - memory_map_size); + shm_get_object_data(handle, ref, shm_fd, shm_path, + wait_fd, wait_pipe_path, memory_map_size); return shmp(handle, chan->backend.buf[cpu].shmp); } }