Source-Changes-HG archive

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

[src/pgoyette-compat]: src/doc Add some notes on what has been done, and what...



details:   https://anonhg.NetBSD.org/src/rev/2b2666038012
branches:  pgoyette-compat
changeset: 320997:2b2666038012
user:      pgoyette <pgoyette%NetBSD.org@localhost>
date:      Sat Mar 10 05:14:26 2018 +0000

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

diffstat:

 doc/COMPAT-branch-notes |  45 +++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 45 insertions(+), 0 deletions(-)

diffs (49 lines):

diff -r 45a72d1974e2 -r 2b2666038012 doc/COMPAT-branch-notes
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/COMPAT-branch-notes   Sat Mar 10 05:14:26 2018 +0000
@@ -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.)



Home | Main Index | Thread Index | Old Index