X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fcommon%2Fconsumer.h;h=6ac781605c7284ecf7319e2b10fa0c3920b441b3;hb=731bc74aa3b64796616f2da9a65ccfcf72629bf5;hp=35a72b50f6078e333f1fe754de5f183417b71767;hpb=373d38732a83167f19c3be89cf9ff238743cdeb0;p=lttng-tools.git diff --git a/src/common/consumer.h b/src/common/consumer.h index 35a72b50f..6ac781605 100644 --- a/src/common/consumer.h +++ b/src/common/consumer.h @@ -2,19 +2,18 @@ * Copyright (C) 2011 - Julien Desfossez * Copyright (C) 2011 - Mathieu Desnoyers * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; only version 2 - * of the License. + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License, version 2 only, + * as published by the Free Software Foundation. * - * This program 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 General Public License for more details. + * This program 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 General Public License for + * more details. * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef _LTTNG_CONSUMER_H @@ -114,6 +113,7 @@ struct lttng_consumer_stream { /* For UST */ struct lttng_ust_lib_ring_buffer *buf; int cpu; + int data_read; int hangup_flush_done; /* UID/GID of the user owning the session to which stream belongs */ uid_t uid; @@ -125,8 +125,11 @@ struct lttng_consumer_stream { * process. */ struct lttng_consumer_local_data { - /* function to call when data is available on a buffer */ - int (*on_buffer_ready)(struct lttng_consumer_stream *stream, + /* + * Function to call when data is available on a buffer. + * Returns the number of bytes read, or negative error value. + */ + ssize_t (*on_buffer_ready)(struct lttng_consumer_stream *stream, struct lttng_consumer_local_data *ctx); /* * function to call when we receive a new channel, it receives a @@ -285,16 +288,16 @@ int consumer_add_channel(struct lttng_consumer_channel *channel); extern struct lttng_consumer_local_data *lttng_consumer_create( enum lttng_consumer_type type, - int (*buffer_ready)(struct lttng_consumer_stream *stream, + ssize_t (*buffer_ready)(struct lttng_consumer_stream *stream, struct lttng_consumer_local_data *ctx), int (*recv_channel)(struct lttng_consumer_channel *channel), int (*recv_stream)(struct lttng_consumer_stream *stream), int (*update_stream)(int sessiond_key, uint32_t state)); extern void lttng_consumer_destroy(struct lttng_consumer_local_data *ctx); -extern int lttng_consumer_on_read_subbuffer_mmap( +extern ssize_t lttng_consumer_on_read_subbuffer_mmap( struct lttng_consumer_local_data *ctx, struct lttng_consumer_stream *stream, unsigned long len); -extern int lttng_consumer_on_read_subbuffer_splice( +extern ssize_t lttng_consumer_on_read_subbuffer_splice( struct lttng_consumer_local_data *ctx, struct lttng_consumer_stream *stream, unsigned long len); extern int lttng_consumer_take_snapshot(struct lttng_consumer_local_data *ctx, @@ -308,7 +311,7 @@ extern void *lttng_consumer_thread_receive_fds(void *data); extern int lttng_consumer_recv_cmd(struct lttng_consumer_local_data *ctx, int sock, struct pollfd *consumer_sockpoll); -int lttng_consumer_read_subbuffer(struct lttng_consumer_stream *stream, +ssize_t lttng_consumer_read_subbuffer(struct lttng_consumer_stream *stream, struct lttng_consumer_local_data *ctx); int lttng_consumer_on_recv_stream(struct lttng_consumer_stream *stream);