*sizehint* informs epoll about the expected number of events to be
registered. It must be positive, or ``-1`` to use the default. It is only
- used on older systems where :c:func:`!epoll_create1` is not available;
+ used on older systems where :manpage:`epoll_create1(2)` is not available;
otherwise it has no effect (though its value is still checked).
*flags* is deprecated and completely ignored. However, when supplied, its
The *flags* parameter. ``select.EPOLL_CLOEXEC`` is used by default now.
Use :func:`os.set_inheritable` to make the file descriptor inheritable.
+ .. versionchanged:: next
+
+ When CPython is built, this function may be disabled using
+ :option:`--disable-epoll`.
+
.. function:: poll()
``pkg-config`` options.
+.. option:: --disable-epoll
+
+ Build without ``epoll``, meaning that :py:func:`select.epoll` will not be
+ present even if the system provides an
+ :manpage:`epoll_create <epoll_create(2)>` function.
+ This may be used on systems where :manpage:`!epoll_create` or
+ :manpage:`epoll_create1 <epoll_create1(2)>` is available
+ but incompatible with Linux semantics.
+
+ .. versionadded:: next
+
C compiler options
------------------
--- /dev/null
+Add :option:`--disable-epoll` to ``configure``
with_c_locale_coercion
with_valgrind
with_dtrace
+enable_epoll
with_libm
with_libc
enable_big_digits
see Doc/library/sqlite3.rst (default is no)
--enable-ipv6 enable ipv6 (with ipv4) support, see
Doc/library/socket.rst (default is yes if supported)
+ --disable-epoll disable epoll (default is yes if supported)
--enable-big-digits[=15|30]
use big digits (30 or 15 bits) for Python longs
(default is 30)]
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for --disable-epoll" >&5
+printf %s "checking for --disable-epoll... " >&6; }
+# Check whether --enable-epoll was given.
+if test ${enable_epoll+y}
+then :
+ enableval=$enable_epoll; if test "x$enable_epoll" = xno
+then :
+ disable_epoll=yes
+else case e in #(
+ e) disable_epoll=no ;;
+esac
+fi
+else case e in #(
+ e) disable_epoll=no
+ ;;
+esac
+fi
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $disable_epoll" >&5
+printf "%s\n" "$disable_epoll" >&6; }
+if test "$disable_epoll" = "no"
+then
+
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for epoll_create" >&5
printf %s "checking for epoll_create... " >&6; }
+fi
+
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for kqueue" >&5
PY_CHECK_FUNC([fchdir], [@%:@include <unistd.h>])
PY_CHECK_FUNC([fsync], [@%:@include <unistd.h>])
PY_CHECK_FUNC([fdatasync], [@%:@include <unistd.h>])
-PY_CHECK_FUNC([epoll_create], [@%:@include <sys/epoll.h>], [HAVE_EPOLL])
-PY_CHECK_FUNC([epoll_create1], [@%:@include <sys/epoll.h>])
+
+AC_MSG_CHECKING([for --disable-epoll])
+AC_ARG_ENABLE([epoll],
+ [AS_HELP_STRING([--disable-epoll], [disable epoll (default is yes if supported)])],
+ [AS_VAR_IF([enable_epoll], [no], [disable_epoll=yes], [disable_epoll=no])],
+ [disable_epoll=no]
+)
+AC_MSG_RESULT([$disable_epoll])
+if test "$disable_epoll" = "no"
+then
+ PY_CHECK_FUNC([epoll_create], [@%:@include <sys/epoll.h>], [HAVE_EPOLL])
+ PY_CHECK_FUNC([epoll_create1], [@%:@include <sys/epoll.h>])
+fi
+
PY_CHECK_FUNC([kqueue],[
#include <sys/types.h>
#include <sys/event.h>