Fix: memory/fd leak when cleaning streams in channel
[lttng-tools.git] / src / common / ust-consumer / ust-consumer.h
CommitLineData
3bd1e081
MD
1/*
2 * Copyright (C) 2011 - Julien Desfossez <julien.desfossez@polymtl.ca>
3 * Copyright (C) 2011 - Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
4 *
d14d33bf
AM
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License, version 2 only,
7 * as published by the Free Software Foundation.
3bd1e081
MD
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
d14d33bf 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3bd1e081
MD
12 * GNU General Public License for more details.
13 *
d14d33bf
AM
14 * You should have received a copy of the GNU General Public License along
15 * with this program; if not, write to the Free Software Foundation, Inc.,
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
3bd1e081
MD
17 */
18
19#ifndef _LTTNG_USTCONSUMER_H
20#define _LTTNG_USTCONSUMER_H
21
22#include <config.h>
3bd1e081
MD
23#include <errno.h>
24
10a8a223
DG
25#include <common/consumer.h>
26
74d0b642 27#ifdef HAVE_LIBLTTNG_UST_CTL
3bd1e081 28
ffe60014 29int lttng_ustconsumer_take_snapshot(struct lttng_consumer_stream *stream);
3bd1e081 30
3bd1e081 31int lttng_ustconsumer_get_produced_snapshot(
ffe60014 32 struct lttng_consumer_stream *stream, unsigned long *pos);
10a50311
JD
33int lttng_ustconsumer_get_consumed_snapshot(
34 struct lttng_consumer_stream *stream, unsigned long *pos);
3bd1e081
MD
35
36int lttng_ustconsumer_recv_cmd(struct lttng_consumer_local_data *ctx,
37 int sock, struct pollfd *consumer_sockpoll);
38
39extern int lttng_ustconsumer_allocate_channel(struct lttng_consumer_channel *chan);
40extern void lttng_ustconsumer_del_channel(struct lttng_consumer_channel *chan);
e316aad5 41extern int lttng_ustconsumer_add_stream(struct lttng_consumer_stream *stream);
3bd1e081
MD
42extern void lttng_ustconsumer_del_stream(struct lttng_consumer_stream *stream);
43
d41f73b7
MD
44int lttng_ustconsumer_read_subbuffer(struct lttng_consumer_stream *stream,
45 struct lttng_consumer_local_data *ctx);
46int lttng_ustconsumer_on_recv_stream(struct lttng_consumer_stream *stream);
47
d056b477
MD
48void lttng_ustconsumer_on_stream_hangup(struct lttng_consumer_stream *stream);
49
ffe60014
DG
50int lttng_ustctl_get_mmap_read_offset(struct lttng_consumer_stream *stream,
51 unsigned long *off);
52void *lttng_ustctl_get_mmap_base(struct lttng_consumer_stream *stream);
6d805429 53int lttng_ustconsumer_data_pending(struct lttng_consumer_stream *stream);
6d574024
DG
54void lttng_ustconsumer_close_all_metadata(struct lttng_ht *ht);
55void lttng_ustconsumer_close_metadata(struct lttng_consumer_channel *metadata);
d8ef542d 56void lttng_ustconsumer_close_stream_wakeup(struct lttng_consumer_stream *stream);
331744e3 57int lttng_ustconsumer_recv_metadata(int sock, uint64_t key, uint64_t offset,
5e41ebe1 58 uint64_t len, struct lttng_consumer_channel *channel,
94d49140 59 int timer, int wait);
331744e3 60int lttng_ustconsumer_request_metadata(struct lttng_consumer_local_data *ctx,
94d49140
JD
61 struct lttng_consumer_channel *channel, int timer, int wait);
62int lttng_ustconsumer_sync_metadata(struct lttng_consumer_local_data *ctx,
63 struct lttng_consumer_stream *metadata);
84a182ce
DG
64void lttng_ustconsumer_flush_buffer(struct lttng_consumer_stream *stream,
65 int producer);
66int lttng_ustconsumer_get_current_timestamp(
67 struct lttng_consumer_stream *stream, uint64_t *ts);
f02e1e8a 68
74d0b642 69#else /* HAVE_LIBLTTNG_UST_CTL */
3bd1e081
MD
70
71static inline
4078b776 72ssize_t lttng_ustconsumer_on_read_subbuffer_mmap(
3bd1e081 73 struct lttng_consumer_local_data *ctx,
1d4dfdef
DG
74 struct lttng_consumer_stream *stream, unsigned long len,
75 unsigned long padding)
3bd1e081
MD
76{
77 return -ENOSYS;
78}
79
80static inline
4078b776 81ssize_t lttng_ustconsumer_on_read_subbuffer_splice(
3bd1e081 82 struct lttng_consumer_local_data *ctx,
1d4dfdef
DG
83 struct lttng_consumer_stream *uststream, unsigned long len,
84 unsigned long padding)
3bd1e081
MD
85{
86 return -ENOSYS;
87}
88
89static inline
ffe60014 90int lttng_ustconsumer_take_snapshot(struct lttng_consumer_stream *stream)
3bd1e081
MD
91{
92 return -ENOSYS;
93}
94
95static inline
96int lttng_ustconsumer_get_produced_snapshot(
ffe60014 97 struct lttng_consumer_stream *stream, unsigned long *pos)
3bd1e081
MD
98{
99 return -ENOSYS;
100}
101
102static inline
103int lttng_ustconsumer_recv_cmd(struct lttng_consumer_local_data *ctx,
fbc72522
DG
104 int sock, struct pollfd *consumer_sockpoll)
105{
106 return -ENOSYS;
107}
3bd1e081
MD
108
109static inline
110int lttng_ustconsumer_allocate_channel(struct lttng_consumer_channel *chan)
111{
112 return -ENOSYS;
113}
114
115static inline
116void lttng_ustconsumer_del_channel(struct lttng_consumer_channel *chan)
117{
118}
119
120static inline
e316aad5 121int lttng_ustconsumer_add_stream(struct lttng_consumer_stream *stream)
3bd1e081
MD
122{
123 return -ENOSYS;
124}
125
126static inline
127void lttng_ustconsumer_del_stream(struct lttng_consumer_stream *stream)
128{
129}
130
d41f73b7
MD
131static inline
132int lttng_ustconsumer_read_subbuffer(struct lttng_consumer_stream *stream,
133 struct lttng_consumer_local_data *ctx)
134{
135 return -ENOSYS;
136}
137
138static inline
139int lttng_ustconsumer_on_recv_stream(struct lttng_consumer_stream *stream)
140{
141 return -ENOSYS;
142}
143
d056b477
MD
144static inline
145void lttng_ustconsumer_on_stream_hangup(struct lttng_consumer_stream *stream)
146{
147}
148
f02e1e8a 149static inline
ffe60014
DG
150int lttng_ustctl_get_mmap_read_offset(struct lttng_consumer_stream *stream,
151 unsigned long *off)
f02e1e8a
DG
152{
153 return -ENOSYS;
154}
ca22feea 155static inline
6d805429 156int lttng_ustconsumer_data_pending(struct lttng_consumer_stream *stream)
ca22feea
DG
157{
158 return -ENOSYS;
159}
ffe60014
DG
160static inline
161void *lttng_ustctl_get_mmap_base(struct lttng_consumer_stream *stream)
162{
163 return NULL;
164}
d88aee68 165static inline
6d574024
DG
166void lttng_ustconsumer_close_all_metadata(struct lttng_ht *ht)
167{
168}
169static inline
170void lttng_ustconsumer_close_metadata(struct lttng_consumer_channel *metadata)
d88aee68
DG
171{
172}
d8ef542d
MD
173static inline
174void lttng_ustconsumer_close_stream_wakeup(struct lttng_consumer_stream *stream)
175{
176}
ee69440b
DG
177static inline
178int lttng_ustconsumer_recv_metadata(int sock, uint64_t key, uint64_t offset,
5e41ebe1
MD
179 uint64_t len, struct lttng_consumer_channel *channel,
180 int timer)
ee69440b
DG
181{
182 return -ENOSYS;
183}
184static inline
ee69440b 185int lttng_ustconsumer_request_metadata(struct lttng_consumer_local_data *ctx,
84a182ce 186 struct lttng_consumer_channel *channel, int timer, int wait)
ee69440b
DG
187{
188 return -ENOSYS;
189}
94d49140
JD
190static inline
191int lttng_ustconsumer_sync_metadata(struct lttng_consumer_local_data *ctx,
192 struct lttng_consumer_stream *metadata)
193{
194 return -ENOSYS;
195}
84a182ce
DG
196static inline
197void lttng_ustconsumer_flush_buffer(struct lttng_consumer_stream *stream,
198 int producer)
199{
200}
201static inline
202int lttng_ustconsumer_get_current_timestamp(
203 struct lttng_consumer_stream *stream, uint64_t *ts)
204{
205 return -ENOSYS;
206}
74d0b642 207#endif /* HAVE_LIBLTTNG_UST_CTL */
3bd1e081
MD
208
209#endif /* _LTTNG_USTCONSUMER_H */
This page took 0.048114 seconds and 4 git commands to generate.