From owner-freebsd-hackers Mon Nov 9 10:29:52 1998 Return-Path: Received: (from majordom@localhost) by hub.freebsd.org (8.8.8/8.8.8) id KAA03877 for freebsd-hackers-outgoing; Mon, 9 Nov 1998 10:29:52 -0800 (PST) (envelope-from owner-freebsd-hackers@FreeBSD.ORG) Received: from elvis.vnet.net (elvis.vnet.net [166.82.1.5]) by hub.freebsd.org (8.8.8/8.8.8) with ESMTP id KAA03867 for ; Mon, 9 Nov 1998 10:29:51 -0800 (PST) (envelope-from rivers@dignus.com) Received: from dignus.com (ponds.vnet.net [166.82.177.48]) by elvis.vnet.net (8.8.8/8.8.4) with ESMTP id NAA13895; Mon, 9 Nov 1998 13:29:22 -0500 (EST) Received: from lakes.dignus.com (lakes [10.0.0.3]) by dignus.com (8.8.8/8.8.5) with ESMTP id OAA22308; Mon, 9 Nov 1998 14:15:56 -0500 (EST) Received: (from rivers@localhost) by lakes.dignus.com (8.8.8/8.6.9) id NAA24229; Mon, 9 Nov 1998 13:30:12 -0500 (EST) Date: Mon, 9 Nov 1998 13:30:12 -0500 (EST) From: Thomas David Rivers Message-Id: <199811091830.NAA24229@lakes.dignus.com> To: marcs@znep.com, nate@mt.sri.com Subject: Re: Supporting more than FD_SETSIZE fd's Cc: hackers@FreeBSD.ORG In-Reply-To: <199811091826.LAA05253@mt.sri.com> Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG > > > > 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. I believe you'll find that X11 (on which Motif is based) does use select(). - Dave Rivers - To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message