[前][次][番号順一覧][スレッド一覧]

ruby-changes:5988

From: nobu <ko1@a...>
Date: Sat, 21 Jun 2008 15:55:14 +0900 (JST)
Subject: [ruby-changes:5988] Ruby:r17496 (trunk): * configure.in: check if fork works with pthread.

nobu	2008-06-21 15:54:58 +0900 (Sat, 21 Jun 2008)

  New Revision: 17496

  Modified files:
    trunk/ChangeLog
    trunk/configure.in

  Log:
    * configure.in: check if fork works with pthread.


  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=17496&r2=17495&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/configure.in?r1=17496&r2=17495&diff_format=u

Index: configure.in
===================================================================
--- configure.in	(revision 17495)
+++ configure.in	(revision 17496)
@@ -766,6 +766,64 @@
 AC_DEFINE_UNQUOTED([RUBY_LONGJMP(env,val)], [${setjmp_prefix}longjmp(env,val)])
 AC_DEFINE_UNQUOTED(RUBY_JMP_BUF, ${setjmp_sigmask+${setjmp_prefix}}jmp_buf)
 
+
+case $target_os in
+*bsd*|darwin*)
+AC_CACHE_CHECK([if fork works with pthread], rb_cv_fork_with_pthread,
+[AC_TRY_RUN([
+#include <stdlib.h>
+#include <unistd.h>
+#include <pthread.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <signal.h>
+
+void *
+thread_func(void *dmy)
+{
+    return dmy;
+}
+
+void *use_threads(void)
+{
+    pthread_t tid;
+    if (pthread_create(&tid, 0, thread_func, 0) != 0) {
+	exit(1);
+    }
+    if (pthread_join(tid, 0) != 0) {
+	exit(1);
+    }
+}
+
+int
+main(int argc, char *argv[])
+{
+    pid_t pid;
+    use_threads();
+    pid = fork();
+
+    if (pid) {
+	int loc;
+	sleep(1);
+	if (waitpid(pid, &loc, WNOHANG) == 0) {
+	    kill(pid, SIGKILL);
+	    return 1;
+	}
+    }
+    else {
+	use_threads();
+    }
+
+    return 0;
+}]
+	rb_cv_fork_with_pthread=yes,
+	rb_cv_fork_with_pthread=no,
+	rb_cv_fork_with_pthread=yes)])
+    ;;
+esac
+test x$rb_cv_fork_with_pthread = xyes || AC_DEFINE(CANNOT_FORK_WITH_PTHREAD)
+
 AC_ARG_ENABLE(setreuid,
        [  --enable-setreuid       use setreuid()/setregid() according to need even if obsolete.],
        [use_setreuid=$enableval])
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 17495)
+++ ChangeLog	(revision 17496)
@@ -1,3 +1,7 @@
+Sat Jun 21 15:54:55 2008  Nobuyoshi Nakada  <nobu@r...>
+
+	* configure.in: check if fork works with pthread.
+
 Sat Jun 21 15:31:09 2008  Nobuyoshi Nakada  <nobu@r...>
 
 	* tool/make-snapshot: ported to ruby.

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]