diff options
author | Sean Bright <sean.bright@gmail.com> | 2017-04-17 20:06:10 -0400 |
---|---|---|
committer | Sean Bright <sean.bright@gmail.com> | 2017-04-24 11:50:09 -0500 |
commit | 59203c51cc6a9676ef1ab42aebe070a55f55ead2 (patch) | |
tree | 474f8136a9a10ee4720c58e4a9d9dc2b6015f03a /configure | |
parent | dc6654d969224129bdd7b4080eda6e027c6454b9 (diff) |
core: Use eventfd for alert pipes on Linux when possible
The primary win of switching to eventfd when possible is that it only
uses a single file descriptor while pipe() will use two. This means for
each bridge channel we're reducing the number of required file
descriptors by 1, and - if you're using timerfd - we also now have 1
less file descriptor per Asterisk channel.
The API is not ideal (passing int arrays), but this is the cleanest
approach I could come up with to maintain API/ABI.
I've also removed what I believe to be an erroneous code block that
checked the non-blocking flag on the pipe ends for each read. If the
file descriptor is 'losing' its non-blocking mode, it is because of a
bug somewhere else in our code.
In my testing I haven't seen any measurable difference in performance.
Change-Id: Iff0fb1573e7f7a187d5211ddc60aa8f3da3edb1d
Diffstat (limited to 'configure')
-rwxr-xr-x | configure | 35 |
1 files changed, 35 insertions, 0 deletions
@@ -18009,6 +18009,41 @@ fi fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if we have usable eventfd support" >&5 +$as_echo_n "checking if we have usable eventfd support... " >&6; } +if test "$cross_compiling" = yes; then : + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run test program while cross compiling +See \`config.log' for more details" "$LINENO" 5; } +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <sys/eventfd.h> +int +main () +{ +return eventfd(0, EFD_NONBLOCK | EFD_SEMAPHORE) == -1; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +$as_echo "#define HAVE_EVENTFD 1" >>confdefs.h + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for compiler 'attribute pure' support" >&5 $as_echo_n "checking for compiler 'attribute pure' support... " >&6; } |