[LTP] question about signal handling in tst_sig()

Cyril Hrubis chrubis@suse.cz
Mon Mar 14 14:43:21 CET 2016


Hi!
> > Looks like in tst_sig(), if _SC_SIGRT_MIN defined, all realtime signals
> > won't be set an handler:
> > 
> > 125 #ifdef _SC_SIGRT_MIN
> > 126                 if (sig >= sigrtmin && sig <= sigrtmax)
> > 127                         continue;
> > 128 #endif
> > 
> > but, if it wasn't defined, then all realtime signals will be set an
> > handler:
> > 
> > 134 #if !defined(_SC_SIGRT_MIN) && defined(__SIGRTMIN) &&
> > defined(__SIGRTMAX)
> > 135                         /* Ignore all real-time signals */
> > 136                 case __SIGRTMIN:
> > 137                 case __SIGRTMIN + 1:
> > ...

And also there is a break down after the long list of cases.


So it looks like:

* if _SC_SIGRT_MIN is defined we have a POSIX compilant system
  and we skip realtime signals in the if at line 125.

* Otherwise if system is not POSIX compilant but __SIGRTMIN and
  __SIGRTMAX is defined, we skip them in the hack in the switch()

  this is possibly workaround for old glibc without _SC_SIGRT_MIN
  support

> > is that correct, or I missed something here? 
> 
> The loop goes over signal numbers from 1 to NSIG (which is defined in
> system headers). Supposedly when _SC_SIGRT_MIN is not defined the system
> does not support realtime signals and the NSIG has value of the highest
> allocated (non-realtime) signal number.
> 
> -- 
> Cyril Hrubis
> chrubis@suse.cz
> 
> -- 
> Mailing list info: http://lists.linux.it/listinfo/ltp

-- 
Cyril Hrubis
chrubis@suse.cz


More information about the ltp mailing list