mirror of https://gitee.com/openkylin/qemu.git
linux-user: add eventfd support
Straightforward implementation. This syscall is rare enough that we don't need to support the odder cases, just disable it if host glibc is too old. Signed-off-by: Riku Voipio <riku.voipio@iki.fi>
This commit is contained in:
parent
4e6f6d4c20
commit
c2882b9654
|
@ -1322,6 +1322,21 @@ if compile_prog "" "" ; then
|
|||
splice=yes
|
||||
fi
|
||||
|
||||
# check if eventfd is supported
|
||||
eventfd=no
|
||||
cat > $TMPC << EOF
|
||||
#include <sys/eventfd.h>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int efd = eventfd(0, 0);
|
||||
return 0;
|
||||
}
|
||||
EOF
|
||||
if compile_prog "" "" ; then
|
||||
eventfd=yes
|
||||
fi
|
||||
|
||||
# Check if tools are available to build documentation.
|
||||
if test "$build_docs" = "yes" -a \( ! -x "`which texi2html 2>/dev/null`" -o ! -x "`which pod2man 2>/dev/null`" \) ; then
|
||||
build_docs="no"
|
||||
|
@ -1659,6 +1674,9 @@ fi
|
|||
if test "$splice" = "yes" ; then
|
||||
echo "CONFIG_SPLICE=y" >> $config_host_mak
|
||||
fi
|
||||
if test "$eventfd" = "yes" ; then
|
||||
echo "CONFIG_EVENTFD=y" >> $config_host_mak
|
||||
fi
|
||||
if test "$inotify" = "yes" ; then
|
||||
echo "CONFIG_INOTIFY=y" >> $config_host_mak
|
||||
fi
|
||||
|
|
|
@ -60,6 +60,9 @@
|
|||
#ifdef TARGET_GPROF
|
||||
#include <sys/gmon.h>
|
||||
#endif
|
||||
#ifdef CONFIG_EVENTFD
|
||||
#include <sys/eventfd.h>
|
||||
#endif
|
||||
|
||||
#define termios host_termios
|
||||
#define winsize host_winsize
|
||||
|
@ -6974,6 +6977,18 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1,
|
|||
break;
|
||||
#endif
|
||||
#endif /* CONFIG_SPLICE */
|
||||
#ifdef CONFIG_EVENTFD
|
||||
#if defined(TARGET_NR_eventfd)
|
||||
case TARGET_NR_eventfd:
|
||||
ret = get_errno(eventfd(arg1, 0));
|
||||
break;
|
||||
#endif
|
||||
#if defined(TARGET_NR_eventfd2)
|
||||
case TARGET_NR_eventfd2:
|
||||
ret = get_errno(eventfd(arg1, arg2));
|
||||
break;
|
||||
#endif
|
||||
#endif /* CONFIG_EVENTFD */
|
||||
default:
|
||||
unimplemented:
|
||||
gemu_log("qemu: Unsupported syscall: %d\n", num);
|
||||
|
|
Loading…
Reference in New Issue