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