Skip to content

Commit e4def74

Browse files
author
nagai
committed
* signal.c: revert last change.
* ruby.h: ditto. * eval.c: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@10373 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
1 parent 2c44e16 commit e4def74

File tree

4 files changed

+18
-136
lines changed

4 files changed

+18
-136
lines changed

ChangeLog

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
Sat Jun 24 06:35:00 2006 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
2+
3+
* signal.c: revert last change.
4+
5+
* ruby.h: ditto.
6+
7+
* eval.c: ditto.
8+
19
Thu Jun 22 11:52:02 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
210

311
* lib/net/http.rb (Net::HTTPResponse): duplicated error 501;

eval.c

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1342,15 +1342,6 @@ int
13421342
is_ruby_native_thread() {
13431343
return NATIVETHREAD_EQUAL(ruby_thid, NATIVETHREAD_CURRENT());
13441344
}
1345-
1346-
# ifdef HAVE_NATIVETHREAD_KILL
1347-
void
1348-
ruby_native_thread_kill(sig)
1349-
int sig;
1350-
{
1351-
NATIVETHREAD_KILL(ruby_thid, sig);
1352-
}
1353-
# endif
13541345
#endif
13551346

13561347
void

ruby.h

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -696,23 +696,17 @@ typedef pthread_t rb_nativethread_t;
696696
# define NATIVETHREAD_CURRENT() pthread_self()
697697
# define NATIVETHREAD_EQUAL(t1,t2) pthread_equal((t1),(t2))
698698
# define HAVE_NATIVETHREAD
699-
700-
# define NATIVETHREAD_KILL(th,sig) pthread_kill((th),(sig))
701-
# define HAVE_NATIVETHREAD_KILL
702699
#elif defined(_WIN32) || defined(_WIN32_WCE)
703700
typedef DWORD rb_nativethread_t;
704701
# define NATIVETHREAD_CURRENT() GetCurrentThreadId()
705702
# define NATIVETHREAD_EQUAL(t1,t2) ((t1) == (t2))
706703
# define HAVE_NATIVETHREAD
707704
#endif
708705
#ifdef HAVE_NATIVETHREAD
709-
int is_ruby_native_thread _((void));
706+
RUBY_EXTERN int is_ruby_native_thread();
710707
#else
711708
#define is_ruby_native_thread() (1)
712709
#endif
713-
#ifdef HAVE_NATIVETHREAD_KILL
714-
void ruby_native_thread_kill _((int));
715-
#endif
716710

717711
#if defined(__cplusplus)
718712
#if 0

signal.c

Lines changed: 9 additions & 120 deletions
Original file line numberDiff line numberDiff line change
@@ -304,7 +304,6 @@ static struct {
304304
int safe;
305305
} trap_list[NSIG];
306306
static rb_atomic_t trap_pending_list[NSIG];
307-
static char rb_trap_accept_nativethreads[NSIG];
308307
rb_atomic_t rb_trap_pending;
309308
rb_atomic_t rb_trap_immediate;
310309
int rb_prohibit_interrupt = 1;
@@ -336,23 +335,21 @@ ruby_signal(signum, handler)
336335
{
337336
struct sigaction sigact, old;
338337

339-
rb_trap_accept_nativethreads[signum] = 0;
340-
341338
sigact.sa_handler = handler;
342339
sigemptyset(&sigact.sa_mask);
343340
sigact.sa_flags = 0;
344-
# if defined(SA_RESTART)
341+
#if defined(SA_RESTART)
345342
/* All other signals but VTALRM shall restart restartable syscall
346343
VTALRM will cause EINTR to syscall if interrupted.
347344
*/
348345
if (signum != SIGVTALRM) {
349346
sigact.sa_flags |= SA_RESTART; /* SVR4, 4.3+BSD */
350347
}
351-
# endif
352-
# ifdef SA_NOCLDWAIT
348+
#endif
349+
#ifdef SA_NOCLDWAIT
353350
if (signum == SIGCHLD && handler == SIG_IGN)
354351
sigact.sa_flags |= SA_NOCLDWAIT;
355-
# endif
352+
#endif
356353
sigaction(signum, &sigact, &old);
357354
return old.sa_handler;
358355
}
@@ -364,46 +361,9 @@ posix_signal(signum, handler)
364361
{
365362
ruby_signal(signum, handler);
366363
}
367-
368-
# ifdef HAVE_NATIVETHREAD
369-
static sighandler_t
370-
ruby_nativethread_signal(signum, handler)
371-
int signum;
372-
sighandler_t handler;
373-
{
374-
sighandler_t old;
375-
376-
old = ruby_signal(signum, handler);
377-
rb_trap_accept_nativethreads[signum] = 1;
378-
return old;
379-
}
380-
381-
void
382-
posix_nativethread_signal(signum, handler)
383-
int signum;
384-
sighandler_t handler;
385-
{
386-
ruby_nativethread_signal(signum, handler);
387-
}
388-
# endif
389-
390-
#else /* !POSIX_SIGNAL */
391-
#define ruby_signal(sig,handler) (rb_trap_accept_nativethreads[sig] = 0, signal((sig),(handler)))
392-
393-
# ifdef HAVE_NATIVETHREAD
394-
static sighandler_t
395-
ruby_nativethread_signal(signum, handler)
396-
int signum;
397-
sighandler_t handler;
398-
{
399-
sighandler_t old;
400-
401-
old = signal(signum, handler);
402-
rb_trap_accept_nativethreads[signum] = 1;
403-
return old;
404-
}
405-
# endif
406-
#endif /* POSIX_SIGNAL */
364+
#else
365+
#define ruby_signal(sig,handler) signal((sig),(handler))
366+
#endif
407367

408368
static void signal_exec _((int sig));
409369
static void
@@ -434,36 +394,11 @@ signal_exec(sig)
434394
break;
435395
}
436396
}
437-
else if (trap_list[sig].cmd == Qundef) {
438-
rb_thread_signal_exit();
439-
}
440397
else {
441398
rb_thread_trap_eval(trap_list[sig].cmd, sig, trap_list[sig].safe);
442399
}
443400
}
444401

445-
#if defined(HAVE_NATIVETHREAD) && defined(HAVE_NATIVETHREAD_KILL)
446-
static void
447-
sigsend_to_ruby_thread(int sig)
448-
{
449-
# ifdef HAVE_SIGPROCMASK
450-
sigset_t mask, old_mask;
451-
# else
452-
int mask, old_mask;
453-
# endif
454-
455-
# ifdef HAVE_SIGPROCMASK
456-
sigfillset(&mask);
457-
sigprocmask(SIG_BLOCK, &mask, &old_mask);
458-
# else
459-
mask = sigblock(~0);
460-
sigsetmask(mask);
461-
# endif
462-
463-
ruby_native_thread_kill(sig);
464-
}
465-
#endif
466-
467402
static RETSIGTYPE sighandler _((int));
468403
static RETSIGTYPE
469404
sighandler(sig)
@@ -479,22 +414,11 @@ sighandler(sig)
479414
rb_bug("trap_handler: Bad signal %d", sig);
480415
}
481416

482-
#if defined(HAVE_NATIVETHREAD) && defined(HAVE_NATIVETHREAD_KILL)
483-
if (!is_ruby_native_thread() && !rb_trap_accept_nativethreads[sig]) {
484-
sigsend_to_ruby_thread(sig);
485-
return;
486-
}
487-
#endif
488-
489417
#if !defined(BSD_SIGNAL) && !defined(POSIX_SIGNAL)
490-
if (rb_trap_accept_nativethreads[sig]) {
491-
ruby_nativethread_signal(sig, sighandler);
492-
} else {
493-
ruby_signal(sig, sighandler);
494-
}
418+
ruby_signal(sig, sighandler);
495419
#endif
496420

497-
if (trap_list[sig].cmd == 0 && ATOMIC_TEST(rb_trap_immediate)) {
421+
if (ATOMIC_TEST(rb_trap_immediate)) {
498422
IN_MAIN_CONTEXT(signal_exec, sig);
499423
ATOMIC_SET(rb_trap_immediate, 1);
500424
}
@@ -510,13 +434,6 @@ static RETSIGTYPE
510434
sigbus(sig)
511435
int sig;
512436
{
513-
#if defined(HAVE_NATIVETHREAD) && defined(HAVE_NATIVETHREAD_KILL)
514-
if (!is_ruby_native_thread() && !rb_trap_accept_nativethreads[sig]) {
515-
sigsend_to_ruby_thread(sig);
516-
return;
517-
}
518-
#endif
519-
520437
rb_bug("Bus Error");
521438
}
522439
#endif
@@ -527,13 +444,6 @@ static RETSIGTYPE
527444
sigsegv(sig)
528445
int sig;
529446
{
530-
#if defined(HAVE_NATIVETHREAD) && defined(HAVE_NATIVETHREAD_KILL)
531-
if (!is_ruby_native_thread() && !rb_trap_accept_nativethreads[sig]) {
532-
sigsend_to_ruby_thread(sig);
533-
return;
534-
}
535-
#endif
536-
537447
rb_bug("Segmentation fault");
538448
}
539449
#endif
@@ -862,27 +772,6 @@ install_sighandler(signum, handler)
862772
}
863773
}
864774

865-
#ifdef HAVE_NATIVETHREAD
866-
static void
867-
install_nativethread_sighandler(signum, handler)
868-
int signum;
869-
sighandler_t handler;
870-
{
871-
sighandler_t old;
872-
int old_st;
873-
874-
old_st = rb_trap_accept_nativethreads[signum];
875-
old = ruby_nativethread_signal(signum, handler);
876-
if (old != SIG_DFL) {
877-
if (old_st) {
878-
ruby_nativethread_signal(signum, old);
879-
} else {
880-
ruby_signal(signum, old);
881-
}
882-
}
883-
}
884-
#endif
885-
886775
static void
887776
init_sigchld(sig)
888777
int sig;

0 commit comments

Comments
 (0)