- /* splice the subbuffer to the tracefile */
- ret = lttng_consumer_on_read_subbuffer_splice(ctx, stream, subbuf_size,
- padding, &index);
- /*
- * XXX: Splice does not support network streaming so the return value
- * is simply checked against subbuf_size and not like the mmap() op.
- */
- if (ret != subbuf_size) {
- /*
- * display the error but continue processing to try
- * to release the subbuffer
- */
- ERR("Error splicing to tracefile (ret: %zd != len: %lu)",
- ret, subbuf_size);
- write_index = 0;
- }
- break;
- case CONSUMER_CHANNEL_MMAP:
- {
- const char *subbuf_addr;
- struct lttng_buffer_view subbuf_view;
-
- /* Get subbuffer size without padding */
- err = kernctl_get_subbuf_size(infd, &subbuf_size);
- if (err != 0) {
- PERROR("Getting sub-buffer len failed.");
- err = kernctl_put_subbuf(infd);
- if (err != 0) {
- if (err == -EFAULT) {
- PERROR("Error in unreserving sub buffer\n");
- } else if (err == -EIO) {
- /* Should never happen with newer LTTng versions */
- PERROR("Reader has been pushed by the writer, last sub-buffer corrupted.");
- }
- ret = err;
- goto error;
- }
- ret = err;
- goto error;
- }
+static
+bool is_get_next_check_metadata_available(int tracer_fd)
+{
+ const int ret = kernctl_get_next_subbuf_metadata_check(tracer_fd, NULL);
+ const bool available = ret != -ENOTTY;