Re: FD_SETSIZE on Linux?

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: FD_SETSIZE on Linux?
Дата
Msg-id 13030.1410304861@sss.pgh.pa.us
обсуждение исходный текст
Ответ на FD_SETSIZE on Linux?  (Thom Brown <thom@linux.com>)
Ответы Re: FD_SETSIZE on Linux?  (Thom Brown <thom@linux.com>)
Список pgsql-hackers
Thom Brown <thom@linux.com> writes:
> I find this in pgbench.c:

> #ifdef FD_SETSIZE
> #define MAXCLIENTS      (FD_SETSIZE - 10)
> #else
> #define MAXCLIENTS      1024
> #endif

FD_SETSIZE is supposed to be defined, according to the POSIX spec:
   The <sys/select.h> header shall define the following symbolic constant,   which shall have a value suitable for use
in#if preprocessing directives:
 
FD_SETSIZEMaximum number of file descriptors in an fd_set structure.

It looks like Linux sets it to 1024.  On RHEL6, at least, I find this:

$ grep -r FD_SETSIZE /usr/include
/usr/include/linux/posix_types.h:#undef __FD_SETSIZE
/usr/include/linux/posix_types.h:#define __FD_SETSIZE   1024
...
/usr/include/sys/select.h:#define       FD_SETSIZE              __FD_SETSIZE
...

> #ifdef WIN32
> #define FD_SETSIZE 1024                 /* set before winsock2.h is included */
> #endif   /* ! WIN32 */

Windows probably hasn't got sys/select.h at all, so it may not provide
this symbol.

Interestingly, it looks like POSIX also requires <sys/time.h> to define
FD_SETSIZE.  I wonder whether Windows has that header?  It'd definitely
be better to get this symbol from the system than assume 1024 will work.
        regards, tom lane



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Tomas Vondra
Дата:
Сообщение: Re: bad estimation together with large work_mem generates terrible slow hash joins
Следующее
От: Kyotaro HORIGUCHI
Дата:
Сообщение: Re: Escaping from blocked send() reprised.