On Sun, 10 Feb 2002, Daniel Eischen wrote:

> On Mon, 11 Feb 2002, Bruce Evans wrote:
> > <sys/signal.h> includes <machine/signal.h> for the normal namespace
> > pollution that was needed to use sigreturn(2) (except sigreturn(2)
> > itself isn't actually declared anywhere).  Including <sys/ucontext.h>
> > gives the corresponding namespace pollution for using the current
> > sigreturn(2).  This is probably a mistake.  (Don't believe the
> > sigreturn man page; it documents osigreturn(2) for the i386 only.)
> > Programs shouldn't have any problems with this, since they should
> > define _POSIX_SOURCE if they only want the POSIX namespace ;-).
>
> Poking about on a Solaris 8 system shows that they have a
> <ucontext.h> that defines the {get,set,make,swap}context
> prototypes.  <ucontext.h> also includes <sys/ucontext.h>
> to get the definitions for ucontext_t.

<sys/ucontext.h> is just as nonstandard as <machine/ucontext.h>.

> Under FreeBSD, <ucontext.h> is a link to <sys/ucontext.h>,
> which both declare ucontext_t and {get,set,make,swap}context.

The link part is intentional.  We have to have <sys/ucontext.h> for
use in the kernel, so it is simpler not to have a separate user
header.  The only advantage of the Solaris implementation is that
it punishes applications that include the nonstandard header.

> What do you recommend we do?  Should we not include <sys/ucontext.h>
> from <sys/signal.h>, or do what Solaris does, or just leave
> everything as is?

Don't include <sys/ucontext.h> from <sys/signal.h>, and fix whatever
breaks.  I think applications that use the new sigreturn can be required
to include both <signal.h> and <ucontext.h>.  There should be fewer
of them than there used to be -- they can now use setcontext().  The
old sigcontext/sigreturn stuff should be cleaned up too (don't export
it to userland).

Bruce


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to