Implement support for [f]statvfs1(2)
The [f]statvfs(3) calls now use [f]statvfs1(2). Change-Id: I949c177fc14abf976e45165c342f897f4ec988ee
This commit is contained in:
parent
266239fe64
commit
8143b9bf1d
11 changed files with 61 additions and 166 deletions
|
@ -2216,6 +2216,7 @@
|
||||||
./usr/man/man2/FD_SET.2 minix-sys
|
./usr/man/man2/FD_SET.2 minix-sys
|
||||||
./usr/man/man2/fork.2 minix-sys
|
./usr/man/man2/fork.2 minix-sys
|
||||||
./usr/man/man2/fstatvfs.2 minix-sys
|
./usr/man/man2/fstatvfs.2 minix-sys
|
||||||
|
./usr/man/man2/fstatvfs1.2 minix-sys
|
||||||
./usr/man/man2/getgid.2 minix-sys
|
./usr/man/man2/getgid.2 minix-sys
|
||||||
./usr/man/man2/getitimer.2 minix-sys
|
./usr/man/man2/getitimer.2 minix-sys
|
||||||
./usr/man/man2/getnucred.2 minix-sys
|
./usr/man/man2/getnucred.2 minix-sys
|
||||||
|
@ -2268,6 +2269,7 @@
|
||||||
./usr/man/man2/socket.2 minix-sys
|
./usr/man/man2/socket.2 minix-sys
|
||||||
./usr/man/man2/socketpair.2 minix-sys
|
./usr/man/man2/socketpair.2 minix-sys
|
||||||
./usr/man/man2/statvfs.2 minix-sys
|
./usr/man/man2/statvfs.2 minix-sys
|
||||||
|
./usr/man/man2/statvfs1.2 minix-sys
|
||||||
./usr/man/man2/svrctl.2 minix-sys
|
./usr/man/man2/svrctl.2 minix-sys
|
||||||
./usr/man/man2/symlink.2 minix-sys
|
./usr/man/man2/symlink.2 minix-sys
|
||||||
./usr/man/man2/sync.2 minix-sys
|
./usr/man/man2/sync.2 minix-sys
|
||||||
|
|
|
@ -75,8 +75,8 @@
|
||||||
#define GETDENTS_321 80 /* to VFS */
|
#define GETDENTS_321 80 /* to VFS */
|
||||||
#define LLSEEK 81 /* to VFS */
|
#define LLSEEK 81 /* to VFS */
|
||||||
#define GETVFSSTAT 82 /* to VFS */
|
#define GETVFSSTAT 82 /* to VFS */
|
||||||
#define STATVFS 83 /* to VFS */
|
#define STATVFS1 83 /* to VFS */
|
||||||
#define FSTATVFS 84 /* to VFS */
|
#define FSTATVFS1 84 /* to VFS */
|
||||||
#define SELECT 85 /* to VFS */
|
#define SELECT 85 /* to VFS */
|
||||||
#define FCHDIR 86 /* to VFS */
|
#define FCHDIR 86 /* to VFS */
|
||||||
#define FSYNC 87 /* to VFS */
|
#define FSYNC 87 /* to VFS */
|
||||||
|
|
|
@ -907,14 +907,16 @@
|
||||||
#define VFS_GETVFSSTAT_SIZE m1_i1
|
#define VFS_GETVFSSTAT_SIZE m1_i1
|
||||||
#define VFS_GETVFSSTAT_FLAGS m1_i2
|
#define VFS_GETVFSSTAT_FLAGS m1_i2
|
||||||
|
|
||||||
/* Field names for the fstatvfs call */
|
/* Field names for the fstatvfs1(2) call. */
|
||||||
#define FSTATVFS_FD m1_i1
|
#define VFS_FSTATVFS1_FD m1_i1
|
||||||
#define FSTATVFS_BUF m1_p1
|
#define VFS_FSTATVFS1_BUF m1_p1
|
||||||
|
#define VFS_FSTATVFS1_FLAGS m1_i2
|
||||||
|
|
||||||
/* Field names for the statvfs call */
|
/* Field names for the statvfs1(2) call. */
|
||||||
#define STATVFS_LEN m1_i1
|
#define VFS_STATVFS1_LEN m1_i1
|
||||||
#define STATVFS_NAME m1_p1
|
#define VFS_STATVFS1_NAME m1_p1
|
||||||
#define STATVFS_BUF m1_p2
|
#define VFS_STATVFS1_BUF m1_p2
|
||||||
|
#define VFS_STATVFS1_FLAGS m1_i2
|
||||||
|
|
||||||
/* Field names for the mount(2) call. */
|
/* Field names for the mount(2) call. */
|
||||||
#define VFS_MOUNT_FLAGS m11_i1
|
#define VFS_MOUNT_FLAGS m11_i1
|
||||||
|
|
|
@ -284,6 +284,7 @@
|
||||||
#define freeaddrinfo _freeaddrinfo
|
#define freeaddrinfo _freeaddrinfo
|
||||||
#define freeifaddrs _freeifaddrs
|
#define freeifaddrs _freeifaddrs
|
||||||
#define fstatvfs _fstatvfs
|
#define fstatvfs _fstatvfs
|
||||||
|
#define fstatvfs1 _fstatvfs1
|
||||||
#define ftok _ftok
|
#define ftok _ftok
|
||||||
#define ftruncate _ftruncate
|
#define ftruncate _ftruncate
|
||||||
#define fts_children _fts_children
|
#define fts_children _fts_children
|
||||||
|
@ -600,6 +601,7 @@
|
||||||
#define srand48 _srand48
|
#define srand48 _srand48
|
||||||
#define srandom _srandom
|
#define srandom _srandom
|
||||||
#define statvfs(a, b) _statvfs(a, b)
|
#define statvfs(a, b) _statvfs(a, b)
|
||||||
|
#define statvfs1 _statvfs1
|
||||||
#define strcasecmp _strcasecmp
|
#define strcasecmp _strcasecmp
|
||||||
#define strdup _strdup
|
#define strdup _strdup
|
||||||
#define stresep _stresep
|
#define stresep _stresep
|
||||||
|
|
|
@ -5,14 +5,21 @@
|
||||||
#include <sys/statvfs.h>
|
#include <sys/statvfs.h>
|
||||||
|
|
||||||
#ifdef __weak_alias
|
#ifdef __weak_alias
|
||||||
|
__weak_alias(fstatvfs1, _fstatvfs1)
|
||||||
__weak_alias(fstatvfs, _fstatvfs)
|
__weak_alias(fstatvfs, _fstatvfs)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int fstatvfs(int fd, struct statvfs *buffer)
|
int fstatvfs1(int fd, struct statvfs *buffer, int flags)
|
||||||
{
|
{
|
||||||
message m;
|
message m;
|
||||||
|
|
||||||
m.FSTATVFS_FD = fd;
|
m.VFS_FSTATVFS1_FD = fd;
|
||||||
m.FSTATVFS_BUF = (char *) buffer;
|
m.VFS_FSTATVFS1_BUF = (char *) buffer;
|
||||||
return(_syscall(VFS_PROC_NR, FSTATVFS, &m));
|
m.VFS_FSTATVFS1_FLAGS = flags;
|
||||||
|
return(_syscall(VFS_PROC_NR, FSTATVFS1, &m));
|
||||||
|
}
|
||||||
|
|
||||||
|
int fstatvfs(int fd, struct statvfs *buffer)
|
||||||
|
{
|
||||||
|
return fstatvfs1(fd, buffer, ST_WAIT);
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,15 +6,22 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#ifdef __weak_alias
|
#ifdef __weak_alias
|
||||||
|
__weak_alias(statvfs1, _statvfs1)
|
||||||
__weak_alias(statvfs, _statvfs)
|
__weak_alias(statvfs, _statvfs)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int statvfs(const char *name, struct statvfs *buffer)
|
int statvfs1(const char *name, struct statvfs *buffer, int flags)
|
||||||
{
|
{
|
||||||
message m;
|
message m;
|
||||||
|
|
||||||
m.STATVFS_LEN = strlen(name) + 1;
|
m.VFS_STATVFS1_LEN = strlen(name) + 1;
|
||||||
m.STATVFS_NAME = (char *) __UNCONST(name);
|
m.VFS_STATVFS1_NAME = (char *) __UNCONST(name);
|
||||||
m.STATVFS_BUF = (char *) buffer;
|
m.VFS_STATVFS1_BUF = (char *) buffer;
|
||||||
return(_syscall(VFS_PROC_NR, STATVFS, &m));
|
m.VFS_STATVFS1_FLAGS = flags;
|
||||||
|
return(_syscall(VFS_PROC_NR, STATVFS1, &m));
|
||||||
|
}
|
||||||
|
|
||||||
|
int statvfs(const char *name, struct statvfs *buffer)
|
||||||
|
{
|
||||||
|
return statvfs1(name, buffer, ST_WAIT);
|
||||||
}
|
}
|
||||||
|
|
|
@ -272,6 +272,7 @@ MLINKS+=chmod.2 fchmod.2 chmod.2 lchmod.2
|
||||||
MLINKS+=chown.2 fchown.2 chown.2 lchown.2
|
MLINKS+=chown.2 fchown.2 chown.2 lchown.2
|
||||||
MLINKS+=chroot.2 fchroot.2
|
MLINKS+=chroot.2 fchroot.2
|
||||||
.else
|
.else
|
||||||
|
MAN+= statvfs.2
|
||||||
MLINKS+=clock_settime.2 clock_gettime.2
|
MLINKS+=clock_settime.2 clock_gettime.2
|
||||||
MLINKS+=clock_settime.2 clock_getres.2
|
MLINKS+=clock_settime.2 clock_getres.2
|
||||||
.endif # !defined(__MINIX)
|
.endif # !defined(__MINIX)
|
||||||
|
@ -339,6 +340,9 @@ MLINKS+=wait.2 wait3.2 wait.2 wait4.2 wait.2 waitpid.2
|
||||||
MLINKS+=write.2 writev.2 write.2 pwrite.2 write.2 pwritev.2
|
MLINKS+=write.2 writev.2 write.2 pwrite.2 write.2 pwritev.2
|
||||||
.else
|
.else
|
||||||
MLINKS+=pipe.2 pipe2.2
|
MLINKS+=pipe.2 pipe2.2
|
||||||
|
MLINKS+=statvfs.2 fstatvfs.2
|
||||||
|
MLINKS+=statvfs.2 statvfs1.2
|
||||||
|
MLINKS+=statvfs.2 fstatvfs1.2
|
||||||
.endif # !defined(__MINIX)
|
.endif # !defined(__MINIX)
|
||||||
.if !defined(__MINIX)
|
.if !defined(__MINIX)
|
||||||
MLINKS+=accept.2 paccept.2
|
MLINKS+=accept.2 paccept.2
|
||||||
|
|
|
@ -8,7 +8,7 @@ MAN= accept.2 access.2 alarm.2 bind.2 brk.2 chdir.2 chmod.2 chown.2 \
|
||||||
rmdir.2 select.2 send.2 sendmsg.2 sendto.2 setsid.2 \
|
rmdir.2 select.2 send.2 sendmsg.2 sendto.2 setsid.2 \
|
||||||
setsockopt.2 setuid.2 shutdown.2 sigaction.2 sigpending.2 \
|
setsockopt.2 setuid.2 shutdown.2 sigaction.2 sigpending.2 \
|
||||||
sigprocmask.2 sigsuspend.2 socket.2 socketpair.2 \
|
sigprocmask.2 sigsuspend.2 socket.2 socketpair.2 \
|
||||||
statvfs.2 svrctl.2 symlink.2 sync.2 time.2 times.2 truncate.2 \
|
svrctl.2 symlink.2 sync.2 time.2 times.2 truncate.2 \
|
||||||
umask.2 uname.2 unlink.2 utime.2 wait.2 write.2
|
umask.2 uname.2 unlink.2 utime.2 wait.2 write.2
|
||||||
|
|
||||||
MLINKS += select.2 FD_CLR.2
|
MLINKS += select.2 FD_CLR.2
|
||||||
|
@ -16,7 +16,6 @@ MLINKS += select.2 FD_ISSET.2
|
||||||
MLINKS += select.2 FD_SET.2
|
MLINKS += select.2 FD_SET.2
|
||||||
MLINKS += setuid.2 seteuid.2
|
MLINKS += setuid.2 seteuid.2
|
||||||
MLINKS += setuid.2 setgid.2
|
MLINKS += setuid.2 setgid.2
|
||||||
MLINKS += statvfs.2 fstatvfs.2
|
|
||||||
|
|
||||||
.include <bsd.man.mk>
|
.include <bsd.man.mk>
|
||||||
.include <bsd.subdir.mk>
|
.include <bsd.subdir.mk>
|
||||||
|
|
|
@ -1,133 +0,0 @@
|
||||||
.\" $NetBSD: statvfs.2,v 1.4 2005/11/04 06:09:20 gendalia Exp $
|
|
||||||
.\"
|
|
||||||
.\" Copyright (c) 1989, 1991, 1993
|
|
||||||
.\" The Regents of the University of California. All rights reserved.
|
|
||||||
.\"
|
|
||||||
.\" Redistribution and use in source and binary forms, with or without
|
|
||||||
.\" modification, are permitted provided that the following conditions
|
|
||||||
.\" are met:
|
|
||||||
.\" 1. Redistributions of source code must retain the above copyright
|
|
||||||
.\" notice, this list of conditions and the following disclaimer.
|
|
||||||
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
.\" notice, this list of conditions and the following disclaimer in the
|
|
||||||
.\" documentation and/or other materials provided with the distribution.
|
|
||||||
.\" 3. Neither the name of the University nor the names of its contributors
|
|
||||||
.\" may be used to endorse or promote products derived from this software
|
|
||||||
.\" without specific prior written permission.
|
|
||||||
.\"
|
|
||||||
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
|
||||||
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
|
||||||
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
||||||
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
||||||
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
||||||
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
||||||
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
||||||
.\" SUCH DAMAGE.
|
|
||||||
.\"
|
|
||||||
.\" @(#)statfs.2 8.5 (Berkeley) 5/24/95
|
|
||||||
.\"
|
|
||||||
.Dd April 14, 2004
|
|
||||||
.Dt STATVFS 2
|
|
||||||
.Os
|
|
||||||
.Sh NAME
|
|
||||||
.Nm statvfs ,
|
|
||||||
.Nm fstatvfs ,
|
|
||||||
.Nd get file system statistics
|
|
||||||
.Sh LIBRARY
|
|
||||||
.Lb libc
|
|
||||||
.Sh SYNOPSIS
|
|
||||||
.In sys/statvfs.h
|
|
||||||
.Ft int
|
|
||||||
.Fn statvfs "const char *path" "struct statvfs *buf"
|
|
||||||
.Ft int
|
|
||||||
.Fn fstatvfs "int fd" "struct statvfs *buf"
|
|
||||||
.Sh DESCRIPTION
|
|
||||||
.Fn statvfs
|
|
||||||
returns information about a mounted file system.
|
|
||||||
.Fa path
|
|
||||||
is the path name of any file within the mounted file system.
|
|
||||||
.Fa buf
|
|
||||||
is a pointer to a
|
|
||||||
.Nm statvfs
|
|
||||||
structure defined in
|
|
||||||
.Xr statvfs 5 .
|
|
||||||
.Pp
|
|
||||||
.Fn fstatvfs
|
|
||||||
returns the same information about an open file referenced by descriptor
|
|
||||||
.Fa fd .
|
|
||||||
.Pp
|
|
||||||
.Sh RETURN VALUES
|
|
||||||
Upon successful completion, a value of 0 is returned.
|
|
||||||
Otherwise, \-1 is returned and the global variable
|
|
||||||
.Va errno
|
|
||||||
is set to indicate the error.
|
|
||||||
.Sh ERRORS
|
|
||||||
.Fn statvfs
|
|
||||||
fails if one or more of the following are true:
|
|
||||||
.Bl -tag -width Er
|
|
||||||
.It Bq Er ENOTDIR
|
|
||||||
A component of the path prefix of
|
|
||||||
.Fa path
|
|
||||||
is not a directory.
|
|
||||||
.It Bq Er ENAMETOOLONG
|
|
||||||
The length of a component of
|
|
||||||
.Fa path
|
|
||||||
exceeds
|
|
||||||
.Dv NAME_MAX
|
|
||||||
characters, or the length of
|
|
||||||
.Fa path
|
|
||||||
exceeds
|
|
||||||
.Dv PATH_MAX
|
|
||||||
characters.
|
|
||||||
.It Bq Er ENOENT
|
|
||||||
The file referred to by
|
|
||||||
.Fa path
|
|
||||||
does not exist.
|
|
||||||
.It Bq Er EACCES
|
|
||||||
Search permission is denied for a component of the path prefix of
|
|
||||||
.Fa path .
|
|
||||||
.It Bq Er ELOOP
|
|
||||||
Too many symbolic links were encountered in translating
|
|
||||||
.Fa path .
|
|
||||||
.It Bq Er EFAULT
|
|
||||||
.Fa buf
|
|
||||||
or
|
|
||||||
.Fa path
|
|
||||||
points to an invalid address.
|
|
||||||
.It Bq Er EIO
|
|
||||||
An
|
|
||||||
.Tn I/O
|
|
||||||
error occurred while reading from or writing to the file system.
|
|
||||||
.El
|
|
||||||
.Pp
|
|
||||||
.Fn fstatvfs
|
|
||||||
fails if one or more of the following are true:
|
|
||||||
.Bl -tag -width Er
|
|
||||||
.It Bq Er EBADF
|
|
||||||
.Fa fd
|
|
||||||
is not a valid open file descriptor.
|
|
||||||
.It Bq Er EFAULT
|
|
||||||
.Fa buf
|
|
||||||
points to an invalid address.
|
|
||||||
.It Bq Er EIO
|
|
||||||
An
|
|
||||||
.Tn I/O
|
|
||||||
error occurred while reading from or writing to the file system.
|
|
||||||
.El
|
|
||||||
.Sh SEE ALSO
|
|
||||||
.Xr statvfs 5
|
|
||||||
.Sh HISTORY
|
|
||||||
The
|
|
||||||
.Fn statvfs ,
|
|
||||||
and
|
|
||||||
.Fn fstatvfs ,
|
|
||||||
functions first appeared in
|
|
||||||
.Nx 3.0
|
|
||||||
to replace
|
|
||||||
the
|
|
||||||
.Fn statfs
|
|
||||||
family of functions which first appeared in
|
|
||||||
.Bx 4.4 .
|
|
|
@ -7,8 +7,8 @@
|
||||||
* do_lstat: perform the LSTAT system call
|
* do_lstat: perform the LSTAT system call
|
||||||
* do_stat: perform the STAT system call
|
* do_stat: perform the STAT system call
|
||||||
* do_fstat: perform the FSTAT system call
|
* do_fstat: perform the FSTAT system call
|
||||||
* do_statvfs: perform the STATVFS system call
|
* do_statvfs: perform the STATVFS1 system call
|
||||||
* do_fstatvfs: perform the FSTATVFS system call
|
* do_fstatvfs: perform the FSTATVFS1 system call
|
||||||
* do_getvfsstat: perform the GETVFSSTAT system call
|
* do_getvfsstat: perform the GETVFSSTAT system call
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -310,8 +310,8 @@ static int fill_statvfs(struct vmnt *vmp, endpoint_t endpt, vir_bytes buf_addr,
|
||||||
*===========================================================================*/
|
*===========================================================================*/
|
||||||
int do_statvfs(message *UNUSED(m_out))
|
int do_statvfs(message *UNUSED(m_out))
|
||||||
{
|
{
|
||||||
/* Perform the statvfs(name, buf) system call. */
|
/* Perform the statvfs1(name, buf, flags) system call. */
|
||||||
int r;
|
int r, flags;
|
||||||
struct vnode *vp;
|
struct vnode *vp;
|
||||||
struct vmnt *vmp;
|
struct vmnt *vmp;
|
||||||
char fullpath[PATH_MAX];
|
char fullpath[PATH_MAX];
|
||||||
|
@ -319,9 +319,10 @@ int do_statvfs(message *UNUSED(m_out))
|
||||||
vir_bytes vname1, statbuf;
|
vir_bytes vname1, statbuf;
|
||||||
size_t vname1_length;
|
size_t vname1_length;
|
||||||
|
|
||||||
vname1 = (vir_bytes) job_m_in.name1;
|
vname1 = (vir_bytes) job_m_in.VFS_STATVFS1_NAME;
|
||||||
vname1_length = (size_t) job_m_in.name1_length;
|
vname1_length = (size_t) job_m_in.VFS_STATVFS1_LEN;
|
||||||
statbuf = (vir_bytes) job_m_in.name2;
|
statbuf = (vir_bytes) job_m_in.VFS_STATVFS1_BUF;
|
||||||
|
flags = job_m_in.VFS_STATVFS1_FLAGS;
|
||||||
|
|
||||||
lookup_init(&resolve, fullpath, PATH_NOFLAGS, &vmp, &vp);
|
lookup_init(&resolve, fullpath, PATH_NOFLAGS, &vmp, &vp);
|
||||||
resolve.l_vmnt_lock = VMNT_READ;
|
resolve.l_vmnt_lock = VMNT_READ;
|
||||||
|
@ -329,7 +330,7 @@ int do_statvfs(message *UNUSED(m_out))
|
||||||
|
|
||||||
if (fetch_name(vname1, vname1_length, fullpath) != OK) return(err_code);
|
if (fetch_name(vname1, vname1_length, fullpath) != OK) return(err_code);
|
||||||
if ((vp = eat_path(&resolve, fp)) == NULL) return(err_code);
|
if ((vp = eat_path(&resolve, fp)) == NULL) return(err_code);
|
||||||
r = fill_statvfs(vp->v_vmnt, who_e, statbuf, ST_WAIT);
|
r = fill_statvfs(vp->v_vmnt, who_e, statbuf, flags);
|
||||||
|
|
||||||
unlock_vnode(vp);
|
unlock_vnode(vp);
|
||||||
unlock_vmnt(vmp);
|
unlock_vmnt(vmp);
|
||||||
|
@ -343,17 +344,18 @@ int do_statvfs(message *UNUSED(m_out))
|
||||||
*===========================================================================*/
|
*===========================================================================*/
|
||||||
int do_fstatvfs(message *UNUSED(m_out))
|
int do_fstatvfs(message *UNUSED(m_out))
|
||||||
{
|
{
|
||||||
/* Perform the fstatvfs(fd, buf) system call. */
|
/* Perform the fstatvfs1(fd, buf, flags) system call. */
|
||||||
register struct filp *rfilp;
|
register struct filp *rfilp;
|
||||||
int r, rfd;
|
int r, rfd, flags;
|
||||||
vir_bytes statbuf;
|
vir_bytes statbuf;
|
||||||
|
|
||||||
rfd = job_m_in.fd;
|
rfd = job_m_in.VFS_FSTATVFS1_FD;
|
||||||
statbuf = (vir_bytes) job_m_in.name2;
|
statbuf = (vir_bytes) job_m_in.VFS_FSTATVFS1_BUF;
|
||||||
|
flags = job_m_in.VFS_FSTATVFS1_FLAGS;
|
||||||
|
|
||||||
/* Is the file descriptor valid? */
|
/* Is the file descriptor valid? */
|
||||||
if ((rfilp = get_filp(rfd, VNODE_READ)) == NULL) return(err_code);
|
if ((rfilp = get_filp(rfd, VNODE_READ)) == NULL) return(err_code);
|
||||||
r = fill_statvfs(rfilp->filp_vno->v_vmnt, who_e, statbuf, ST_WAIT);
|
r = fill_statvfs(rfilp->filp_vno->v_vmnt, who_e, statbuf, flags);
|
||||||
|
|
||||||
unlock_filp(rfilp);
|
unlock_filp(rfilp);
|
||||||
|
|
||||||
|
|
|
@ -118,6 +118,9 @@ __BEGIN_DECLS
|
||||||
int statvfs(const char *__restrict, struct statvfs *__restrict);
|
int statvfs(const char *__restrict, struct statvfs *__restrict);
|
||||||
int fstatvfs(int, struct statvfs *);
|
int fstatvfs(int, struct statvfs *);
|
||||||
int getvfsstat(struct statvfs *, size_t, int);
|
int getvfsstat(struct statvfs *, size_t, int);
|
||||||
|
|
||||||
|
int statvfs1(const char *__restrict, struct statvfs *__restrict, int);
|
||||||
|
int fstatvfs1(int, struct statvfs *, int);
|
||||||
__END_DECLS
|
__END_DECLS
|
||||||
|
|
||||||
#endif /* !_SYS_STATVFS_H_ */
|
#endif /* !_SYS_STATVFS_H_ */
|
||||||
|
|
Loading…
Reference in a new issue