From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MWWqp-0007Cw-S0 for qemu-devel@nongnu.org; Thu, 30 Jul 2009 10:43:23 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MWWql-0007Ao-3T for qemu-devel@nongnu.org; Thu, 30 Jul 2009 10:43:23 -0400 Received: from [199.232.76.173] (port=56380 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MWWql-0007Al-15 for qemu-devel@nongnu.org; Thu, 30 Jul 2009 10:43:19 -0400 Received: from cantor2.suse.de ([195.135.220.15]:44559 helo=mx2.suse.de) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1MWWqk-0006e8-FY for qemu-devel@nongnu.org; Thu, 30 Jul 2009 10:43:18 -0400 From: Ulrich Hecht Date: Thu, 30 Jul 2009 16:45:55 +0200 Message-Id: <1248965155-14108-1-git-send-email-uli@suse.de> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Subject: [Qemu-devel] [PATCH] linux-user: dup3, fallocate syscalls List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: riku.voipio@iki.fi implementations of dup3 and fallocate that are good enough to fool LTP updated fallocate check to new configure, added dup3 check as suggested by Jan-Simon M=C3=B6ller Signed-off-by: Ulrich Hecht --- configure | 36 ++++++++++++++++++++++++++++++++++++ linux-user/syscall.c | 12 ++++++++++++ 2 files changed, 48 insertions(+), 0 deletions(-) diff --git a/configure b/configure index 8160bed..2329f88 100755 --- a/configure +++ b/configure @@ -1366,6 +1366,36 @@ if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; = then splice=3Dyes fi =20 +# check for fallocate +fallocate=3Dno +cat > $TMPC << EOF +#include + +int main(void) +{ + fallocate(0, 0, 0, 0); + return 0; +} +EOF +if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then + fallocate=3Dyes +fi + +# check for dup3 +dup3=3Dno +cat > $TMPC << EOF +#include + +int main(void) +{ + dup3(0, 0, 0); + return 0; +} +EOF +if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then + dup3=3Dyes +fi + # Check if tools are available to build documentation. if test "$build_docs" =3D "yes" -a \( ! -x "`which texi2html 2>/dev/null= `" -o ! -x "`which pod2man 2>/dev/null`" \) ; then build_docs=3D"no" @@ -1639,6 +1669,12 @@ fi if test "$splice" =3D "yes" ; then echo "CONFIG_SPLICE=3Dy" >> $config_host_mak fi +if test "$fallocate" =3D "yes" ; then + echo "CONFIG_FALLOCATE=3Dy" >> $config_host_mak +fi +if test "$dup3" =3D "yes" ; then + echo "CONFIG_DUP3=3Dy" >> $config_host_mak +fi if test "$inotify" =3D "yes" ; then echo "CONFIG_INOTIFY=3Dy" >> $config_host_mak fi diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 31cf151..d105b8e 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -3681,8 +3681,10 @@ static int target_to_host_fcntl_cmd(int cmd) return F_SETLEASE; case TARGET_F_GETLEASE: return F_GETLEASE; +#ifdef F_DUPFD_CLOEXEC case TARGET_F_DUPFD_CLOEXEC: return F_DUPFD_CLOEXEC; +#endif case TARGET_F_NOTIFY: return F_NOTIFY; default: @@ -4732,6 +4734,11 @@ abi_long do_syscall(void *cpu_env, int num, abi_lo= ng arg1, case TARGET_NR_dup2: ret =3D get_errno(dup2(arg1, arg2)); break; +#if defined(TARGET_NR_dup3) && defined(CONFIG_DUP3) + case TARGET_NR_dup3: + ret =3D get_errno(dup3(arg1, arg2, arg3)); + break; +#endif #ifdef TARGET_NR_getppid /* not on alpha */ case TARGET_NR_getppid: ret =3D get_errno(getppid()); @@ -6976,6 +6983,11 @@ abi_long do_syscall(void *cpu_env, int num, abi_lo= ng arg1, break; #endif #endif /* CONFIG_SPLICE */ +#if defined(CONFIG_FALLOCATE) && defined(TARGET_NR_fallocate) + case TARGET_NR_fallocate: + ret =3D get_errno(fallocate(arg1, arg2, arg3, arg4)); + break; +#endif default: unimplemented: gemu_log("qemu: Unsupported syscall: %d\n", num); --=20 1.6.2.1