The posix_madvise(3) and posix_fadvise(2) should return error on
failure, same as posix_fallocate(2). Noted by: Bob Bishop <rb@gid.co.uk> Discussed with: bde Sponsored by: The FreeBSD Foundation MFC after: 1 week
This commit is contained in:
parent
4524013cd3
commit
49d39308ba
@ -8,9 +8,19 @@
|
||||
__FBSDID("$FreeBSD$");
|
||||
|
||||
#include <sys/mman.h>
|
||||
#include <errno.h>
|
||||
|
||||
int
|
||||
posix_madvise(void *address, size_t size, int how)
|
||||
{
|
||||
return madvise(address, size, how);
|
||||
int ret, saved_errno;
|
||||
|
||||
saved_errno = errno;
|
||||
if (madvise(address, size, how) == -1) {
|
||||
ret = errno;
|
||||
errno = saved_errno;
|
||||
} else {
|
||||
ret = 0;
|
||||
}
|
||||
return (ret);
|
||||
}
|
||||
|
@ -28,7 +28,7 @@
|
||||
.\" @(#)madvise.2 8.1 (Berkeley) 6/9/93
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.Dd July 19, 1996
|
||||
.Dd January 30, 2014
|
||||
.Dt MADVISE 2
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -50,7 +50,10 @@ allows a process that has knowledge of its memory behavior
|
||||
to describe it to the system.
|
||||
The
|
||||
.Fn posix_madvise
|
||||
interface is identical and is provided for standards conformance.
|
||||
interface is identical, except it returns an error number on error and does
|
||||
not modify
|
||||
.Va errno ,
|
||||
and is provided for standards conformance.
|
||||
.Pp
|
||||
The known behaviors are:
|
||||
.Bl -tag -width MADV_SEQUENTIAL
|
||||
|
@ -28,7 +28,7 @@
|
||||
.\" @(#)madvise.2 8.1 (Berkeley) 6/9/93
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.Dd June 19, 2012
|
||||
.Dd January 30, 2014
|
||||
.Dt POSIX_FADVISE 2
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -93,7 +93,7 @@ Future access to this data may require a read operation.
|
||||
.Sh ERRORS
|
||||
The
|
||||
.Fn posix_fadvise
|
||||
system call will fail if:
|
||||
system call returns zero on success, and an error on failure:
|
||||
.Bl -tag -width Er
|
||||
.It Bq Er EBADF
|
||||
The
|
||||
|
@ -83,9 +83,8 @@ that reduces the file size to a size smaller than
|
||||
If successful,
|
||||
.Fn posix_fallocate
|
||||
returns zero.
|
||||
It returns error number on failure, without setting
|
||||
.Va errno
|
||||
variable.
|
||||
It returns an error on failure, without setting
|
||||
.Va errno .
|
||||
.Sh ERRORS
|
||||
Possible failure conditions:
|
||||
.Bl -tag -width Er
|
||||
|
@ -3005,8 +3005,10 @@ freebsd32_posix_fadvise(struct thread *td,
|
||||
struct freebsd32_posix_fadvise_args *uap)
|
||||
{
|
||||
|
||||
return (kern_posix_fadvise(td, uap->fd, PAIR32TO64(off_t, uap->offset),
|
||||
PAIR32TO64(off_t, uap->len), uap->advice));
|
||||
td->td_retval[0] = kern_posix_fadvise(td, uap->fd,
|
||||
PAIR32TO64(off_t, uap->offset), PAIR32TO64(off_t, uap->len),
|
||||
uap->advice);
|
||||
return (0);
|
||||
}
|
||||
|
||||
int
|
||||
|
@ -4725,6 +4725,7 @@ int
|
||||
sys_posix_fadvise(struct thread *td, struct posix_fadvise_args *uap)
|
||||
{
|
||||
|
||||
return (kern_posix_fadvise(td, uap->fd, uap->offset, uap->len,
|
||||
uap->advice));
|
||||
td->td_retval[0] = kern_posix_fadvise(td, uap->fd, uap->offset,
|
||||
uap->len, uap->advice);
|
||||
return (0);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user