diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2015-01-05 14:25:14 -0800 |
---|---|---|
committer | Thiago Macieira <thiago.macieira@intel.com> | 2015-01-16 03:12:09 +0100 |
commit | 3d051d41a3034f253da94ce7eef4af579089cb64 (patch) | |
tree | 05c25597e14d6eb0a0d82c9d0654d4cc76c8d51d /src/3rdparty | |
parent | 98008efcf894318ecbc58d89b5a79bc5227449b8 (diff) |
Fix forkfd build when O_CLOEXEC isn't defined.
O_CLOEXEC was introduced with the 2008 revision of POSIX.1 and it's the
only way of doing child processes safely with fork(2) in multithreaded
applications.
But we need to support pre-2008 systems, so we can't use that constant.
So let's just choose two arbitrary values for both of our constants --
we need to change both because we need to be sure that FFD_CLOEXEC won't
be the same as FFD_NONBLOCK.
Linux will probably implement them to the O_ constants, like epoll,
signalfd and inotify have done.
Change-Id: I20a5aa6e6264e7a219e19759eeb8747e01df05ff
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
Diffstat (limited to 'src/3rdparty')
-rw-r--r-- | src/3rdparty/forkfd/forkfd.c | 2 | ||||
-rw-r--r-- | src/3rdparty/forkfd/forkfd.h | 4 |
2 files changed, 3 insertions, 3 deletions
diff --git a/src/3rdparty/forkfd/forkfd.c b/src/3rdparty/forkfd/forkfd.c index b781b517a6..067e41d486 100644 --- a/src/3rdparty/forkfd/forkfd.c +++ b/src/3rdparty/forkfd/forkfd.c @@ -404,7 +404,7 @@ int forkfd(int flags, pid_t *ppid) #endif { /* try a pipe */ - if (create_pipe(sync_pipe, O_CLOEXEC) == -1) { + if (create_pipe(sync_pipe, FFD_CLOEXEC) == -1) { /* failed both at eventfd and pipe; fail and pass errno */ goto err_close; } diff --git a/src/3rdparty/forkfd/forkfd.h b/src/3rdparty/forkfd/forkfd.h index de75f84bc0..01b8882623 100644 --- a/src/3rdparty/forkfd/forkfd.h +++ b/src/3rdparty/forkfd/forkfd.h @@ -44,8 +44,8 @@ extern "C" { #endif -#define FFD_CLOEXEC O_CLOEXEC -#define FFD_NONBLOCK O_NONBLOCK +#define FFD_CLOEXEC 1 +#define FFD_NONBLOCK 2 #define FFD_CHILD_PROCESS (-2) |