The [f]statvfs(3) calls now use [f]statvfs1(2).
Change-Id: I949c177fc14abf976e45165c342f897f4ec988ee
./usr/man/man2/FD_SET.2 minix-sys
./usr/man/man2/fork.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/getitimer.2 minix-sys
./usr/man/man2/getnucred.2 minix-sys
./usr/man/man2/socket.2 minix-sys
./usr/man/man2/socketpair.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/symlink.2 minix-sys
./usr/man/man2/sync.2 minix-sys
#define GETDENTS_321 80 /* to VFS */
#define LLSEEK 81 /* to VFS */
#define GETVFSSTAT 82 /* to VFS */
-#define STATVFS 83 /* to VFS */
-#define FSTATVFS 84 /* to VFS */
+#define STATVFS1 83 /* to VFS */
+#define FSTATVFS1 84 /* to VFS */
#define SELECT 85 /* to VFS */
#define FCHDIR 86 /* to VFS */
#define FSYNC 87 /* to VFS */
#define VFS_GETVFSSTAT_SIZE m1_i1
#define VFS_GETVFSSTAT_FLAGS m1_i2
-/* Field names for the fstatvfs call */
-#define FSTATVFS_FD m1_i1
-#define FSTATVFS_BUF m1_p1
-
-/* Field names for the statvfs call */
-#define STATVFS_LEN m1_i1
-#define STATVFS_NAME m1_p1
-#define STATVFS_BUF m1_p2
+/* Field names for the fstatvfs1(2) call. */
+#define VFS_FSTATVFS1_FD m1_i1
+#define VFS_FSTATVFS1_BUF m1_p1
+#define VFS_FSTATVFS1_FLAGS m1_i2
+
+/* Field names for the statvfs1(2) call. */
+#define VFS_STATVFS1_LEN m1_i1
+#define VFS_STATVFS1_NAME m1_p1
+#define VFS_STATVFS1_BUF m1_p2
+#define VFS_STATVFS1_FLAGS m1_i2
/* Field names for the mount(2) call. */
#define VFS_MOUNT_FLAGS m11_i1
#define freeaddrinfo _freeaddrinfo
#define freeifaddrs _freeifaddrs
#define fstatvfs _fstatvfs
+#define fstatvfs1 _fstatvfs1
#define ftok _ftok
#define ftruncate _ftruncate
#define fts_children _fts_children
#define srand48 _srand48
#define srandom _srandom
#define statvfs(a, b) _statvfs(a, b)
+#define statvfs1 _statvfs1
#define strcasecmp _strcasecmp
#define strdup _strdup
#define stresep _stresep
#include <sys/statvfs.h>
#ifdef __weak_alias
+__weak_alias(fstatvfs1, _fstatvfs1)
__weak_alias(fstatvfs, _fstatvfs)
#endif
-int fstatvfs(int fd, struct statvfs *buffer)
+int fstatvfs1(int fd, struct statvfs *buffer, int flags)
{
message m;
- m.FSTATVFS_FD = fd;
- m.FSTATVFS_BUF = (char *) buffer;
- return(_syscall(VFS_PROC_NR, FSTATVFS, &m));
+ m.VFS_FSTATVFS1_FD = fd;
+ m.VFS_FSTATVFS1_BUF = (char *) buffer;
+ 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);
}
#include <string.h>
#ifdef __weak_alias
+__weak_alias(statvfs1, _statvfs1)
__weak_alias(statvfs, _statvfs)
#endif
-int statvfs(const char *name, struct statvfs *buffer)
+int statvfs1(const char *name, struct statvfs *buffer, int flags)
{
message m;
- m.STATVFS_LEN = strlen(name) + 1;
- m.STATVFS_NAME = (char *) __UNCONST(name);
- m.STATVFS_BUF = (char *) buffer;
- return(_syscall(VFS_PROC_NR, STATVFS, &m));
+ m.VFS_STATVFS1_LEN = strlen(name) + 1;
+ m.VFS_STATVFS1_NAME = (char *) __UNCONST(name);
+ m.VFS_STATVFS1_BUF = (char *) buffer;
+ 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);
}
MLINKS+=chown.2 fchown.2 chown.2 lchown.2
MLINKS+=chroot.2 fchroot.2
.else
+MAN+= statvfs.2
MLINKS+=clock_settime.2 clock_gettime.2
MLINKS+=clock_settime.2 clock_getres.2
.endif # !defined(__MINIX)
MLINKS+=write.2 writev.2 write.2 pwrite.2 write.2 pwritev.2
.else
MLINKS+=pipe.2 pipe2.2
+MLINKS+=statvfs.2 fstatvfs.2
+MLINKS+=statvfs.2 statvfs1.2
+MLINKS+=statvfs.2 fstatvfs1.2
.endif # !defined(__MINIX)
.if !defined(__MINIX)
MLINKS+=accept.2 paccept.2
rmdir.2 select.2 send.2 sendmsg.2 sendto.2 setsid.2 \
setsockopt.2 setuid.2 shutdown.2 sigaction.2 sigpending.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
MLINKS += select.2 FD_CLR.2
MLINKS += select.2 FD_SET.2
MLINKS += setuid.2 seteuid.2
MLINKS += setuid.2 setgid.2
-MLINKS += statvfs.2 fstatvfs.2
.include <bsd.man.mk>
.include <bsd.subdir.mk>
+++ /dev/null
-.\" $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 .
* do_lstat: perform the LSTAT system call
* do_stat: perform the STAT system call
* do_fstat: perform the FSTAT system call
- * do_statvfs: perform the STATVFS system call
- * do_fstatvfs: perform the FSTATVFS system call
+ * do_statvfs: perform the STATVFS1 system call
+ * do_fstatvfs: perform the FSTATVFS1 system call
* do_getvfsstat: perform the GETVFSSTAT system call
*/
*===========================================================================*/
int do_statvfs(message *UNUSED(m_out))
{
-/* Perform the statvfs(name, buf) system call. */
- int r;
+/* Perform the statvfs1(name, buf, flags) system call. */
+ int r, flags;
struct vnode *vp;
struct vmnt *vmp;
char fullpath[PATH_MAX];
vir_bytes vname1, statbuf;
size_t vname1_length;
- vname1 = (vir_bytes) job_m_in.name1;
- vname1_length = (size_t) job_m_in.name1_length;
- statbuf = (vir_bytes) job_m_in.name2;
+ vname1 = (vir_bytes) job_m_in.VFS_STATVFS1_NAME;
+ vname1_length = (size_t) job_m_in.VFS_STATVFS1_LEN;
+ statbuf = (vir_bytes) job_m_in.VFS_STATVFS1_BUF;
+ flags = job_m_in.VFS_STATVFS1_FLAGS;
lookup_init(&resolve, fullpath, PATH_NOFLAGS, &vmp, &vp);
resolve.l_vmnt_lock = VMNT_READ;
if (fetch_name(vname1, vname1_length, fullpath) != OK) 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_vmnt(vmp);
*===========================================================================*/
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;
- int r, rfd;
+ int r, rfd, flags;
vir_bytes statbuf;
- rfd = job_m_in.fd;
- statbuf = (vir_bytes) job_m_in.name2;
+ rfd = job_m_in.VFS_FSTATVFS1_FD;
+ statbuf = (vir_bytes) job_m_in.VFS_FSTATVFS1_BUF;
+ flags = job_m_in.VFS_FSTATVFS1_FLAGS;
/* Is the file descriptor valid? */
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);
int statvfs(const char *__restrict, struct statvfs *__restrict);
int fstatvfs(int, struct statvfs *);
int getvfsstat(struct statvfs *, size_t, int);
+
+int statvfs1(const char *__restrict, struct statvfs *__restrict, int);
+int fstatvfs1(int, struct statvfs *, int);
__END_DECLS
#endif /* !_SYS_STATVFS_H_ */