Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 9 Nov 1998 11:26:16 -0700
From:      Nate Williams <nate@mt.sri.com>
To:        Marc Slemko <marcs@znep.com>
Cc:        Nate Williams <nate@mt.sri.com>, hackers@FreeBSD.ORG
Subject:   Re: Supporting more than FD_SETSIZE fd's
Message-ID:  <199811091826.LAA05253@mt.sri.com>
In-Reply-To: <Pine.BSF.4.05.9811091006510.8174-100000@alive.znep.com>
References:  <199811091734.KAA04752@mt.sri.com> <Pine.BSF.4.05.9811091006510.8174-100000@alive.znep.com>

next in thread | previous in thread | raw e-mail | index | archive | help
> > I need to support more than the default 255 FD's in an application (the
> > JDK for what it's worth).
...
> > I looked through the code in Apache, and I don't see how it does this,
> > since I never saw any re-definition of FD_SETSIZE, or use of anything
> > other than fd_setsize.  (Although, I did see mention of FD_SETSIZE quite
> > a bit in the comments.)
> 
> Apache doesn't use select() on high numbered descriptors so it doesn't
> matter.

How does it determine if there is data on those FD's w/out select?  I
would think that if you have more than 255 active FD's (pretty common)
then you'd have a problem.

> FD_SETSIZE doesn't limit the number of descriptors, it just limits the
> highest descriptor you can pass to select().  

Right, hence my question on how other applications deal with the
problem, since select doesn't have inherent limitation.

> There are various possible workarounds:
> 
> - use poll().  Only on 3.0 unfortunately.
> 
> - on 3.0, FD_SETSIZE defaults to 1024.

I'm on 2.2.*

> - redefine FD_SETSIZE before including sys/types.h.  This may seem to be a
> pain, but in most large projects you should have some common header files
> you can use for that anyway.  This doesn't fix any libraries that you use
> though, which may use select() internally with a small FD_SETSIZE.

No external libraries are used except for Motif.  I'm not sure if it
uses Select, but I doubt it.  In any case, I'm still defaulting to a
larger limit, which is still not a great solution.

> Note that Solaris 2.6 is limited to a FD_SETSIZE of 256 (which can't be
> changed), so they must have some way around that.  Is likely using poll()
> though.

Solaris/Linux both use poll, which again doesn't exist on 2.2.


Nate

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



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