MINOR: threads/polling: pollers now handle FDs depending on the process mask
diff --git a/src/ev_epoll.c b/src/ev_epoll.c
index 0b815b4..642b4d6 100644
--- a/src/ev_epoll.c
+++ b/src/ev_epoll.c
@@ -136,7 +136,7 @@
 		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
diff --git a/src/ev_kqueue.c b/src/ev_kqueue.c
index 326d616..8f20db2 100644
--- a/src/ev_kqueue.c
+++ b/src/ev_kqueue.c
@@ -122,7 +122,7 @@
 		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) {
diff --git a/src/ev_poll.c b/src/ev_poll.c
index e16968b..455c4e1 100644
--- a/src/ev_poll.c
+++ b/src/ev_poll.c
@@ -111,6 +111,10 @@
 			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)) {
diff --git a/src/ev_select.c b/src/ev_select.c
index 97d4286..49e980f 100644
--- a/src/ev_select.c
+++ b/src/ev_select.c
@@ -141,7 +141,7 @@
 			/* 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]))