public inbox for cygwin@cygwin.com
 help / color / mirror / Atom feed
From: Corinna Vinschen <corinna-cygwin@cygwin.com>
To: cygwin@cygwin.com
Subject: Re: Typo in <sys/select.h>?
Date: Wed, 6 Jul 2022 09:42:56 +0200	[thread overview]
Message-ID: <YsU9APd87h5vUJtZ@calimero.vinschen.de> (raw)
In-Reply-To: <1c3256fd-ed7b-8ee3-adcd-b1d8ef2fff84@cornell.edu>

On Jul  5 17:51, Ken Brown wrote:
> On 7/5/2022 10:13 AM, Lavrentiev, Anton (NIH/NLM/NCBI) [C] via Cygwin wrote:
> > Hi,
> > 
> > There's some inconsistency between <sys/select.h> and <sys/param.h>:
> > 
> > sys/select.h has this:
> > -----------------------
> > /*
> >   * Select uses bit masks of file descriptors in longs.
> >   * These macros manipulate such bit fields (the filesystem macros use chars).
> >   * FD_SETSIZE may be defined by the user, but the default here
> >   * should be >= NOFILE (param.h).
> >   */
> > #ifndef FD_SETSIZE
> > #define FD_SETSIZE      64
> > #endif
> > ----------------------
> 
> I think Cygwin's FD macros are based on FreeBSD.  The most recent
> <sys/select.h> on FreeBSD says:
> 
> ---------------------------------------------------------------------
> /*
>  * Select uses bit masks of file descriptors in longs.  These macros
>  * manipulate such bit fields (the filesystem macros use chars).
>  * FD_SETSIZE may be defined by the user, but the default here should
>  * be enough for most uses.
>  */
> #ifndef	FD_SETSIZE
> #define	FD_SETSIZE	1024
> #endif
> ---------------------------------------------------------------------
> 
> NOFILE isn't mentioned.  Maybe Cygwin (or really newlib) should also remove
> the reference to NOFILE and, perhaps, change the default FD_SETSIZE to 1024.

NOFILE is the old BSD variant of OPEN_MAX.  In Cygwin it's defined a bit
weird because the values of NOFILE and OPEN_MAX don't correspond. While
NOFILE is the arbitrary value 8192 (whereever I took that from back in
2003), OPEN_MAX is __OPEN_MAX which is the historical arbitrary value
3200.

Linux doesn't define OPEN_MAX (X11 does for some reason) and NOFILE is
based on OPEN_AX, i. e.

  #if !defined NOFILE && defined OPEN_MAX
  # define NOFILE         OPEN_MAX
  #endif

We should probably do the same on the master branch.  In theory there
should be no source anymore actually requiring on of these macros.

> But Cygwin isn't the only newlib target, so there might be good reasons to
> keep it at 64.
> 
> Corinna, WDYT?  Or should the discussion be moved to the newlib list?

I guess we can change FD_SETSIZE to 1024 as on Linux, albeit this has no
real meaning on Cygwin.  On Linux, select(2) is really only capable to
handle file descriptors numbers up to descriptor number 1023, but Cygwin
doesn't have this problem.  FD_SETSIZE == 64 was only something to save
space.  The bigger FD_SETSIZE, the bigger are the default fd_sets,
something you don't want on small targets.

So, yeah, something like

  #ifndef FD_SETSIZE
  # ifdef __CYGWIN__ 
  #  define FD_SETSIZE      1024
  # else
  #  define FD_SETSIZE      64
  # endif
  #endif

would be ok for master.


Corinna

  reply	other threads:[~2022-07-06  7:43 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-05 14:13 Lavrentiev, Anton (NIH/NLM/NCBI) [C]
2022-07-05 14:55 ` Andrey Repin
2022-07-05 21:51 ` Ken Brown
2022-07-06  7:42   ` Corinna Vinschen [this message]
2022-07-06 14:01     ` Jon Turney
2022-07-06 14:15       ` Corinna Vinschen
2022-07-06 14:22         ` Corinna Vinschen
2022-07-05 15:11 Lavrentiev, Anton (NIH/NLM/NCBI) [C]
2022-07-06 13:19 Lavrentiev, Anton (NIH/NLM/NCBI) [C]
2022-07-06 14:17 ` Corinna Vinschen
2022-07-06 14:17 Lavrentiev, Anton (NIH/NLM/NCBI) [C]
2022-07-06 14:26 Lavrentiev, Anton (NIH/NLM/NCBI) [C]
2022-07-06 15:07 ` Corinna Vinschen
2022-07-06 15:57 Lavrentiev, Anton (NIH/NLM/NCBI) [C]
2022-07-06 17:03 ` Ken Brown

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=YsU9APd87h5vUJtZ@calimero.vinschen.de \
    --to=corinna-cygwin@cygwin.com \
    --cc=cygwin@cygwin.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).