Cygwin: Pass file paths instead of file descriptors over UNIX sockets
[lttng-ust.git] / tests / ust-multi-test / ust-multi-test.c
index 59f54a9c93efa0375c4dc69a998b73d27bf3aabd..db62962689ae21f07a906011246ea04a01187083 100644 (file)
@@ -4,21 +4,22 @@
  * Copyright (C) 2011 - Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
  * Copyright (C) 2011 - David Goulet <david.goulet@polymtl.ca>
  *
- * 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 as published by
+ * the Free Software Foundation; version 2 of the License only.
  *
- * 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.
  */
 
 #define _LARGEFILE64_SOURCE
+#define _GNU_SOURCE
 #include <errno.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -27,6 +28,8 @@
 #include <unistd.h>
 #include <sys/wait.h>
 #include <sys/types.h>
+#include <sys/time.h>
+#include <sys/resource.h>
 #include <sys/stat.h>
 #include <fcntl.h>
 #include <sys/mman.h>
@@ -36,7 +39,7 @@
 #include <assert.h>
 #include <sys/socket.h>
 
-#include "lttng-ust-comm.h"
+#include <ust-comm.h>
 #include <../../libringbuffer/backend.h>
 #include <../../libringbuffer/frontend.h>
 
@@ -51,18 +54,11 @@ const char *evname[] = {
        "ust_tests_hello_dontexist",
 };
 
-struct object_data {
-       int handle;
-       int shm_fd;
-       int wait_fd;
-       uint64_t memory_map_size;
-};
-
 static int session_handle[NR_SESSIONS];
-static struct object_data metadata_stream_data[NR_SESSIONS];
-static struct object_data metadata_data[NR_SESSIONS];
-static struct object_data channel_data[NR_SESSIONS][NR_CHANNELS];
-static struct object_data stream_data[NR_SESSIONS][NR_CHANNELS][MAX_NR_STREAMS];
+static struct lttng_ust_object_data metadata_stream_data[NR_SESSIONS];
+static struct lttng_ust_object_data metadata_data[NR_SESSIONS];
+static struct lttng_ust_object_data channel_data[NR_SESSIONS][NR_CHANNELS];
+static struct lttng_ust_object_data stream_data[NR_SESSIONS][NR_CHANNELS][MAX_NR_STREAMS];
 static int event_handle[NR_SESSIONS][NR_CHANNELS][NR_EVENTS];
 
 static int apps_socket = -1;
@@ -77,7 +73,7 @@ static void handle_signals(int signo)
 }
 
 static
-int open_streams(int sock, int channel_handle, struct object_data *stream_datas,
+int open_streams(int sock, int channel_handle, struct lttng_ust_object_data *stream_datas,
                int nr_check)
 {
        int ret, k = 0;
@@ -121,7 +117,7 @@ int open_streams(int sock, int channel_handle, struct object_data *stream_datas,
 }
 
 static
-int close_streams(int sock, struct object_data *stream_datas, int nr_check)
+int close_streams(int sock, struct lttng_ust_object_data *stream_datas, int nr_check)
 {
        int ret, k;
 
@@ -158,10 +154,10 @@ int close_streams(int sock, struct object_data *stream_datas, int nr_check)
 }
 
 static
-struct shm_handle *map_channel(struct object_data *chan_data,
-               struct object_data *stream_datas, int nr_check)
+struct lttng_ust_shm_handle *map_channel(struct lttng_ust_object_data *chan_data,
+               struct lttng_ust_object_data *stream_datas, int nr_check)
 {
-       struct shm_handle *handle;
+       struct lttng_ust_shm_handle *handle;
        struct channel *chan;
        int k, ret;
 
@@ -178,7 +174,7 @@ struct shm_handle *map_channel(struct object_data *chan_data,
        chan = shmp(handle, handle->chan);
 
        for (k = 0; k < nr_check; k++) {
-               struct object_data *stream_data = &stream_datas[k];
+               struct lttng_ust_object_data *stream_data = &stream_datas[k];
 
                if (!stream_data->handle)
                        break;
@@ -202,7 +198,7 @@ error_destroy:
 }
 
 static
-void unmap_channel(struct shm_handle *handle)
+void unmap_channel(struct lttng_ust_shm_handle *handle)
 {
        struct channel *chan;
 
@@ -212,19 +208,23 @@ void unmap_channel(struct shm_handle *handle)
 }
 
 static
-int consume_stream(struct shm_handle *handle, int cpu, char *outfile)
+int consume_stream(struct lttng_ust_shm_handle *handle, int cpu, char *outfile)
 {
        struct channel *chan;
-       struct lib_ring_buffer *buf;
+       struct lttng_ust_lib_ring_buffer *buf;
        int outfd, ret;
-       int shm_fd, wait_fd;
-       uint64_t memory_map_size;
+       int *shm_fd, *wait_fd;
+       char *shm_path, *wait_pipe_path;
+       uint64_t *memory_map_size;
 
        chan = shmp(handle, handle->chan);
 
        /* open stream */
        buf = channel_get_ring_buffer(&chan->backend.config,
-               chan, cpu, handle, &shm_fd, &wait_fd, &memory_map_size);
+                                     chan, cpu, handle,
+                                     &shm_fd, &shm_path,
+                                     &wait_fd, &wait_pipe_path,
+                                     &memory_map_size);
        if (!buf)
                return -ENOENT;
        ret = lib_ring_buffer_open_read(buf, handle, 1);
@@ -233,7 +233,7 @@ int consume_stream(struct shm_handle *handle, int cpu, char *outfile)
        }
 
        /* copy */
-       outfd = open(outfile, O_WRONLY | O_CREAT | O_LARGEFILE | O_TRUNC,
+       outfd = open(outfile, O_WRONLY | O_CREAT | O_TRUNC,
                        S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP);
        if (outfd < 0) {
                perror("open output");
@@ -266,7 +266,7 @@ int consume_stream(struct shm_handle *handle, int cpu, char *outfile)
                printf("WRITE: copy %lu bytes\n", read_size);
                copy_size = write(outfd, ptr, read_size);
                if (copy_size < read_size) {
-                       printf("write issue: copied %zd, expected %lu\n", copy_size, read_size);
+                       printf("write issue: copied %lu, expected %lu\n", copy_size, read_size);
                }
                lib_ring_buffer_put_next_subbuf(buf, handle);
        }
@@ -290,7 +290,7 @@ int consume_buffers(void)
 
        for (i = 0; i < NR_SESSIONS; i++) {
                char pathname[PATH_MAX];
-               struct shm_handle *handle;
+               struct lttng_ust_shm_handle *handle;
 
                snprintf(pathname, PATH_MAX - 1, "/tmp/testtrace%u", i);
                old_umask = umask(0);
This page took 0.034271 seconds and 4 git commands to generate.