Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 21 Nov 2010 14:35:32 +0100
From:      Jilles Tjoelker <jilles@stack.nl>
To:        Gavin Atkinson <gavin@FreeBSD.org>
Cc:        svn-src-stable@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, svn-src-stable-8@freebsd.org
Subject:   Re: svn commit: r215572 - stable/8/sys/sys
Message-ID:  <20101121133531.GB17293@stack.nl>
In-Reply-To: <alpine.LNX.2.00.1011211241060.2142@ury.york.ac.uk>
References:  <201011201646.oAKGkGW7019085@svn.freebsd.org> <alpine.LNX.2.00.1011211241060.2142@ury.york.ac.uk>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, Nov 21, 2010 at 12:42:24PM +0000, Gavin Atkinson wrote:
> On Sat, 20 Nov 2010, Jilles Tjoelker wrote:
> > Author: jilles
> > Date: Sat Nov 20 16:46:16 2010
> > New Revision: 215572
> > URL: http://svn.freebsd.org/changeset/base/215572

> > Log:
> >   MFC r215183: Make POLL_ERR and POLL_HUP different.

> >   The kernel currently does not generate any of the POLL_* constants, but
> >   some applications use them and break if they are not all distinct.

> Is this a good idea to merge to a stable branch?  Presumably some of those 
> same applications will now break due to the constants changing?

The typical usage appears to be
	switch (si->si_code) {
		case POLL_IN: ...; break;
		...
		case POLL_ERR: ...; break;
		case POLL_HUP: ...; break;
	}

This doesn't compile if some of the constants are equal.

Boost has worked around FreeBSD's weirdness by placing a
  #if defined(POLL_ERR) && defined(POLL_HUP) && (POLL_ERR - POLL_HUP)
around the case POLL_HUP. This #if does not hurt systems that have the
POLL_* values all distinct.

Given that the kernel does not generate these anyway, I considered this
safe enough. True SIGIO, which is similar to SIGPOLL, always puts
si_code=SI_KERNEL.

-- 
Jilles Tjoelker



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20101121133531.GB17293>