MAJOR: polling: add event ports support (Solaris)
Event ports are kqueue/epoll polling class for Solaris. Code is based
on https://github.com/joyent/haproxy-1.8/tree/joyent/dev-v1.8.8.
Event ports are available only on SunOS systems derived from
Solaris 10 and later (including illumos systems).
diff --git a/src/haproxy.c b/src/haproxy.c
index 76d2aa0..f85f15f 100644
--- a/src/haproxy.c
+++ b/src/haproxy.c
@@ -460,6 +460,9 @@
#if defined(ENABLE_KQUEUE)
" -dk disables kqueue() usage even when available\n"
#endif
+#if defined(ENABLE_EVPORTS)
+ " -dv disables event ports usage even when available\n"
+#endif
#if defined(ENABLE_POLL)
" -dp disables poll() usage even when available\n"
#endif
@@ -1352,6 +1355,9 @@
#if defined(ENABLE_KQUEUE)
global.tune.options |= GTUNE_USE_KQUEUE;
#endif
+#if defined(ENABLE_EVPORTS)
+ global.tune.options |= GTUNE_USE_EVPORTS;
+#endif
#if defined(CONFIG_HAP_LINUX_SPLICE)
global.tune.options |= GTUNE_USE_SPLICE;
#endif
@@ -1396,6 +1402,10 @@
else if (*flag == 'd' && flag[1] == 'k')
global.tune.options &= ~GTUNE_USE_KQUEUE;
#endif
+#if defined(ENABLE_EVPORTS)
+ else if (*flag == 'd' && flag[1] == 'v')
+ global.tune.options &= ~GTUNE_USE_EVPORTS;
+#endif
#if defined(CONFIG_HAP_LINUX_SPLICE)
else if (*flag == 'd' && flag[1] == 'S')
global.tune.options &= ~GTUNE_USE_SPLICE;
@@ -2025,6 +2035,9 @@
if (!(global.tune.options & GTUNE_USE_KQUEUE))
disable_poller("kqueue");
+ if (!(global.tune.options & GTUNE_USE_EVPORTS))
+ disable_poller("evports");
+
if (!(global.tune.options & GTUNE_USE_EPOLL))
disable_poller("epoll");