autoconf で epoll のチェック

上記の問題は、
epollのチェック関数を作っているときに気づきました。
しかし、Linux 2.4君よ、
なぜepoll_createのダミーを置くのだ…
AC_CHECK_FUNCだけで調べられないじゃないか。

apr-1.2.7 の configure.in をみてみればこうなってます。

# Check for the Linux epoll interface; epoll* may be available in libc
# but return ENOSYS on a pre-2.6 kernel, so do a run-time check.
AC_CACHE_CHECK([for epoll support], [apr_cv_epoll],
[AC_TRY_RUN([
#include <sys/epoll.h>
#include <unistd.h>

int main()
{
    return epoll_create(5) == -1;
}], [apr_cv_epoll=yes], [apr_cv_epoll=no], [apr_cv_epoll=no])])

if test "$apr_cv_epoll" = "yes"; then
   AC_DEFINE([HAVE_EPOLL], 1, [Define if the epoll interface is supported])
fi

システムコールでも対応するシンボルは libc (Linux では glibc) にあるんだから、カーネルの問題ではない。