Defining TEVENT_NUM_SIGNALS as (2 * SIGRTMIN) so that SIGNAL-based AIO handling on FreeBSD works

Jeremy Allison jra at samba.org
Tue Dec 4 10:10:54 MST 2012


On Tue, Dec 04, 2012 at 08:20:11AM +0100, Stefan (metze) Metzmacher wrote:
> Am 03.12.2012 20:41, schrieb Jeremy Allison:
> > On Fri, Nov 30, 2012 at 03:06:18PM -0800, Richard Sharpe wrote:
> >> Hi folks,
> >>
> >> I am canvassing opinions on whether there is a better way to do this.
> >>
> >> Currently, the default AIO stuff in Samba does not work on FreeBSD
> >> because TEVENT_NUM_SIGNALS is set to 64 and there is a check to see
> >> that the signal number used by the AIO stuff does not exceed this
> >> number.
> >>
> >> However, if RT_SIGNAL_AIO Is not set, then:
> >>
> >> /* The signal we'll use to signify aio done. */
> >> #ifndef RT_SIGNAL_AIO
> >> #define RT_SIGNAL_AIO   (SIGRTMIN+3)
> >> #endif
> >>
> >> in source3/smbd/aio.c but on FreeBSD
> >>
> >> /usr/include/sys/signal.h:#define       SIGRTMIN        65
> >>
> >> So, things do not work.
> >>
> >> One solution is to define TEVENT_NUM_SIGNALS as 2 * SIGRTMIN ...
> >>
> >> On Linux SIGRTMIN is 32.
> >>
> >> Can anyone suggest a better fix?
> > 
> > Took a quick look at this and at least on Linux there's
> > 
> > #define SIGRTMAX
> > 
> > which looks like it might be part of the POSIX-RT standard.
> > 
> > Is this defined on *BSD ? If so, what is it defined to ?
> 
> At least this doesn't work on Linux.
> 
> https://gitweb.samba.org/?p=metze/samba/wip.git;a=commitdiff;h=9a92ca3b637d41709ded56a5161ff9ff7505f677
> 
> As SIGRTMAX is not a const value.

Yes, I already discovered that :-). I'm still thinking
about how to fix this..

Jeremy.


More information about the samba-technical mailing list