Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 27 Jul 2000 17:47:14 -0400 (EDT)
From:      Andrew Gallatin <gallatin@cs.duke.edu>
To:        Mark Abene <phiber@radicalmedia.com>
Cc:        "David O'Brien" <obrien@FreeBSD.ORG>, freebsd-alpha@FreeBSD.ORG
Subject:   Re: select problems ( was Re: weird XFree86 3.3.6 behavior...)
Message-ID:  <14720.44407.464338.134415@grasshopper.cs.duke.edu>
In-Reply-To: <20000727174257.A19445@radicalmedia.com>
References:  <20000727022930.A9638@radicalmedia.com> <20000727000033.A44502@dragon.nuxi.com> <20000727035128.A9982@radicalmedia.com> <20000727164833.A18644@radicalmedia.com> <14720.41641.666813.600170@grasshopper.cs.duke.edu> <20000727174257.A19445@radicalmedia.com>

next in thread | previous in thread | raw e-mail | index | archive | help

Mark Abene writes:
 > On Thu, Jul 27, 2000 at 05:06:55PM -0400, Andrew Gallatin wrote:
 > 
 > They're using real fd_sets as args to select, however it appears they are 
 > doing mask arithmetic with ints.  This may be the problem, since an fd_set
 > on Alpha is 64 bits.  I'll try a little experiment...

That sounds suspicious..

 > 
 > What was the nature of this bug you mention?  And yes, I built X from the

See the CVS logs for Peter's commit to sys/types.h and
kern/sys_generic.c on Feb. 20th:

	Fix select(2) for the Alpha. (!!)  It was never returning true for
	fd's in the range of 32-63, 96-127 etc.  The first problem was the
	FD_*() macros were shifting a 32 bit integer "1" left by more than
	32 bits.  The same problem happened in selscan().  ffs() also takes
	an int argument and causes failure.  For cases where int == long
	(ie: the usual case for x86, but not always as gcc can have long
	being a 64 bit quantity) ffs() could be used.

Drew


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-alpha" in the body of the message




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