@@ -0,0 +1,65 @@
+implementations of dup3 and fallocate that are good enough to fool LTP
+
+Signed-off-by: Ulrich Hecht <uli@suse.de>
+---
+ configure | 18 ++++++++++++++++++
+ linux-user/syscall.c | 10 ++++++++++
+ 2 files changed, 28 insertions(+), 0 deletions(-)
+
+diff --git a/configure b/configure
+index 09c8443..68a18f5 100755
+--- a/configure
++++ b/configure
+@@ -1371,6 +1371,21 @@ if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
+ splice=yes
+ fi
+
++# check for fallocate
++fallocate=no
++cat > $TMPC << EOF
++#include <fcntl.h>
++
++int main(void)
++{
++ fallocate(0, 0, 0, 0);
++ return 0;
++}
++EOF
++if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
++ fallocate=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"
+@@ -1720,6 +1735,9 @@ fi
+ if test "$splice" = "yes" ; then
+ echo "#define CONFIG_SPLICE 1" >> $config_host_h
+ fi
++if test "$fallocate" = "yes" ; then
++ echo "#define CONFIG_FALLOCATE 1" >> $config_host_h
++fi
+ if test "$inotify" = "yes" ; then
+ echo "#define CONFIG_INOTIFY 1" >> $config_host_h
+ fi
+diff --git a/linux-user/syscall.c b/linux-user/syscall.c
+index ca57dd9..b03e879 100644
+--- a/linux-user/syscall.c
++++ b/linux-user/syscall.c
+@@ -6975,6 +6980,11 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1,
+ break;
+ #endif
+ #endif /* CONFIG_SPLICE */
++#if defined(CONFIG_FALLOCATE) && defined(TARGET_NR_fallocate)
++ case TARGET_NR_fallocate:
++ ret = get_errno(fallocate(arg1, arg2, arg3, arg4));
++ break;
++#endif
+ default:
+ unimplemented:
+ gemu_log("qemu: Unsupported syscall: %d\n", num);
+--
+1.6.2.1
+
+
+
|