summaryrefslogtreecommitdiffstats
path: root/sys/kern/vfs_init.c
diff options
context:
space:
mode:
authorphk <phk@FreeBSD.org>1995-11-20 12:42:39 +0000
committerphk <phk@FreeBSD.org>1995-11-20 12:42:39 +0000
commitd0c66446cc835afd7c554f93568beda34a3cbba0 (patch)
tree3c18ee3a32f49eafefcfca9b38f0533552958ab7 /sys/kern/vfs_init.c
parent7921cd5a326a4e25ea8f8e1c4da15f46710544e6 (diff)
downloadFreeBSD-src-d0c66446cc835afd7c554f93568beda34a3cbba0.zip
FreeBSD-src-d0c66446cc835afd7c554f93568beda34a3cbba0.tar.gz
Mega commit for sysctl.
Convert the remaining sysctl stuff to the new way of doing things. the devconf stuff is the reason for the large number of files. Cleaned up some compiler warnings while I were there.
Diffstat (limited to 'sys/kern/vfs_init.c')
-rw-r--r--sys/kern/vfs_init.c72
1 files changed, 16 insertions, 56 deletions
diff --git a/sys/kern/vfs_init.c b/sys/kern/vfs_init.c
index 5c98182..efbb5e4 100644
--- a/sys/kern/vfs_init.c
+++ b/sys/kern/vfs_init.c
@@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)vfs_init.c 8.3 (Berkeley) 1/4/94
- * $Id: vfs_init.c,v 1.12 1995/09/09 18:10:16 davidg Exp $
+ * $Id: vfs_init.c,v 1.13 1995/11/09 08:13:51 bde Exp $
*/
@@ -287,66 +287,26 @@ vfsinit(udata)
/*
* kernel related system variables.
*/
-int
-fs_sysctl(name, namelen, oldp, oldlenp, newp, newlen, p)
- int *name;
- u_int namelen;
- void *oldp;
- size_t *oldlenp;
- void *newp;
- size_t newlen;
- struct proc *p;
-{
- int i;
- int error;
- int buflen = *oldlenp;
- caddr_t where = oldp, start = oldp;
-
- switch (name[0]) {
- case FS_VFSCONF:
- if (namelen != 1) return ENOTDIR;
-
- if (oldp == NULL) {
- *oldlenp = (MOUNT_MAXTYPE+1) * sizeof(struct vfsconf);
- return 0;
- }
- if (newp) {
- return EINVAL;
- }
-
- for(i = 0; i < MOUNT_MAXTYPE + 1; i++) {
- if(buflen < sizeof *vfsconf[i]) {
- *oldlenp = where - start;
- return ENOMEM;
- }
- error = copyout(vfsconf[i], where, sizeof *vfsconf[i]);
- if(error)
- return error;
- where += sizeof *vfsconf[i];
- buflen -= sizeof *vfsconf[i];
- }
- *oldlenp = where - start;
- return 0;
-
- default:
- if(namelen < 1) return EINVAL;
-
- i = name[0];
-
- if(i <= MOUNT_MAXTYPE
- && vfssw[i]
- && vfssw[i]->vfs_sysctl) {
- return vfssw[i]->vfs_sysctl(name + 1, namelen - 1,
- oldp, oldlenp,
- newp, newlen, p);
- }
+static int
+sysctl_fs_vfsconf SYSCTL_HANDLER_ARGS
+{
+ int i, error;
- return (EOPNOTSUPP);
+ if (req->newptr)
+ return EINVAL;
+ for(i = 0; i < MOUNT_MAXTYPE + 1; i++) {
+ error = SYSCTL_OUT(req, vfsconf[i], sizeof *vfsconf[i]);
+ if(error)
+ return error;
}
- /* NOTREACHED */
+ return (error);
+
}
+SYSCTL_PROC(_fs, FS_VFSCONF, vfsconf, CTLTYPE_OPAQUE|CTLFLAG_RD,
+ 0, 0, sysctl_fs_vfsconf, "");
+
/*
* This goop is here to support a loadable NFS module... grumble...
*/
OpenPOWER on IntegriCloud