Author: kib
Date: Tue Oct 12 09:18:17 2010
New Revision: 213716
URL: http://svn.freebsd.org/changeset/base/213716

Log:
  Add macro DECLARE_MODULE_TIED to denote a module as requiring the
  kernel of exactly the same __FreeBSD_version as the headers module was
  compiled against.
  
  Mark our in-tree ABI emulators with DECLARE_MODULE_TIED. The modules
  use kernel interfaces that the Release Engineering Team feel are not
  stable enough to guarantee they will not change during the life cycle
  of a STABLE branch. In particular, the layout of struct sysentvec is
  declared to be not part of the STABLE KBI.
  
  Discussed with:       bz, rwatson
  Approved by:  re (bz, kensmith)
  MFC after:    2 weeks

Modified:
  head/sys/amd64/linux32/linux32_sysvec.c
  head/sys/compat/svr4/svr4_sysvec.c
  head/sys/i386/ibcs2/ibcs2_sysvec.c
  head/sys/i386/linux/linux_sysvec.c
  head/sys/sys/exec.h
  head/sys/sys/module.h

Modified: head/sys/amd64/linux32/linux32_sysvec.c
==============================================================================
--- head/sys/amd64/linux32/linux32_sysvec.c     Tue Oct 12 09:10:24 2010        
(r213715)
+++ head/sys/amd64/linux32/linux32_sysvec.c     Tue Oct 12 09:18:17 2010        
(r213716)
@@ -1210,4 +1210,4 @@ static moduledata_t linux_elf_mod = {
        0
 };
 
-DECLARE_MODULE(linuxelf, linux_elf_mod, SI_SUB_EXEC, SI_ORDER_ANY);
+DECLARE_MODULE_TIED(linuxelf, linux_elf_mod, SI_SUB_EXEC, SI_ORDER_ANY);

Modified: head/sys/compat/svr4/svr4_sysvec.c
==============================================================================
--- head/sys/compat/svr4/svr4_sysvec.c  Tue Oct 12 09:10:24 2010        
(r213715)
+++ head/sys/compat/svr4/svr4_sysvec.c  Tue Oct 12 09:18:17 2010        
(r213716)
@@ -309,5 +309,5 @@ static moduledata_t svr4_elf_mod = {
        svr4_elf_modevent,
        0
 };
-DECLARE_MODULE(svr4elf, svr4_elf_mod, SI_SUB_EXEC, SI_ORDER_ANY);
+DECLARE_MODULE_TIED(svr4elf, svr4_elf_mod, SI_SUB_EXEC, SI_ORDER_ANY);
 MODULE_DEPEND(svr4elf, streams, 1, 1, 1);

Modified: head/sys/i386/ibcs2/ibcs2_sysvec.c
==============================================================================
--- head/sys/i386/ibcs2/ibcs2_sysvec.c  Tue Oct 12 09:10:24 2010        
(r213715)
+++ head/sys/i386/ibcs2/ibcs2_sysvec.c  Tue Oct 12 09:18:17 2010        
(r213716)
@@ -134,4 +134,4 @@ static moduledata_t ibcs2_mod = {
        ibcs2_modevent,
        0
 };
-DECLARE_MODULE(ibcs2, ibcs2_mod, SI_SUB_PSEUDO, SI_ORDER_ANY);
+DECLARE_MODULE_TIED(ibcs2, ibcs2_mod, SI_SUB_PSEUDO, SI_ORDER_ANY);

Modified: head/sys/i386/linux/linux_sysvec.c
==============================================================================
--- head/sys/i386/linux/linux_sysvec.c  Tue Oct 12 09:10:24 2010        
(r213715)
+++ head/sys/i386/linux/linux_sysvec.c  Tue Oct 12 09:18:17 2010        
(r213716)
@@ -1179,4 +1179,4 @@ static moduledata_t linux_elf_mod = {
        0
 };
 
-DECLARE_MODULE(linuxelf, linux_elf_mod, SI_SUB_EXEC, SI_ORDER_ANY);
+DECLARE_MODULE_TIED(linuxelf, linux_elf_mod, SI_SUB_EXEC, SI_ORDER_ANY);

Modified: head/sys/sys/exec.h
==============================================================================
--- head/sys/sys/exec.h Tue Oct 12 09:10:24 2010        (r213715)
+++ head/sys/sys/exec.h Tue Oct 12 09:18:17 2010        (r213716)
@@ -115,7 +115,8 @@ int exec_unregister(const struct execsw 
                __CONCAT(name,_modevent), \
                (void *)& execsw_arg \
        }; \
-       DECLARE_MODULE(name, __CONCAT(name,_mod), SI_SUB_EXEC, SI_ORDER_ANY)
+       DECLARE_MODULE_TIED(name, __CONCAT(name,_mod), SI_SUB_EXEC, \
+           SI_ORDER_ANY)
 #endif
 
 #endif

Modified: head/sys/sys/module.h
==============================================================================
--- head/sys/sys/module.h       Tue Oct 12 09:10:24 2010        (r213715)
+++ head/sys/sys/module.h       Tue Oct 12 09:18:17 2010        (r213716)
@@ -125,13 +125,26 @@ struct mod_metadata {
  */
 #define        MODULE_KERNEL_MAXVER    (roundup(__FreeBSD_version, 100000) - 1)
 
-#define        DECLARE_MODULE(name, data, sub, order)                          
\
+#define        DECLARE_MODULE_WITH_MAXVER(name, data, sub, order, maxver)      
\
        MODULE_DEPEND(name, kernel, __FreeBSD_version,                  \
-           __FreeBSD_version, MODULE_KERNEL_MAXVER);                   \
+           __FreeBSD_version, maxver);                 \
        MODULE_METADATA(_md_##name, MDT_MODULE, &data, #name);          \
        SYSINIT(name##module, sub, order, module_register_init, &data); \
        struct __hack
 
+#define        DECLARE_MODULE(name, data, sub, order)                          
\
+       DECLARE_MODULE_WITH_MAXVER(name, data, sub, order, MODULE_KERNEL_MAXVER)
+
+/*
+ * The module declared with DECLARE_MODULE_TIED can only be loaded
+ * into the kernel with exactly the same __FreeBSD_version.
+ *
+ * Use it for modules that use kernel interfaces that are not stable
+ * even on STABLE/X branches.
+ */
+#define        DECLARE_MODULE_TIED(name, data, sub, order)                     
        \
+       DECLARE_MODULE_WITH_MAXVER(name, data, sub, order, __FreeBSD_version)
+
 #define        MODULE_VERSION(module, version)                                 
\
        static struct mod_version _##module##_version = {               \
                version                                                 \
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to