Module Name:    src
Committed By:   pgoyette
Date:           Sat Mar 10 05:14:26 UTC 2018

Added Files:
        src/doc [pgoyette-compat]: COMPAT-branch-notes

Log Message:
Add some notes on what has been done, and what remains


To generate a diff of this commit:
cvs rdiff -u -r0 -r1.1.2.1 src/doc/COMPAT-branch-notes

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Added files:

Index: src/doc/COMPAT-branch-notes
diff -u /dev/null src/doc/COMPAT-branch-notes:1.1.2.1
--- /dev/null	Sat Mar 10 05:14:26 2018
+++ src/doc/COMPAT-branch-notes	Sat Mar 10 05:14:26 2018
@@ -0,0 +1,45 @@
+DONE
+----
+1. Removed linking of the kernel compat object library into all kernels;
+   using the .o library caused some build breakage, and resulted in the
+   bulk of the compat code being included in every kernel, but without
+   any module linkage.  In turn, this caused failure when loading some
+   modules due to symbols already being defined in the kernel.
+
+2. Reverted some intentional breakage for loading the sysv_ipc module;
+   the breakage was introduced as the fix for the above-mentioned build
+   breakage.  
+
+3. Split the sysv_ipc compat routines into their own compat_sysv module.
+
+4. Resolved some inter-module dependencies.
+
+5. Extracted some net/if.c compat routines into the compat module, and
+   replaced the originals with indirect (vectored) function calls.
+
+
+TODO
+----
+1. Audit the entire code base for any remaining embedded #ifdef's for
+   COMPAT_xx.  When found, move the actual compat code into the compat
+   hierarchy and replace originals with indirect (vectored) calls.
+
+   (There are several instances of this in the net routing table code.)
+
+2. Implement a mechanism for modules to include "aliases".  This would
+   allow a single module file to contain multiple module table entries
+   (for example, a single file for the compat module could include
+   compat_80, compat_70, compat_60, ...).  Then, other modules could
+   depend on individual names.  For example, module compat_xyz could
+   depend on compat_70, and the dependency would be met by either the
+   "everything" compat module (with all of its aliases) or by a 7.0-
+   specific module.
+
+   Note that in addition to updating the module code, this would also
+   require changes to syscalls.master files to change the names of the
+   modules associated with module-provided syscalls.
+
+3. In addition to the single, all-encompassing compat module, provide a
+   per-version compat_xx module, each with dependencies on all higher
+   versions.  (Perhaps we would also do this for the sysv ipc module,
+   although the gains are a lot smaller.)

Reply via email to