@@ -304,7 +304,6 @@ static struct {
304
304
int safe ;
305
305
} trap_list [NSIG ];
306
306
static rb_atomic_t trap_pending_list [NSIG ];
307
- static char rb_trap_accept_nativethreads [NSIG ];
308
307
rb_atomic_t rb_trap_pending ;
309
308
rb_atomic_t rb_trap_immediate ;
310
309
int rb_prohibit_interrupt = 1 ;
@@ -336,23 +335,21 @@ ruby_signal(signum, handler)
336
335
{
337
336
struct sigaction sigact , old ;
338
337
339
- rb_trap_accept_nativethreads [signum ] = 0 ;
340
-
341
338
sigact .sa_handler = handler ;
342
339
sigemptyset (& sigact .sa_mask );
343
340
sigact .sa_flags = 0 ;
344
- # if defined(SA_RESTART )
341
+ #if defined(SA_RESTART )
345
342
/* All other signals but VTALRM shall restart restartable syscall
346
343
VTALRM will cause EINTR to syscall if interrupted.
347
344
*/
348
345
if (signum != SIGVTALRM ) {
349
346
sigact .sa_flags |= SA_RESTART ; /* SVR4, 4.3+BSD */
350
347
}
351
- # endif
352
- # ifdef SA_NOCLDWAIT
348
+ #endif
349
+ #ifdef SA_NOCLDWAIT
353
350
if (signum == SIGCHLD && handler == SIG_IGN )
354
351
sigact .sa_flags |= SA_NOCLDWAIT ;
355
- # endif
352
+ #endif
356
353
sigaction (signum , & sigact , & old );
357
354
return old .sa_handler ;
358
355
}
@@ -364,46 +361,9 @@ posix_signal(signum, handler)
364
361
{
365
362
ruby_signal (signum , handler );
366
363
}
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
407
367
408
368
static void signal_exec _ ((int sig ));
409
369
static void
@@ -434,36 +394,11 @@ signal_exec(sig)
434
394
break ;
435
395
}
436
396
}
437
- else if (trap_list [sig ].cmd == Qundef ) {
438
- rb_thread_signal_exit ();
439
- }
440
397
else {
441
398
rb_thread_trap_eval (trap_list [sig ].cmd , sig , trap_list [sig ].safe );
442
399
}
443
400
}
444
401
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
-
467
402
static RETSIGTYPE sighandler _ ((int ));
468
403
static RETSIGTYPE
469
404
sighandler (sig )
@@ -479,22 +414,11 @@ sighandler(sig)
479
414
rb_bug ("trap_handler: Bad signal %d" , sig );
480
415
}
481
416
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
-
489
417
#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 );
495
419
#endif
496
420
497
- if (trap_list [ sig ]. cmd == 0 && ATOMIC_TEST (rb_trap_immediate )) {
421
+ if (ATOMIC_TEST (rb_trap_immediate )) {
498
422
IN_MAIN_CONTEXT (signal_exec , sig );
499
423
ATOMIC_SET (rb_trap_immediate , 1 );
500
424
}
@@ -510,13 +434,6 @@ static RETSIGTYPE
510
434
sigbus (sig )
511
435
int sig ;
512
436
{
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
-
520
437
rb_bug ("Bus Error" );
521
438
}
522
439
#endif
@@ -527,13 +444,6 @@ static RETSIGTYPE
527
444
sigsegv (sig )
528
445
int sig ;
529
446
{
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
-
537
447
rb_bug ("Segmentation fault" );
538
448
}
539
449
#endif
@@ -862,27 +772,6 @@ install_sighandler(signum, handler)
862
772
}
863
773
}
864
774
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
-
886
775
static void
887
776
init_sigchld (sig )
888
777
int sig ;
0 commit comments