diff --git a/ChangeLog.mips b/ChangeLog.mips index f487d391af..21d48cf168 100644 --- a/ChangeLog.mips +++ b/ChangeLog.mips @@ -1,3 +1,11 @@ +2012-05-01 Joseph Myers + + [BZ #14044] + * sysdeps/unix/sysv/linux/mips/mips64/n64/posix_fadvise.c: Copy + from libc version and add symbol versions. + * sysdeps/unix/sysv/linux/mips/mips64/n64/nptl/libc.abilis + (GLIBC_2.3.3): Add posix_fadvise64. + 2012-04-28 Joseph Myers * sysdeps/unix/sysv/linux/mips/mips32/nptl/ld.abilist: New file. diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/nptl/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/nptl/libc.abilist index 1deec226f7..12c15d382c 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/nptl/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/nptl/libc.abilist @@ -2045,6 +2045,7 @@ GLIBC_2.3.3 inet6_option_space F nftw F nftw64 F + posix_fadvise64 F remap_file_pages F sched_getaffinity F sched_setaffinity F diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/posix_fadvise.c b/sysdeps/unix/sysv/linux/mips/mips64/n64/posix_fadvise.c index 0287b833b8..2b7c0e21bc 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/posix_fadvise.c +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/posix_fadvise.c @@ -1 +1,50 @@ -#include +/* Copyright (C) 2003-2012 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 + . */ + +#define posix_fadvise64 __no_posix_fadvise64 +#include +#include +#include +#undef posix_fadvise64 + +/* 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 +} + +#include + +#if SHLIB_COMPAT(libc, GLIBC_2_2, GLIBC_2_3_3) +strong_alias (posix_fadvise, __posix_fadvise64_l32); +compat_symbol (libc, __posix_fadvise64_l32, posix_fadvise64, GLIBC_2_2); +strong_alias (posix_fadvise, __posix_fadvise64_l64); +versioned_symbol (libc, __posix_fadvise64_l64, posix_fadvise64, GLIBC_2_3_3); +#else +strong_alias (posix_fadvise, posix_fadvise64); +#endif