]> git.eshelyaron.com Git - emacs.git/commit
Allow the use of poll instead of select feature/more-fds
authorRobert Pluim <rpluim@gmail.com>
Wed, 4 May 2022 15:09:07 +0000 (17:09 +0200)
committerRobert Pluim <rpluim@gmail.com>
Thu, 5 May 2022 17:30:15 +0000 (19:30 +0200)
commit2087e5eb2bf6cfefe74b6b589c215c2144ed9fb0
tree27b4865f176452535ec02666b16331ecf44445d7
parentaebff74af27157b60a0d6549be718d85a809b985
Allow the use of poll instead of select

Increase the maximum number of open files allowed to
10 x FD_SETSIZE (which is what poll is limited to on macOS).

* configure.ac (--with-poll): New option, default off, for requesting
'poll' support.  Check for "sys/poll.h" header.
(USE_POLL): New variable.
(EMACS_CONFIG_FEATURES): Add USE_POLL.

* etc/NEWS: Document --with-poll.

* src/sysselect.h: New define EMACS_MAX_FD, defaulting to FD_SETSIZE,
for the maximum number of file descriptors Emacs can use.
* src/process.c:
* src/sysdep.c:
* src/nsterm.m (ns_select_1):
(applicationDidFinishLaunching): Use EMACS_MAX_FD instead of
FD_SETSIZE everywhere.

* src/syspoll.h (SYSPOLL_H): New file for definitions related to use
of 'poll'.

* src/sysselect.h [USE_POLL]: Set EMACS_MAX_FD to 10 x FD_SETSIZE.
(emacs_fd_set) [USE_POLL]: New type, used for bitsets of file
descriptors.
(FD_CLR, FD_ISSET, FD_SET, FD_ZERO) [USE_POLL]: Macros for
manipulating bitsets.
[USE_POLL]: Include "syspoll.h".

* src/process.c (fd_sets_to_pollfds) [USE_POLL]: New function.
Converts two 'emacs_fd_set' to an array of 'struct pollfd'
(pollfds_to_fd_sets) [USE_POLL]: New function.
Converts from an array of 'struct pollfd' to two 'emacs_fd_set'.
(timespec_to_timeout) [USE_POLL]: New function, converts a 'struct
timespec' to a timeout in milliseconds.
(emacs_pselect) [USE_POLL]: Replacement for 'pselect' that calls
'poll' and does the appropriate conversions.  Does not support
sigmask.
configure.ac
etc/NEWS
src/nsterm.m
src/process.c
src/sysdep.c
src/syspoll.h [new file with mode: 0644]
src/sysselect.h