This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: FD_SETSIZE and sizeof(fd_set)


On Jun 23 11:36, Steven Bardwell wrote:
> > >
> > > Here is a "program" that shows the issue I am worried about. It is so simple
> > that I must be overlooking something really obvious:
> > >
> > > #include <stdio.h>
> > > #undef FD_SETSIZE
> > > #define FD_SETSIZE 256
> > > #include <sys/types.h>
> > > #include <sys/select.h>
> > >
> > > main()
> > > {
> > >         fd_set rfds;
> > >         fprintf(stdout, "FD_SETSIZE=%d\n", FD_SETSIZE);
> > >         fprintf(stdout, "sizeof(fd_set)=%d\n", sizeof(fd_set));
> > > }
> > >
> > > Steve Bardwell
> > >
> > >
> > 
> > I don't know if this is still the case, but when I looked into this years ago I
> > found that it was not possible to change the size of the fd set in linux, it's
> > fixed at 1024 (generally), unless you rebuild the kernel.
> > 
> > Secondly, in the windows api, their version of an fd_set is more like a poll()
> > implementation, you can fake out any size you want since the size of the
> > array is the first entry.
> > 
> > I can't speak for the cygwin implementations, but if they offer poll() or,
> > better, epoll(), use those.
> > 
> > -lee
> 
> For what it's worth, this 'program' works as expected in SUA. The size
> of the fd_set changes depending on the value of FD_SETSIZE.

In my case it prints 'sizeof(fd_set)=8', which is correct.  For
historical reasons and an ill-advised compatibility with old cruft,
fd_set is an array of bit per descriptor.  8 * 8 = 256.


Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Maintainer                 cygwin AT cygwin DOT com
Red Hat

Attachment: signature.asc
Description: PGP signature


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]