mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-04-19 05:25:41 +00:00
MINOR: threads/polling: pollers now handle FDs depending on the process mask
This commit is contained in:
parent
8aae8b1d61
commit
63e2ce61a8
@ -136,7 +136,7 @@ REGPRM2 static void _do_poll(struct poller *p, int exp)
|
||||
unsigned int e = epoll_events[count].events;
|
||||
fd = epoll_events[count].data.fd;
|
||||
|
||||
if (!fdtab[fd].owner)
|
||||
if (!fdtab[fd].owner || !(fdtab[fd].process_mask & tid_bit))
|
||||
continue;
|
||||
|
||||
/* it looks complicated but gcc can optimize it away when constants
|
||||
|
@ -122,7 +122,7 @@ REGPRM2 static void _do_poll(struct poller *p, int exp)
|
||||
unsigned int n = 0;
|
||||
fd = kev[count].ident;
|
||||
|
||||
if (!fdtab[fd].owner)
|
||||
if (!fdtab[fd].owner || !(fdtab[fd].process_mask & tid_bit))
|
||||
continue;
|
||||
|
||||
if (kev[count].filter == EVFILT_READ) {
|
||||
|
@ -111,6 +111,10 @@ REGPRM2 static void _do_poll(struct poller *p, int exp)
|
||||
continue;
|
||||
|
||||
for (count = 0, fd = fds * 8*sizeof(**fd_evts); count < 8*sizeof(**fd_evts) && fd < maxfd; count++, fd++) {
|
||||
|
||||
if (!fdtab[fd].owner || !(fdtab[fd].process_mask & tid_bit))
|
||||
continue;
|
||||
|
||||
sr = (rn >> count) & 1;
|
||||
sw = (wn >> count) & 1;
|
||||
if ((sr|sw)) {
|
||||
|
@ -141,7 +141,7 @@ REGPRM2 static void _do_poll(struct poller *p, int exp)
|
||||
/* if we specify read first, the accepts and zero reads will be
|
||||
* seen first. Moreover, system buffers will be flushed faster.
|
||||
*/
|
||||
if (!fdtab[fd].owner)
|
||||
if (!fdtab[fd].owner || !(fdtab[fd].process_mask & tid_bit))
|
||||
continue;
|
||||
|
||||
if (FD_ISSET(fd, tmp_evts[DIR_RD]))
|
||||
|
Loading…
Reference in New Issue
Block a user