Fix: consumerd: slow metadata push slows down application registration
[lttng-tools.git] / src / common / ust-consumer / ust-consumer.h
1 /*
2 * Copyright (C) 2011 EfficiOS Inc.
3 * Copyright (C) 2011 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
4 *
5 * SPDX-License-Identifier: GPL-2.0-only
6 *
7 */
8
9 #ifndef _LTTNG_USTCONSUMER_H
10 #define _LTTNG_USTCONSUMER_H
11
12 #include <common/compat/errno.h>
13 #include <common/consumer/consumer.h>
14 #include <stdbool.h>
15
16 #ifdef HAVE_LIBLTTNG_UST_CTL
17
18 int lttng_ustconsumer_take_snapshot(struct lttng_consumer_stream *stream);
19 int lttng_ustconsumer_sample_snapshot_positions(
20 struct lttng_consumer_stream *stream);
21
22 int lttng_ustconsumer_get_produced_snapshot(
23 struct lttng_consumer_stream *stream, unsigned long *pos);
24 int lttng_ustconsumer_get_consumed_snapshot(
25 struct lttng_consumer_stream *stream, unsigned long *pos);
26
27 int lttng_ustconsumer_recv_cmd(struct lttng_consumer_local_data *ctx,
28 int sock, struct pollfd *consumer_sockpoll);
29
30 extern int lttng_ustconsumer_allocate_channel(struct lttng_consumer_channel *chan);
31 extern void lttng_ustconsumer_del_channel(struct lttng_consumer_channel *chan);
32 extern void lttng_ustconsumer_free_channel(struct lttng_consumer_channel *chan);
33 extern int lttng_ustconsumer_add_stream(struct lttng_consumer_stream *stream);
34 extern void lttng_ustconsumer_del_stream(struct lttng_consumer_stream *stream);
35
36 int lttng_ustconsumer_read_subbuffer(struct lttng_consumer_stream *stream,
37 struct lttng_consumer_local_data *ctx);
38 int lttng_ustconsumer_on_recv_stream(struct lttng_consumer_stream *stream);
39
40 void lttng_ustconsumer_on_stream_hangup(struct lttng_consumer_stream *stream);
41
42 int lttng_ust_flush_buffer(struct lttng_consumer_stream *stream,
43 int producer_active);
44 int lttng_ustconsumer_get_stream_id(struct lttng_consumer_stream *stream,
45 uint64_t *stream_id);
46 int lttng_ustconsumer_data_pending(struct lttng_consumer_stream *stream);
47 void lttng_ustconsumer_close_all_metadata(struct lttng_ht *ht);
48 void lttng_ustconsumer_close_metadata(struct lttng_consumer_channel *metadata);
49 void lttng_ustconsumer_close_stream_wakeup(struct lttng_consumer_stream *stream);
50 int lttng_ustconsumer_recv_metadata(int sock, uint64_t key, uint64_t offset,
51 uint64_t len, uint64_t version,
52 struct lttng_consumer_channel *channel, bool invoked_by_timer,
53 int wait);
54 int lttng_ustconsumer_request_metadata(struct lttng_consumer_local_data *ctx,
55 struct lttng_consumer_channel *channel, bool invoked_by_timer,
56 int wait);
57 enum sync_metadata_status lttng_ustconsumer_sync_metadata(
58 struct lttng_consumer_local_data *ctx,
59 struct lttng_consumer_stream *metadata);
60 int lttng_ustconsumer_flush_buffer(struct lttng_consumer_stream *stream,
61 int producer);
62 int lttng_ustconsumer_clear_buffer(struct lttng_consumer_stream *stream);
63 int lttng_ustconsumer_get_current_timestamp(
64 struct lttng_consumer_stream *stream, uint64_t *ts);
65 int lttng_ustconsumer_get_sequence_number(
66 struct lttng_consumer_stream *stream, uint64_t *seq);
67 void lttng_ustconsumer_sigbus_handle(void *addr);
68
69 #else /* HAVE_LIBLTTNG_UST_CTL */
70
71 static inline
72 ssize_t lttng_ustconsumer_on_read_subbuffer_mmap(
73 struct lttng_consumer_local_data *ctx,
74 struct lttng_consumer_stream *stream, unsigned long len,
75 unsigned long padding)
76 {
77 return -ENOSYS;
78 }
79
80 static inline
81 ssize_t lttng_ustconsumer_on_read_subbuffer_splice(
82 struct lttng_consumer_local_data *ctx,
83 struct lttng_consumer_stream *uststream, unsigned long len,
84 unsigned long padding)
85 {
86 return -ENOSYS;
87 }
88
89 static inline
90 int lttng_ustconsumer_take_snapshot(struct lttng_consumer_stream *stream)
91 {
92 return -ENOSYS;
93 }
94
95 static inline
96 int lttng_ustconsumer_sample_snapshot_positions(
97 struct lttng_consumer_stream *stream)
98 {
99 return -ENOSYS;
100 }
101
102 static inline
103 int lttng_ustconsumer_get_produced_snapshot(
104 struct lttng_consumer_stream *stream, unsigned long *pos)
105 {
106 return -ENOSYS;
107 }
108
109 static inline
110 int lttng_ustconsumer_get_consumed_snapshot(
111 struct lttng_consumer_stream *stream, unsigned long *pos)
112 {
113 return -ENOSYS;
114 }
115
116 static inline
117 int lttng_ustconsumer_recv_cmd(struct lttng_consumer_local_data *ctx,
118 int sock, struct pollfd *consumer_sockpoll)
119 {
120 return -ENOSYS;
121 }
122
123 static inline
124 int lttng_ustconsumer_allocate_channel(struct lttng_consumer_channel *chan)
125 {
126 return -ENOSYS;
127 }
128
129 static inline
130 void lttng_ustconsumer_del_channel(struct lttng_consumer_channel *chan)
131 {
132 }
133
134 static inline
135 void lttng_ustconsumer_free_channel(struct lttng_consumer_channel *chan)
136 {
137 }
138
139 static inline
140 int lttng_ustconsumer_add_stream(struct lttng_consumer_stream *stream)
141 {
142 return -ENOSYS;
143 }
144
145 static inline
146 void lttng_ustconsumer_del_stream(struct lttng_consumer_stream *stream)
147 {
148 }
149
150 static inline
151 int lttng_ustconsumer_read_subbuffer(struct lttng_consumer_stream *stream,
152 struct lttng_consumer_local_data *ctx)
153 {
154 return -ENOSYS;
155 }
156
157 static inline
158 int lttng_ustconsumer_on_recv_stream(struct lttng_consumer_stream *stream)
159 {
160 return -ENOSYS;
161 }
162
163 static inline
164 void lttng_ustconsumer_on_stream_hangup(struct lttng_consumer_stream *stream)
165 {
166 }
167
168 static inline
169 int lttng_ustconsumer_data_pending(struct lttng_consumer_stream *stream)
170 {
171 return -ENOSYS;
172 }
173 static inline
174 int lttng_ust_flush_buffer(struct lttng_consumer_stream *stream,
175 int producer_active)
176 {
177 return -ENOSYS;
178 }
179 static inline
180 void lttng_ustconsumer_close_all_metadata(struct lttng_ht *ht)
181 {
182 }
183 static inline
184 void lttng_ustconsumer_close_metadata(struct lttng_consumer_channel *metadata)
185 {
186 }
187 static inline
188 void lttng_ustconsumer_close_stream_wakeup(struct lttng_consumer_stream *stream)
189 {
190 }
191 static inline
192 int lttng_ustconsumer_recv_metadata(int sock, uint64_t key, uint64_t offset,
193 uint64_t len, uint64_t version,
194 struct lttng_consumer_channel *channel, int timer)
195 {
196 return -ENOSYS;
197 }
198 static inline
199 int lttng_ustconsumer_request_metadata(struct lttng_consumer_local_data *ctx,
200 struct lttng_consumer_channel *channel, int timer, int wait)
201 {
202 return -ENOSYS;
203 }
204 static inline
205 enum sync_metadata_status lttng_ustconsumer_sync_metadata(struct lttng_consumer_local_data *ctx,
206 struct lttng_consumer_stream *metadata)
207 {
208 return SYNC_METADATA_STATUS_ERROR;
209 }
210 static inline
211 int lttng_ustconsumer_flush_buffer(struct lttng_consumer_stream *stream,
212 int producer)
213 {
214 return -ENOSYS;
215 }
216 static inline
217 int lttng_ustconsumer_clear_buffer(struct lttng_consumer_stream *stream)
218 {
219 return -ENOSYS;
220 }
221 static inline
222 int lttng_ustconsumer_get_current_timestamp(
223 struct lttng_consumer_stream *stream, uint64_t *ts)
224 {
225 return -ENOSYS;
226 }
227 static inline
228 int lttng_ustconsumer_get_sequence_number(
229 struct lttng_consumer_stream *stream, uint64_t *seq)
230 {
231 return -ENOSYS;
232 }
233 static inline
234 int lttng_ustconsumer_get_stream_id(struct lttng_consumer_stream *stream,
235 uint64_t *stream_id)
236 {
237 return -ENOSYS;
238 }
239 static inline
240 void lttng_ustconsumer_sigbus_handle(void *addr)
241 {
242 }
243 #endif /* HAVE_LIBLTTNG_UST_CTL */
244
245 #endif /* _LTTNG_USTCONSUMER_H */
This page took 0.033737 seconds and 4 git commands to generate.