path: root/src/3rdparty
diff options
authorThiago Macieira <>2015-01-05 14:25:14 -0800
committerThiago Macieira <>2015-01-16 03:12:09 +0100
commit3d051d41a3034f253da94ce7eef4af579089cb64 (patch)
tree05c25597e14d6eb0a0d82c9d0654d4cc76c8d51d /src/3rdparty
parent98008efcf894318ecbc58d89b5a79bc5227449b8 (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 <> Reviewed-by: Rafael Roquetto <>
Diffstat (limited to 'src/3rdparty')
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)
/* 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" {
+#define FFD_CLOEXEC 1
+#define FFD_NONBLOCK 2
#define FFD_CHILD_PROCESS (-2)