MINOR: polling: make epoll and kqueue not depend on maxfd anymore

Maxfd is really only useful to poll() and select(), yet epoll and
kqueue reference it almost by mistake :
  - cloning of the initial FDs (maxsock should be used here)
  - max polled events, it's maxpollevents which should be used here.

Let's fix these places.
This commit is contained in:
Willy Tarreau 2018-01-29 14:58:02 +01:00
parent ccea35c980
commit ce036bc2da
3 changed files with 4 additions and 4 deletions

View File

@ -206,7 +206,7 @@ static int init_epoll_per_thread()
* fd for this thread. Let's just mark them as updated, the poller will
* do the rest.
*/
for (fd = 0; fd < maxfd; fd++)
for (fd = 0; fd < global.maxsock; fd++)
updt_fd_polling(fd);
return 1;

View File

@ -110,7 +110,7 @@ REGPRM2 static void _do_poll(struct poller *p, int exp)
else
activity[tid].poll_exp++;
fd = MIN(maxfd, global.tune.maxpollevents);
fd = global.tune.maxpollevents;
gettimeofday(&before_poll, NULL);
status = kevent(kqueue_fd[tid], // int kq
NULL, // const struct kevent *changelist
@ -172,7 +172,7 @@ static int init_kqueue_per_thread()
* fd for this thread. Let's just mark them as updated, the poller will
* do the rest.
*/
for (fd = 0; fd < maxfd; fd++)
for (fd = 0; fd < global.maxsock; fd++)
updt_fd_polling(fd);
return 1;

View File

@ -457,7 +457,7 @@ int list_pollers(FILE *out)
int fork_poller()
{
int fd;
for (fd = 0; fd <= maxfd; fd++) {
for (fd = 0; fd < global.maxsock; fd++) {
if (fdtab[fd].owner) {
fdtab[fd].cloned = 1;
}