From: Owen Taylor Date: Sun, 14 Mar 2004 18:26:47 +0000 (+0000) Subject: Use fork1() not fork for G_THREADS_IMPL_SOLARIS. (#136971, Sebastian X-Git-Tag: GLIB_2_4_0~5 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f0f807c51f7347eefa8ec42a0fef7eb4a7e190ea;p=platform%2Fupstream%2Fglib.git Use fork1() not fork for G_THREADS_IMPL_SOLARIS. (#136971, Sebastian Sun Mar 14 13:23:36 2004 Owen Taylor * glib/gspawn.c: Use fork1() not fork for G_THREADS_IMPL_SOLARIS. (#136971, Sebastian Wilhelmi) --- diff --git a/ChangeLog b/ChangeLog index c13000d..086aa83 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Sun Mar 14 13:23:36 2004 Owen Taylor + + * glib/gspawn.c: Use fork1() not fork for + G_THREADS_IMPL_SOLARIS. (#136971, Sebastian Wilhelmi) + Sun Mar 14 12:58:30 2004 Owen Taylor * glib/gmain.c: if _POLL_EMUL_H is defined, undefine diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index c13000d..086aa83 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,8 @@ +Sun Mar 14 13:23:36 2004 Owen Taylor + + * glib/gspawn.c: Use fork1() not fork for + G_THREADS_IMPL_SOLARIS. (#136971, Sebastian Wilhelmi) + Sun Mar 14 12:58:30 2004 Owen Taylor * glib/gmain.c: if _POLL_EMUL_H is defined, undefine diff --git a/ChangeLog.pre-2-12 b/ChangeLog.pre-2-12 index c13000d..086aa83 100644 --- a/ChangeLog.pre-2-12 +++ b/ChangeLog.pre-2-12 @@ -1,3 +1,8 @@ +Sun Mar 14 13:23:36 2004 Owen Taylor + + * glib/gspawn.c: Use fork1() not fork for + G_THREADS_IMPL_SOLARIS. (#136971, Sebastian Wilhelmi) + Sun Mar 14 12:58:30 2004 Owen Taylor * glib/gmain.c: if _POLL_EMUL_H is defined, undefine diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index c13000d..086aa83 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,8 @@ +Sun Mar 14 13:23:36 2004 Owen Taylor + + * glib/gspawn.c: Use fork1() not fork for + G_THREADS_IMPL_SOLARIS. (#136971, Sebastian Wilhelmi) + Sun Mar 14 12:58:30 2004 Owen Taylor * glib/gmain.c: if _POLL_EMUL_H is defined, undefine diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index c13000d..086aa83 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,8 @@ +Sun Mar 14 13:23:36 2004 Owen Taylor + + * glib/gspawn.c: Use fork1() not fork for + G_THREADS_IMPL_SOLARIS. (#136971, Sebastian Wilhelmi) + Sun Mar 14 12:58:30 2004 Owen Taylor * glib/gmain.c: if _POLL_EMUL_H is defined, undefine diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index c13000d..086aa83 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,8 @@ +Sun Mar 14 13:23:36 2004 Owen Taylor + + * glib/gspawn.c: Use fork1() not fork for + G_THREADS_IMPL_SOLARIS. (#136971, Sebastian Wilhelmi) + Sun Mar 14 12:58:30 2004 Owen Taylor * glib/gmain.c: if _POLL_EMUL_H is defined, undefine diff --git a/glib/gspawn.c b/glib/gspawn.c index d6adcd1..2fd31b8 100644 --- a/glib/gspawn.c +++ b/glib/gspawn.c @@ -39,6 +39,17 @@ #include "glibintl.h" +/* With solaris threads, fork() duplicates all threads, which + * a) could cause unexpected side-effects, and b) is expensive. + * Once we remove support for solaris threads, the FORK1 #define + * should be removedl + */ +#ifdef G_THREADS_IMPL_SOLARIS +#define FORK1() fork1() +#else +#define FORK1() fork() +#endif + static gint g_execute (const gchar *file, gchar **argv, gchar **envp, @@ -1056,7 +1067,7 @@ fork_exec_with_pipes (gboolean intermediate_child, if (standard_error && !make_pipe (stderr_pipe, error)) goto cleanup_and_fail; - pid = fork (); + pid = FORK1 (); if (pid < 0) { @@ -1098,7 +1109,7 @@ fork_exec_with_pipes (gboolean intermediate_child, */ GPid grandchild_pid; - grandchild_pid = fork (); + grandchild_pid = FORK1 (); if (grandchild_pid < 0) {