*
*/
-#include <unistd.h>
+#ifndef _GNU_SOURCE
+#define _GNU_SOURCE
+#endif
+
+#include <common/error.hpp>
+#include <common/pipe.hpp>
+
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
-
-#include <common/pipe.h>
-#include <common/error.h>
+#include <unistd.h>
int lttng_opt_verbose;
int lttng_opt_mi;
int lttng_opt_quiet;
-int main(void)
+namespace {
+#ifdef __linux__
+/*
+ * Return the default pipe buffer size or a negative error.
+ */
+int get_pipe_size(void)
{
int ret;
/*
if (!pipe) {
/* lttng_pipe_open already logs on error. */
- ret = EXIT_FAILURE;
+ ret = -1;
goto end;
}
ret = fcntl(lttng_pipe_get_writefd(pipe), F_GETPIPE_SZ);
if (ret < 0) {
PERROR("Failed to get the size of the pipe");
- ret = EXIT_FAILURE;
- goto end;
}
- printf("%d\n", ret);
- ret = EXIT_SUCCESS;
-end:
lttng_pipe_destroy(pipe);
+end:
return ret;
}
+#elif defined(__FreeBSD__)
+int get_pipe_size(void)
+{
+ return 65536;
+}
+#else
+#error "Implement get_pipe_size() for your platform."
+#endif
+} /* namespace */
+
+int main(void)
+{
+ int ret;
+
+ ret = get_pipe_size();
+ if (ret < 0) {
+ return EXIT_FAILURE;
+ }
+
+ /* Print the pipe buffer size to stdout. */
+ printf("%d\n", ret);
+
+ return EXIT_SUCCESS;
+}