mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
blktap2: use sys/eventfd.h if it is available
arm64 only has the eventfd2 system call and using the libc wrapper when available hides this from us. eventfd() has been in libc since glibc 2.8. This code is already Linux specific. Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
This commit is contained in:
1 parent
1cc48e865b
commit
b073e110e8
4 files changed
+21
-5
No files matched your search
@@ -29,6 +29,7 @@
|
||||
#ifndef __LIBAIO_COMPAT
|
||||
#define __LIBAIO_COMPAT
|
||||
|
||||
#include "../../config.h"
|
||||
#include <libaio.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/syscall.h>
|
||||
@@ -50,6 +51,16 @@ static inline void __io_set_eventfd(struct iocb *iocb, int eventfd)
|
||||
c->resfd = eventfd;
|
||||
}
|
||||
|
||||
#ifdef HAVE_SYS_EVENTFD_H
|
||||
|
||||
#include <sys/eventfd.h>
|
||||
|
||||
static inline int tapdisk_sys_eventfd(int initval)
|
||||
{
|
||||
return eventfd(initval, 0);
|
||||
}
|
||||
|
||||
#else /* Fallback */
|
||||
#ifndef SYS_eventfd
|
||||
#ifndef __NR_eventfd
|
||||
# if defined(__alpha__)
|
||||
@@ -88,5 +99,6 @@ static inline int tapdisk_sys_eventfd(int initval)
|
||||
{
|
||||
return syscall(SYS_eventfd, initval, 0);
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __LIBAIO_COMPAT */
|
||||
@@ -27,6 +27,9 @@
|
||||
/* Define to 1 if you have the <string.h> header file. */
|
||||
#undef HAVE_STRING_H
|
||||
|
||||
/* Define to 1 if you have the <sys/eventfd.h> header file. */
|
||||
#undef HAVE_SYS_EVENTFD_H
|
||||
|
||||
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||
#undef HAVE_SYS_STAT_H
|
||||
|
||||
|
||||
Vendored
+5
-4
@@ -7817,12 +7817,13 @@ fi
|
||||
|
||||
|
||||
# Checks for header files.
|
||||
for ac_header in yajl/yajl_version.h
|
||||
for ac_header in yajl/yajl_version.h sys/eventfd.h
|
||||
do :
|
||||
ac_fn_c_check_header_mongrel "$LINENO" "yajl/yajl_version.h" "ac_cv_header_yajl_yajl_version_h" "$ac_includes_default"
|
||||
if test "x$ac_cv_header_yajl_yajl_version_h" = x""yes; then :
|
||||
as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
|
||||
ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
|
||||
if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define HAVE_YAJL_YAJL_VERSION_H 1
|
||||
#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
|
||||
_ACEOF
|
||||
|
||||
fi
|
||||
|
||||
+1
-1
@@ -166,6 +166,6 @@ AC_CHECK_LIB([iconv], [libiconv_open], [libiconv="y"], [libiconv="n"])
|
||||
AC_SUBST(libiconv)
|
||||
|
||||
# Checks for header files.
|
||||
AC_CHECK_HEADERS([yajl/yajl_version.h])
|
||||
AC_CHECK_HEADERS([yajl/yajl_version.h sys/eventfd.h])
|
||||
|
||||
AC_OUTPUT()
|
||||