Home | History | Annotate | Line # | Download | only in doc
TODO.compat-module revision 1.1.2.19
      1 /* $NetBSD: TODO.compat-module,v 1.1.2.19 2019/01/13 23:33:07 pgoyette Exp $ */
      2 
      3 DONE
      4 ----
      5 1.  Removed the building of the compat library - it is no longer needed.
      6 
      7 2.  Reverted some intentional auto-load breakage for loading the sysv_ipc
      8     module; the breakage was introduced as the fix for the above-mentioned
      9     build breakage.
     10 
     11 3.  Split the sysv_ipc compat routines into their own compat_sysv module.
     12 
     13 4.  Resolved some inter-module dependencies.
     14 
     15 5.  Extracted some net/if.c compat routines into the compat module, and
     16     replaced the originals with indirect (vectored) function calls.
     17 
     18 6.  Reconfirmed existing compat-module dependencies, and update the
     19     defopt/defflag lines in the config files* as needed, to insure that
     20     built-in dependencies get resolved.
     21 
     22 7.  Fixed limits on the number of module depedencies and maximum
     23     recursion level have been removed.  Previous code for reporting
     24     module status to userland has been versioned and moved to the
     25     compat_80 module.
     26 
     27 8.  The old monolithic compat module has been broken into multiple
     28     modules, one for each old NetBSD version.  The monolithic module
     29     is no longer available.
     30 
     31     Similarly, the compat_sysv module has also been split into several
     32     version-specific modules, and the mini-monolithic compat_sysv module
     33     is no longer provided.
     34 
     35 9.  syscalls.master has been updated to autoload the version-specific
     36     compat modules rather than the monolithic modules.
     37 
     38 10. Separated COMPAT_BSDPTY stuff, allowing the COMPAT_60 module to be
     39     built regardless.
     40 
     41 11. Implemented a MP-safe mechanism for installing and removing function
     42     pointers.  Thanks to riastradh@ for the template code.
     43 
     44 12. Replace version-specific parts of the compat_netbsd32 module (and
     45     also the compat_netbsd32_sysv module) with individual modules.  Update
     46     dependencies accordingly.  (Done, but see #13 below.)
     47 
     48 13. Finished splitting the vnd_30 and vnd_50 compat code into separate
     49     modules.
     50 
     51 14. Cleaned up some previous vectored routines (related to if_43.c) to
     52     use the MP-safe mechanism.
     53 
     54 15. Organized netbsd32 machine-dependent code to fit a common build
     55     framework, and split version-specific code from baseline code as
     56     needed.
     57 
     58 16. While the rtsock_50 situation is still a disaster (rtsock_50.c
     59     #include-s the main rtsock.c code with various COMPAT_50-dependant
     60     macro definitions and redefinitions), the basic functionality
     61     works, and the compat_14 references to rtsock_50 routines seems to
     62     be correct.  The rtsock_50.c stuff should still be rewritten at
     63     some future time, but it's not urgent.
     64 
     65 TODO - Not required for branch merge
     66 ------------------------------------
     67 17. Audit the entire code base for any remaining embedded #ifdef's for
     68     COMPAT_xx.  When found, move the actual compat code into the compat
     69     hierarchy and replace originals with indirect (vectored) calls.
     70 
     71 18. The compat_60 module still needs some work for XEN systems.  We
     72     probably need some build infrastructure changes to ensure that
     73     XEN (and, for i386, XEN-PAE) modules are build with the correct
     74     macros defined and with -I directories specified in the same order
     75     as for building kernels. See PR port-xen/53130.  This currently
     76     prevents loading of micro-code updates for amd64 processors running
     77     XEN kernels.  This limitation also exists on HEAD.
     78 
     79 19. There seems to be quite a bit of MD compat_xx code, in the various
     80     sys/arch/ directories.  I haven't yet looked at any of this.  But it
     81     seems to me that the MI compat build infrastructure should have some
     82     mechanism to "reach over" to the MD code, #include a Makefile.inc file,
     83     and perhaps define something to enable the MI modcmd code to call a
     84     compat_xx_MD_init() routine.
     85 
     86     Note also that there are a few bits of MD code that is COMPAT_44
     87     related.  (The only bit of MI COMPAT_44 code is in the single module
     88     shared by COMPAT_43 and COMPAT_09.)  This affects the cesfic, hp300,
     89     news68k, and x68k platforms, all in their respective machdep.c
     90     source file.  Additionally, the zaurus platform defines COMPAT_44 in
     91     its INSTALL kernel configuration - but no other configuration files!
     92 
     93     As far as I can tell, none of the MD compat code is currently built
     94     into the monolithic COMPAT module on HEAD.  Thus, its absence from
     95     any of the version-specific modules is not a regression.
     96 
     97 20. For compat_50, in addition to rtsock there are some things in dev/gpio
     98     and dev/wscons/wsmux that I haven't been able to cleanly separate.
     99     These items are not currently included in the monolithic COMPAT module
    100     on HEAD, so lack of integration on the branch is not a regression.
    101 
    102 21. Find all the remaining dependencies on the compat_utils routines and
    103     deal with them appropriately.  For now, we simply ensure that they
    104     are included in every kernel via 'options COMPAT_UTILS' in file
    105     sys/conf/std
    106