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

ruby-changes:2566

From: ko1@a...
Date: 30 Nov 2007 23:50:08 +0900
Subject: [ruby-changes:2566] matz - Ruby:r14057 (trunk): * signal.c (ruby_signal): use SA_SIGINFO if available.

matz	2007-11-30 23:49:45 +0900 (Fri, 30 Nov 2007)

  New Revision: 14057

  Modified files:
    trunk/ChangeLog
    trunk/include/ruby/intern.h
    trunk/process.c
    trunk/signal.c

  Log:
    * signal.c (ruby_signal): use SA_SIGINFO if available.
      [ ruby-Patches-6418 ]

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=14057&r2=14056
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/signal.c?r1=14057&r2=14056
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/process.c?r1=14057&r2=14056
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/include/ruby/intern.h?r1=14057&r2=14056

Index: include/ruby/intern.h
===================================================================
--- include/ruby/intern.h	(revision 14056)
+++ include/ruby/intern.h	(revision 14057)
@@ -472,7 +472,7 @@
 void rb_gc_mark_trap_list(void);
 #ifdef POSIX_SIGNAL
 #define posix_signal ruby_posix_signal
-void posix_signal(int, RETSIGTYPE (*)(int));
+RETSIGTYPE (*posix_signal(int, RETSIGTYPE (*)(int)))(int);
 #endif
 void ruby_sig_finalize(void);
 void rb_trap_exit(void);
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 14056)
+++ ChangeLog	(revision 14057)
@@ -1,3 +1,8 @@
+Fri Nov 30 23:48:07 2007  Yukihiro Matsumoto  <matz@r...>
+
+	* signal.c (ruby_signal): use SA_SIGINFO if available.
+	  [ ruby-Patches-6418 ]
+
 Fri Nov 30 22:52:54 2007  Yukihiro Matsumoto  <matz@r...>
 
 	* signal.c (trap_signm): SIGVTALRM no longer used for green
Index: process.c
===================================================================
--- process.c	(revision 14056)
+++ process.c	(revision 14057)
@@ -1668,6 +1668,10 @@
 
 #if defined(sun)
 #define signal(a,b) sigset(a,b)
+#else
+# if defined(POSIX_SIGNAL)
+#  define signal(a,b) posix_signal(a,b)
+# endif
 #endif
 
 void
Index: signal.c
===================================================================
--- signal.c	(revision 14056)
+++ signal.c	(revision 14057)
@@ -414,9 +414,15 @@
 
     rb_trap_accept_nativethreads[signum] = 0;
 
+    sigemptyset(&sigact.sa_mask);
+#ifdef SA_SIGINFO
+    sigact.sa_sigaction = (void (*)(int, siginfo_t*, void*))handler;
+    sigact.sa_flags = SA_SIGINFO;
+#else
     sigact.sa_handler = handler;
-    sigemptyset(&sigact.sa_mask);
     sigact.sa_flags = 0;
+#endif
+
 #ifdef SA_NOCLDWAIT
     if (signum == SIGCHLD && handler == SIG_IGN)
 	sigact.sa_flags |= SA_NOCLDWAIT;
@@ -425,7 +431,7 @@
     return old.sa_handler;
 }
 
-void
+sighandler_t
 posix_signal(int signum, sighandler_t handler)
 {
     ruby_signal(signum, handler);

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

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