Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

src: Finish separating the compat_09 and compat_43 stuff



details:   https://anonhg.NetBSD.org/src/rev/847b642f4f8d
branches:  pgoyette-compat
changeset: 318264:847b642f4f8d
user:      pgoyette <pgoyette%NetBSD.org@localhost>
date:      Tue Apr 17 07:24:54 2018 +0000
description:
Finish separating the compat_09 and compat_43 stuff

diffstat:

 distrib/sets/lists/modules/mi           |    4 +-
 sys/compat/common/Makefile.sysio        |    3 +-
 sys/compat/common/compat_mod.c          |   35 +-----
 sys/compat/common/compat_mod.h          |   14 +-
 sys/compat/common/compat_sysctl_09_43.c |  166 ++++++++++++++++++++++++++++++++
 sys/compat/common/files.common          |    3 +-
 sys/compat/common/kern_sig_16.c         |    8 +-
 sys/compat/common/kern_sig_43.c         |    9 +-
 sys/compat/common/vfs_syscalls_43.c     |   65 +------------
 sys/kern/compat_stub.c                  |    7 +-
 sys/sys/compat_stub.h                   |    7 +-
 11 files changed, 208 insertions(+), 113 deletions(-)

diffs (truncated from 535 to 300 lines):

diff -r 5e725964b320 -r 847b642f4f8d distrib/sets/lists/modules/mi
--- a/distrib/sets/lists/modules/mi     Tue Apr 17 06:20:26 2018 +0000
+++ b/distrib/sets/lists/modules/mi     Tue Apr 17 07:24:54 2018 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.114.2.15 2018/04/17 00:02:58 pgoyette Exp $
+# $NetBSD: mi,v 1.114.2.16 2018/04/17 07:24:55 pgoyette Exp $
 #
 # Note: don't delete entries from here - mark them as "obsolete" instead.
 #
@@ -70,6 +70,8 @@
 ./@MODULEDIR@/compat/compat.kmod               base-kernel-modules     kmod
 ./@MODULEDIR@/compat_util                      base-kernel-modules     kmod
 ./@MODULEDIR@/compat_util/compat_util.kmod     base-kernel-modules     kmod
+./@MODULEDIR@/compat_sysctl_09_43              base-kernel-modules     kmod
+./@MODULEDIR@/compat_sysctl_09_43/compat_sysctl_09._43kmod     base-kernel-modules     kmod
 ./@MODULEDIR@/compat_09                                base-kernel-modules     kmod
 ./@MODULEDIR@/compat_09/compat_09.kmod         base-kernel-modules     kmod
 ./@MODULEDIR@/compat_10                                base-kernel-modules     kmod
diff -r 5e725964b320 -r 847b642f4f8d sys/compat/common/Makefile.sysio
--- a/sys/compat/common/Makefile.sysio  Tue Apr 17 06:20:26 2018 +0000
+++ b/sys/compat/common/Makefile.sysio  Tue Apr 17 07:24:54 2018 +0000
@@ -1,4 +1,4 @@
-#      $NetBSD: Makefile.sysio,v 1.7.18.20 2018/04/03 08:29:44 pgoyette Exp $
+#      $NetBSD: Makefile.sysio,v 1.7.18.21 2018/04/17 07:24:54 pgoyette Exp $
 
 # Sources for syscall and ioctl compatibility across the versions.
 
@@ -8,6 +8,7 @@
 
 # Compatibility code for NetBSD 0.9
 SRCS+= kern_info_09.c
+SRCS+= compat_sysctl_09_43.c           # for compat_43 or compat_09
 
 # Compatability code for NetBSD 1.0
 SRCS+= vfs_syscalls_10.c
diff -r 5e725964b320 -r 847b642f4f8d sys/compat/common/compat_mod.c
--- a/sys/compat/common/compat_mod.c    Tue Apr 17 06:20:26 2018 +0000
+++ b/sys/compat/common/compat_mod.c    Tue Apr 17 07:24:54 2018 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: compat_mod.c,v 1.24.14.33 2018/04/17 00:02:58 pgoyette Exp $   */
+/*     $NetBSD: compat_mod.c,v 1.24.14.34 2018/04/17 07:24:55 pgoyette Exp $   */
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -34,7 +34,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: compat_mod.c,v 1.24.14.33 2018/04/17 00:02:58 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: compat_mod.c,v 1.24.14.34 2018/04/17 07:24:55 pgoyette Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_compat_netbsd.h"
@@ -49,15 +49,10 @@
 #include <sys/syscall.h>
 #include <sys/syscallargs.h>
 #include <sys/syscallvar.h>
-#include <sys/sysctl.h>
 
 #include <compat/common/compat_util.h>
 #include <compat/common/compat_mod.h>
 
-#if defined(COMPAT_09) || defined(COMPAT_43)
-static struct sysctllog *compat_clog = NULL;
-#endif
-
 static const char * const compat_includes[] = {
        "compat_80", "compat_70", "compat_60", "compat_50", "compat_40",
        "compat_30", "compat_20", "compat_16", "compat_14", "compat_13",
@@ -108,6 +103,9 @@
 #ifdef COMPAT_10
        { compat_10_init, compat_10_fini },
 #endif
+#if defined(COMPAT_09) || defined(COMPAT_43)
+       { compat_sysctl_09_43_init, compat_sysctl_09_43_fini },
+#endif
 #ifdef COMPAT_09
        { compat_09_init, compat_09_fini },
 #endif
@@ -140,7 +138,6 @@
                        }
                }
 
-               compat_sysctl_init();
                return 0;
 
        case MODULE_CMD_FINI:
@@ -149,7 +146,6 @@
                 * if any component fails to fini(), re-init those
                 * components which had already been disabled
                 */
-               compat_sysctl_fini();
                for (i = __arraycount(init_fini_list) - 1; i >= 0; i--) {
                        error = (*init_fini_list[i].fini)();
                        if (error != 0) {
@@ -166,24 +162,3 @@
                return ENOTTY;
        }
 }
-
-void
-compat_sysctl_init(void)
-{
-
-#if defined(COMPAT_09) || defined(COMPAT_43)
-       compat_sysctl_vfs(&compat_clog);
-#endif
-}
-
-void
-compat_sysctl_fini(void)
-{
- 
-#if defined(COMPAT_09) || defined(COMPAT_43)
-        sysctl_teardown(&compat_clog);
-#endif
-#if defined(COMPAT_43)
-       if_43_fini();
-#endif
-}
diff -r 5e725964b320 -r 847b642f4f8d sys/compat/common/compat_mod.h
--- a/sys/compat/common/compat_mod.h    Tue Apr 17 06:20:26 2018 +0000
+++ b/sys/compat/common/compat_mod.h    Tue Apr 17 07:24:54 2018 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: compat_mod.h,v 1.1.42.20 2018/04/17 00:02:58 pgoyette Exp $    */
+/*     $NetBSD: compat_mod.h,v 1.1.42.21 2018/04/17 07:24:55 pgoyette Exp $    */
 
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
@@ -32,13 +32,6 @@
 #ifndef        _COMPAT_MOD_H
 #define        _COMPAT_MOD_H
 
-#include <sys/sysctl.h>
-
-void compat_sysctl_init(void);
-void compat_sysctl_fini(void);
-
-void compat_sysctl_vfs(struct sysctllog **);
-
 #ifdef COMPAT_80
 int compat_80_init(void);
 int compat_80_fini(void);
@@ -189,4 +182,9 @@
 int if_43_fini(void);
 #endif
 
+#if defined(COMPAT_09) || defined(COMPAT_43)
+int compat_sysctl_09_43_init(void);
+int compat_sysctl_09_43_fini(void);
+#endif
+
 #endif /* !_COMPAT_MOD_H_ */
diff -r 5e725964b320 -r 847b642f4f8d sys/compat/common/compat_sysctl_09_43.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/compat/common/compat_sysctl_09_43.c   Tue Apr 17 07:24:54 2018 +0000
@@ -0,0 +1,166 @@
+/*     $NetBSD: compat_sysctl_09_43.c,v 1.1.2.1 2018/04/17 07:24:55 pgoyette Exp $     */
+
+/*
+ * Copyright (c) 1989, 1993
+ *     The Regents of the University of California.  All rights reserved.
+ * (c) UNIX System Laboratories, Inc.
+ * All or some portions of this file are derived from material licensed
+ * to the University of California by American Telephone and Telegraph
+ * Co. or Unix System Laboratories, Inc. and are reproduced herein with
+ * the permission of UNIX System Laboratories, Inc.
+ *
+ * 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.
+ *
+ *     @(#)vfs_syscalls.c      8.28 (Berkeley) 12/10/94
+ */
+
+#include <sys/cdefs.h>
+__KERNEL_RCSID(0, "$NetBSD: compat_sysctl_09_43.c,v 1.1.2.1 2018/04/17 07:24:55 pgoyette Exp $");
+
+#if defined(_KERNEL_OPT)
+#include "opt_compat_netbsd.h"
+#endif
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/filedesc.h>
+#include <sys/kernel.h>
+#include <sys/proc.h>
+#include <sys/malloc.h>
+#include <sys/sysctl.h>
+#include <sys/module.h>
+
+#include <sys/mount.h>
+#include <sys/syscall.h>
+#include <sys/syscallvar.h>
+#include <sys/syscallargs.h>
+#include <sys/vfs_syscalls.h>
+
+#include <compat/sys/mount.h>
+#include <compat/common/compat_mod.h>
+
+/*
+ * sysctl helper routine for vfs.generic.conf lookups.
+ */
+#if defined(COMPAT_09) || defined(COMPAT_43) || defined(COMPAT_44)
+
+static int
+sysctl_vfs_generic_conf(SYSCTLFN_ARGS)
+{
+        struct vfsconf vfc;
+       struct sysctlnode node;
+       struct vfsops *vfsp;
+       u_int vfsnum;
+
+       if (namelen != 1)
+               return (ENOTDIR);
+       vfsnum = name[0];
+       if (vfsnum >= nmountcompatnames ||
+           mountcompatnames[vfsnum] == NULL)
+               return (EOPNOTSUPP);
+       vfsp = vfs_getopsbyname(mountcompatnames[vfsnum]);
+       if (vfsp == NULL)
+               return (EOPNOTSUPP);
+
+       vfc.vfc_vfsops = vfsp;
+       strncpy(vfc.vfc_name, vfsp->vfs_name, sizeof(vfc.vfc_name));
+       vfc.vfc_typenum = vfsnum;
+       vfc.vfc_refcount = vfsp->vfs_refcount;
+       vfc.vfc_flags = 0;
+       vfc.vfc_mountroot = vfsp->vfs_mountroot;
+       vfc.vfc_next = NULL;
+       vfs_delref(vfsp);
+
+       node = *rnode;
+       node.sysctl_data = &vfc;
+       return (sysctl_lookup(SYSCTLFN_CALL(&node)));
+}
+
+/*
+ * Top level filesystem related information gathering.
+ */
+static int
+compat_sysctl_vfs(struct sysctllog **clog)
+{
+       int error;
+
+       error = sysctl_createv(clog, 0, NULL, NULL,
+                      CTLFLAG_PERMANENT|CTLFLAG_IMMEDIATE,
+                      CTLTYPE_INT, "maxtypenum",
+                      SYSCTL_DESCR("Highest valid filesystem type number"),
+                      NULL, nmountcompatnames, NULL, 0,
+                      CTL_VFS, VFS_GENERIC, VFS_MAXTYPENUM, CTL_EOL);
+       if (error == EEXIST)
+               error = 0;
+       if (error != 0)
+               return error;
+
+       error = sysctl_createv(clog, 0, NULL, NULL,
+                      CTLFLAG_PERMANENT,
+                      CTLTYPE_STRUCT, "conf",
+                      SYSCTL_DESCR("Filesystem configuration information"),
+                      sysctl_vfs_generic_conf, 0, NULL,
+                      sizeof(struct vfsconf),
+                      CTL_VFS, VFS_GENERIC, VFS_CONF, CTL_EOL);
+
+       return error;
+}
+#endif
+
+static struct sysctllog *clog = NULL;
+
+int
+compat_sysctl_09_43_init(void)
+{
+
+       return compat_sysctl_vfs(&clog);
+}
+
+int
+compat_sysctl_09_43_fini(void)
+{



Home | Main Index | Thread Index | Old Index