#endif
#include <helper.h>
#include <ust-fd.h>
+#include "mmap.h"
/*
* Ensure we have the required amount of space available by writing 0
obj = &table->objects[table->allocated_len];
/* wait_fd: create pipe */
- ret = pipe(waitfd);
+ ret = pipe2(waitfd, O_CLOEXEC);
if (ret < 0) {
PERROR("pipe");
goto error_pipe;
}
- for (i = 0; i < 2; i++) {
- ret = fcntl(waitfd[i], F_SETFD, FD_CLOEXEC);
- if (ret < 0) {
- PERROR("fcntl");
- goto error_fcntl;
- }
- }
/* The write end of the pipe needs to be non-blocking */
ret = fcntl(waitfd[1], F_SETFL, O_NONBLOCK);
if (ret < 0) {
/* memory_map: mmap */
memory_map = mmap(NULL, memory_map_size, PROT_READ | PROT_WRITE,
- MAP_SHARED, shmfd, 0);
+ MAP_SHARED | LTTNG_MAP_POPULATE, shmfd, 0);
if (memory_map == MAP_FAILED) {
PERROR("mmap");
goto error_mmap;
goto alloc_error;
/* wait_fd: create pipe */
- ret = pipe(waitfd);
+ ret = pipe2(waitfd, O_CLOEXEC);
if (ret < 0) {
PERROR("pipe");
goto error_pipe;
}
- for (i = 0; i < 2; i++) {
- ret = fcntl(waitfd[i], F_SETFD, FD_CLOEXEC);
- if (ret < 0) {
- PERROR("fcntl");
- goto error_fcntl;
- }
- }
/* The write end of the pipe needs to be non-blocking */
ret = fcntl(waitfd[1], F_SETFL, O_NONBLOCK);
if (ret < 0) {
obj->shm_fd = shm_fd;
obj->shm_fd_ownership = 1;
- ret = fcntl(obj->wait_fd[1], F_SETFD, FD_CLOEXEC);
- if (ret < 0) {
- PERROR("fcntl");
- goto error_fcntl;
- }
/* The write end of the pipe needs to be non-blocking */
ret = fcntl(obj->wait_fd[1], F_SETFL, O_NONBLOCK);
if (ret < 0) {
/* memory_map: mmap */
memory_map = mmap(NULL, memory_map_size, PROT_READ | PROT_WRITE,
- MAP_SHARED, shm_fd, 0);
+ MAP_SHARED | LTTNG_MAP_POPULATE, shm_fd, 0);
if (memory_map == MAP_FAILED) {
PERROR("mmap");
goto error_mmap;
obj->shm_fd = -1;
obj->shm_fd_ownership = 0;
- ret = fcntl(obj->wait_fd[1], F_SETFD, FD_CLOEXEC);
- if (ret < 0) {
- PERROR("fcntl");
- goto error_fcntl;
- }
/* The write end of the pipe needs to be non-blocking */
ret = fcntl(obj->wait_fd[1], F_SETFL, O_NONBLOCK);
if (ret < 0) {