From 2d68f6afef560a66d11d65738c2412b9cecf5d0a Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Tue, 1 Dec 2009 01:27:19 +0000 Subject: [PATCH] Fix MIPS64 posix_fadvise and posix_fadvise64. Similar to the problems I fixed for posix_fallocate and fallocate , MIPS64 posix_advise also needs fixes to use the correct syscall interfaces. Although the existing n32 posix_fadvise64 is OK, getting posix_fadvise from syscalls.list does not work correctly, as this function is supposed to return an error code instead of storing it in errno as the generic syscall implementations from syscalls.list do. --- ChangeLog.mips | 8 ++++ .../linux/mips/mips64/n32/posix_fadvise.c | 38 +++++++++++++++++++ .../sysv/linux/mips/mips64/n32/syscalls.list | 1 - .../linux/mips/mips64/n64/posix_fadvise.c | 1 + .../linux/mips/mips64/n64/posix_fadvise64.c | 1 + 5 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 sysdeps/unix/sysv/linux/mips/mips64/n32/posix_fadvise.c create mode 100644 sysdeps/unix/sysv/linux/mips/mips64/n64/posix_fadvise.c create mode 100644 sysdeps/unix/sysv/linux/mips/mips64/n64/posix_fadvise64.c diff --git a/ChangeLog.mips b/ChangeLog.mips index ca8ebd9a58..bbcb223766 100644 --- a/ChangeLog.mips +++ b/ChangeLog.mips @@ -1,3 +1,11 @@ +2009-12-01 Joseph Myers + + * sysdeps/unix/sysv/linux/mips/mips64/n32/syscalls.list + (posix_fadvise): Remove. + * sysdeps/unix/sysv/linux/mips/mips64/n32/posix_fadvise.c, + sysdeps/unix/sysv/linux/mips/mips64/n64/posix_fadvise.c, + sysdeps/unix/sysv/linux/mips/mips64/n64/posix_fadvise64.c: New. + 2009-12-01 Joseph Myers * sysdeps/mips/dl-lookup.c: Update from generic version. diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/posix_fadvise.c b/sysdeps/unix/sysv/linux/mips/mips64/n32/posix_fadvise.c new file mode 100644 index 0000000000..7bb197ae48 --- /dev/null +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/posix_fadvise.c @@ -0,0 +1,38 @@ +/* Copyright (C) 2003, 2004, 2009 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include +#include +#include + +/* Advice the system about the expected behaviour of the application with + respect to the file associated with FD. */ + +int +posix_fadvise (int fd, off_t offset, off_t len, int advise) +{ +#ifdef __NR_fadvise64 + INTERNAL_SYSCALL_DECL (err); + int ret = INTERNAL_SYSCALL (fadvise64, err, 4, fd, offset, len, advise); + if (INTERNAL_SYSCALL_ERROR_P (ret, err)) + return INTERNAL_SYSCALL_ERRNO (ret, err); + return 0; +#else + return ENOSYS; +#endif +} diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/syscalls.list b/sysdeps/unix/sysv/linux/mips/mips64/n32/syscalls.list index 2e4bed0905..5ade6f0076 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/syscalls.list +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/syscalls.list @@ -2,6 +2,5 @@ readahead - readahead i:iii __readahead readahead sync_file_range - sync_file_range i:iiii sync_file_range -posix_fadvise - fadvise64 i:iiii posix_fadvise ftruncate - ftruncate i:ii __ftruncate ftruncate ftruncate64 __ftruncate64 truncate - truncate i:si truncate truncate64 diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/posix_fadvise.c b/sysdeps/unix/sysv/linux/mips/mips64/n64/posix_fadvise.c new file mode 100644 index 0000000000..0287b833b8 --- /dev/null +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/posix_fadvise.c @@ -0,0 +1 @@ +#include diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/posix_fadvise64.c b/sysdeps/unix/sysv/linux/mips/mips64/n64/posix_fadvise64.c new file mode 100644 index 0000000000..c9f72c4ce1 --- /dev/null +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/posix_fadvise64.c @@ -0,0 +1 @@ +/* posix_fadvise64 is in posix_fadvise.c */