From patchwork Fri Apr 24 11:26:09 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Weimer X-Patchwork-Id: 6423 Received: (qmail 115364 invoked by alias); 24 Apr 2015 13:45:17 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 115299 invoked by uid 89); 24 Apr 2015 13:45:16 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.4 required=5.0 tests=AWL, BAYES_00, KAM_ASCII_DIVIDERS, SPF_HELO_PASS, SPF_PASS, T_RP_MATCHES_RCVD autolearn=no version=3.3.2 X-HELO: mx1.redhat.com From: Florian Weimer Date: Fri, 24 Apr 2015 13:26:09 +0200 Subject: [PATCH 2/4] i386: Remove fallocate, fallocate64, posix_fallocate, posix_fallocate64 To: libc-alpha@sourceware.org Message-Id: <20150424134512.58DCE41F484D0@oldenburg.str.redhat.com> With 6-argument system call support, the generic Linux implementations of these system calls work, and there is no need for i386-specific versions. --- ChangeLog | 11 +++++ sysdeps/unix/sysv/linux/i386/Makefile | 5 +- sysdeps/unix/sysv/linux/i386/call_fallocate.S | 7 --- sysdeps/unix/sysv/linux/i386/fallocate.c | 53 --------------------- sysdeps/unix/sysv/linux/i386/fallocate64.c | 53 --------------------- sysdeps/unix/sysv/linux/i386/posix_fallocate.c | 57 ---------------------- sysdeps/unix/sysv/linux/i386/posix_fallocate64.c | 60 ------------------------ 7 files changed, 14 insertions(+), 232 deletions(-) delete mode 100644 sysdeps/unix/sysv/linux/i386/call_fallocate.S delete mode 100644 sysdeps/unix/sysv/linux/i386/fallocate.c delete mode 100644 sysdeps/unix/sysv/linux/i386/fallocate64.c delete mode 100644 sysdeps/unix/sysv/linux/i386/posix_fallocate.c delete mode 100644 sysdeps/unix/sysv/linux/i386/posix_fallocate64.c diff --git a/ChangeLog b/ChangeLog index 7a5e2b9..75c430b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,16 @@ 2015-04-24 Florian Weimer + * sysdeps/unix/sysv/linux/i386/Makefile (sysdep_routines) [misc]: + Remove call_fallocate. + (sysdep_routines) [io]: Add libc-do-syscall. + * sysdeps/unix/sysv/linux/i386/call_fallocate.S: Remove. + * sysdeps/unix/sysv/linux/i386/fallocate.c: Likewise. + * sysdeps/unix/sysv/linux/i386/fallocate64.c: Likewise. + * sysdeps/unix/sysv/linux/i386/posix_fallocate.c: Likewise. + * sysdeps/unix/sysv/linux/i386/posix_fallocate64.c: Likewise. + +2015-04-24 Florian Weimer + * io/posix_fallocate.c (posix_fallocate): Do not set errno. * io/posix_fallocate64.c (posix_fallocate64): Likewise. diff --git a/sysdeps/unix/sysv/linux/i386/Makefile b/sysdeps/unix/sysv/linux/i386/Makefile index d7a59d3..e0fb1ed 100644 --- a/sysdeps/unix/sysv/linux/i386/Makefile +++ b/sysdeps/unix/sysv/linux/i386/Makefile @@ -2,7 +2,7 @@ default-abi := 32 ifeq ($(subdir),misc) -sysdep_routines += ioperm iopl vm86 call_pselect6 call_fallocate +sysdep_routines += ioperm iopl vm86 call_pselect6 endif ifeq ($(subdir),elf) @@ -10,8 +10,9 @@ sysdep-others += lddlibc4 install-bin += lddlibc4 endif +# fallocate, posix_fallocate use six-argument inline syscalls. ifeq ($(subdir),io) -sysdep_routines += call_sync_file_range +sysdep_routines += call_sync_file_range libc-do-syscall endif # libpthread uses six-argument inline syscalls. diff --git a/sysdeps/unix/sysv/linux/i386/call_fallocate.S b/sysdeps/unix/sysv/linux/i386/call_fallocate.S deleted file mode 100644 index 39ab797..0000000 --- a/sysdeps/unix/sysv/linux/i386/call_fallocate.S +++ /dev/null @@ -1,7 +0,0 @@ -#include - -#ifdef __NR_fallocate -PSEUDO_ERRVAL (__call_fallocate, fallocate, 6) - ret_ERRVAL -PSEUDO_END_ERRVAL(__call_fallocate) -#endif diff --git a/sysdeps/unix/sysv/linux/i386/fallocate.c b/sysdeps/unix/sysv/linux/i386/fallocate.c deleted file mode 100644 index 5534113..0000000 --- a/sysdeps/unix/sysv/linux/i386/fallocate.c +++ /dev/null @@ -1,53 +0,0 @@ -/* Copyright (C) 2007-2015 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include - - -extern int __call_fallocate (int fd, int mode, __off64_t offset, __off64_t len) - attribute_hidden; - - -/* Reserve storage for the data of the file associated with FD. */ -int -fallocate (int fd, int mode, __off_t offset, __off_t len) -{ -#ifdef __NR_fallocate - int err; - if (SINGLE_THREAD_P) - err = __call_fallocate (fd, mode, offset, len); - else - { - int oldtype = LIBC_CANCEL_ASYNC (); - - err = __call_fallocate (fd, mode, offset, len); - - LIBC_CANCEL_RESET (oldtype); - } - if (__glibc_unlikely (err)) - { - __set_errno (err); - err = -1; - } - return err; -#else - __set_errno (ENOSYS); - return -1; -#endif -} diff --git a/sysdeps/unix/sysv/linux/i386/fallocate64.c b/sysdeps/unix/sysv/linux/i386/fallocate64.c deleted file mode 100644 index d0ead81..0000000 --- a/sysdeps/unix/sysv/linux/i386/fallocate64.c +++ /dev/null @@ -1,53 +0,0 @@ -/* Copyright (C) 2007-2015 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include - - -extern int __call_fallocate (int fd, int mode, __off64_t offset, __off64_t len) - attribute_hidden; - - -/* Reserve storage for the data of the file associated with FD. */ -int -fallocate64 (int fd, int mode, __off64_t offset, __off64_t len) -{ -#ifdef __NR_fallocate - int err; - if (SINGLE_THREAD_P) - err = __call_fallocate (fd, mode, offset, len); - else - { - int oldtype = LIBC_CANCEL_ASYNC (); - - err = __call_fallocate (fd, mode, offset, len); - - LIBC_CANCEL_RESET (oldtype); - } - if (__glibc_unlikely (err)) - { - __set_errno (err); - err = -1; - } - return err; -#else - __set_errno (ENOSYS); - return -1; -#endif -} diff --git a/sysdeps/unix/sysv/linux/i386/posix_fallocate.c b/sysdeps/unix/sysv/linux/i386/posix_fallocate.c deleted file mode 100644 index 19a9ffe..0000000 --- a/sysdeps/unix/sysv/linux/i386/posix_fallocate.c +++ /dev/null @@ -1,57 +0,0 @@ -/* Copyright (C) 2007-2015 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include - -#define posix_fallocate static internal_fallocate -#include -#undef posix_fallocate - -#if !defined __ASSUME_FALLOCATE && defined __NR_fallocate -int __have_fallocate attribute_hidden; -#endif - -extern int __call_fallocate (int fd, int mode, __off64_t offset, __off64_t len) - attribute_hidden; - -/* Reserve storage for the data of the file associated with FD. */ -int -posix_fallocate (int fd, __off_t offset, __off_t len) -{ -#ifdef __NR_fallocate -# ifndef __ASSUME_FALLOCATE - if (__glibc_likely (__have_fallocate >= 0)) -# endif - { - int res = __call_fallocate (fd, 0, offset, len); - if (! res) - return 0; - -# ifndef __ASSUME_FALLOCATE - if (__glibc_unlikely (res == ENOSYS)) - __have_fallocate = -1; - else -# endif - if (res != EOPNOTSUPP) - return res; - } -#endif - - return internal_fallocate (fd, offset, len); -} diff --git a/sysdeps/unix/sysv/linux/i386/posix_fallocate64.c b/sysdeps/unix/sysv/linux/i386/posix_fallocate64.c deleted file mode 100644 index a9a7b9a..0000000 --- a/sysdeps/unix/sysv/linux/i386/posix_fallocate64.c +++ /dev/null @@ -1,60 +0,0 @@ -/* Copyright (C) 2007-2015 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, see - . */ - -#include -#include -#include - -extern int __posix_fallocate64_l64 (int fd, __off64_t offset, __off64_t len); -#define __posix_fallocate64_l64 static internal_fallocate64 -#include -#undef __posix_fallocate64_l64 - -#if !defined __ASSUME_FALLOCATE && defined __NR_fallocate -/* Defined in posix_fallocate.c. */ -extern int __have_fallocate attribute_hidden; -#endif - -extern int __call_fallocate (int fd, int mode, __off64_t offset, __off64_t len) - attribute_hidden; - -/* Reserve storage for the data of the file associated with FD. */ -int -__posix_fallocate64_l64 (int fd, __off64_t offset, __off64_t len) -{ -#ifdef __NR_fallocate -# ifndef __ASSUME_FALLOCATE - if (__glibc_likely (__have_fallocate >= 0)) -# endif - { - int res = __call_fallocate (fd, 0, offset, len); - - if (! res) - return 0; - -# ifndef __ASSUME_FALLOCATE - if (__glibc_unlikely (res == ENOSYS)) - __have_fallocate = -1; - else -# endif - if (res != EOPNOTSUPP) - return res; - } -#endif - - return internal_fallocate64 (fd, offset, len); -}