Fix MIPS64 posix_fadvise and posix_fadvise64.

Similar to the problems I fixed for posix_fallocate
<http://sourceware.org/ml/libc-ports/2008-12/msg00007.html> and
fallocate <http://sourceware.org/ml/libc-ports/2009-05/msg00031.html>,
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.
This commit is contained in:
Joseph Myers 2009-12-01 01:27:19 +00:00
parent 84f926688b
commit 2d68f6afef
5 changed files with 48 additions and 1 deletions

View File

@ -1,3 +1,11 @@
2009-12-01 Joseph Myers <joseph@codesourcery.com>
* 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 <joseph@codesourcery.com>
* sysdeps/mips/dl-lookup.c: Update from generic version.

View File

@ -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 <errno.h>
#include <fcntl.h>
#include <sysdep.h>
/* 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
}

View File

@ -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

View File

@ -0,0 +1 @@
#include <sysdeps/unix/sysv/linux/wordsize-64/posix_fadvise.c>

View File

@ -0,0 +1 @@
/* posix_fadvise64 is in posix_fadvise.c */