MAJOR: pollers: rely on fd_reregister_all() at boot time
The poller-specific thread init code now uses that new function to
safely register boot events. This ensures that we don't register an
event for another group and that we properly deal with parallel
thread startup.
It's only done for thread-aware pollers, there's no point in using
that in poll/select though that should work as well.
diff --git a/src/ev_epoll.c b/src/ev_epoll.c
index 77ac0c0..7be659b 100644
--- a/src/ev_epoll.c
+++ b/src/ev_epoll.c
@@ -250,8 +250,6 @@
static int init_epoll_per_thread()
{
- int fd;
-
epoll_events = calloc(1, sizeof(struct epoll_event) * global.tune.maxpollevents);
if (epoll_events == NULL)
goto fail_alloc;
@@ -267,8 +265,7 @@
* fd for this thread. Let's just mark them as updated, the poller will
* do the rest.
*/
- for (fd = 0; fd < global.maxsock; fd++)
- updt_fd_polling(fd);
+ fd_reregister_all(tgid, ti->ltid_bit);
return 1;
fail_fd:
diff --git a/src/ev_evports.c b/src/ev_evports.c
index 06e7a01..7985470 100644
--- a/src/ev_evports.c
+++ b/src/ev_evports.c
@@ -279,8 +279,6 @@
static int init_evports_per_thread()
{
- int fd;
-
evports_evlist_max = global.tune.maxpollevents;
evports_evlist = calloc(evports_evlist_max, sizeof(*evports_evlist));
if (evports_evlist == NULL) {
@@ -298,8 +296,7 @@
* fd for this thread. Let's just mark them as updated, the poller will
* do the rest.
*/
- for (fd = 0; fd < global.maxsock; fd++)
- updt_fd_polling(fd);
+ fd_reregister_all(tgid, ti->ltid_bit);
return 1;
diff --git a/src/ev_kqueue.c b/src/ev_kqueue.c
index c37d99b..53bda1f 100644
--- a/src/ev_kqueue.c
+++ b/src/ev_kqueue.c
@@ -205,8 +205,6 @@
static int init_kqueue_per_thread()
{
- int fd;
-
/* we can have up to two events per fd, so allocate enough to store
* 2*fd event, and an extra one, in case EV_RECEIPT isn't defined,
* so that we can add an invalid entry and get an error, to avoid
@@ -227,8 +225,7 @@
* fd for this thread. Let's just mark them as updated, the poller will
* do the rest.
*/
- for (fd = 0; fd < global.maxsock; fd++)
- updt_fd_polling(fd);
+ fd_reregister_all(tgid, ti->ltid_bit);
return 1;
fail_fd: