Home | History | Annotate | Line # | Download | only in doc
TODO.compat-module revision 1.1.2.5
      1  1.1.2.5  pgoyette /* $NetBSD: TODO.compat-module,v 1.1.2.5 2018/09/17 10:06:29 pgoyette Exp $ */
      2  1.1.2.1  pgoyette 
      3  1.1.2.1  pgoyette DONE
      4  1.1.2.1  pgoyette ----
      5  1.1.2.1  pgoyette 1.  Returned the build to use a .a compat library rather than a .o
      6  1.1.2.1  pgoyette     library.  The original method used was .a but that was changed
      7  1.1.2.1  pgoyette     (fairly recently) as a work-around to address some support
      8  1.1.2.1  pgoyette     routines that were not being included when needed.  These support
      9  1.1.2.1  pgoyette     modules are now included in their own module, and the work-around
     10  1.1.2.1  pgoyette     is therefore no longer needed.
     11  1.1.2.1  pgoyette 
     12  1.1.2.1  pgoyette 2.  Reverted some intentional auto-load breakage for loading the sysv_ipc
     13  1.1.2.1  pgoyette     module; the breakage was introduced as the fix for the above-mentioned
     14  1.1.2.1  pgoyette     build breakage.
     15  1.1.2.1  pgoyette 
     16  1.1.2.1  pgoyette 3.  Split the sysv_ipc compat routines into their own compat_sysv module.
     17  1.1.2.1  pgoyette 
     18  1.1.2.1  pgoyette 4.  Resolved some inter-module dependencies.
     19  1.1.2.1  pgoyette 
     20  1.1.2.1  pgoyette 5.  Extracted some net/if.c compat routines into the compat module, and
     21  1.1.2.1  pgoyette     replaced the originals with indirect (vectored) function calls.
     22  1.1.2.1  pgoyette 
     23  1.1.2.1  pgoyette 6.  Reconfirmed existing compat-module dependencies, and update the
     24  1.1.2.1  pgoyette     defopt/defflag lines in the config files* as needed, to insure that
     25  1.1.2.1  pgoyette     built-in dependencies get resolved.
     26  1.1.2.1  pgoyette 
     27  1.1.2.1  pgoyette 7.  Fixed limits on the number of module depedencies and maximum
     28  1.1.2.1  pgoyette     recursion level have been removed.  Previous code for reporting
     29  1.1.2.1  pgoyette     module status to userland has been versioned and moved to the
     30  1.1.2.1  pgoyette     compat_80 module.
     31  1.1.2.1  pgoyette 
     32  1.1.2.1  pgoyette 8.  The old monolithic compat module has been broken into multiple
     33  1.1.2.1  pgoyette     modules, one for each old NetBSD version.  The monolithic module
     34  1.1.2.2  pgoyette     is no longer available.
     35  1.1.2.1  pgoyette 
     36  1.1.2.1  pgoyette     Similarly, the compat_sysv module has also been split into several
     37  1.1.2.1  pgoyette     version-specific modules, and the mini-monolithic compat_sysv module
     38  1.1.2.2  pgoyette     is no longer provided.
     39  1.1.2.1  pgoyette 
     40  1.1.2.1  pgoyette 9.  syscalls.master has been updated to autoload the version-specific
     41  1.1.2.1  pgoyette     compat modules rather than the monolithic modules.
     42  1.1.2.1  pgoyette 
     43  1.1.2.1  pgoyette 10. Separated COMPAT_BSDPTY stuff, allowing the COMPAT_60 module to be
     44  1.1.2.1  pgoyette     built regardless.
     45  1.1.2.1  pgoyette 
     46  1.1.2.5  pgoyette 11. Implemented a MP-safe mechanism for installing and removing function
     47  1.1.2.5  pgoyette     pointers.  Thanks to riastradh@ for the template code.
     48  1.1.2.5  pgoyette 
     49  1.1.2.1  pgoyette 
     50  1.1.2.1  pgoyette TODO - Required for branch merge
     51  1.1.2.1  pgoyette --------------------------------
     52  1.1.2.3  pgoyette 1.  Replace version-specific parts of the compat_netbsd32 module (and
     53  1.1.2.3  pgoyette     also the compat_netbsd32_sysv module) with individual modules.  Update
     54  1.1.2.3  pgoyette     dependencies accordingly.
     55  1.1.2.1  pgoyette 
     56  1.1.2.5  pgoyette 2.  Need to finish cleaning up the netbsd32 machine-dependent code, since
     57  1.1.2.5  pgoyette     the MI code assumes that there's MD file available.
     58  1.1.2.5  pgoyette 
     59  1.1.2.5  pgoyette 3.  Still have some work to do to split the vnd_30 and vnd_50 compat
     60  1.1.2.5  pgoyette     code into separate modules.
     61  1.1.2.5  pgoyette 
     62  1.1.2.5  pgoyette 4.  The ieee_80211 compat code needs to be verified to make sure it is
     63  1.1.2.5  pgoyette     handling the if43_20 compat routine cvtcmd() correctly.
     64  1.1.2.5  pgoyette 
     65  1.1.2.5  pgoyette 5.  There are a few function pointers in netbsd32 module that need to
     66  1.1.2.5  pgoyette     be converted to the new MP-safe mechanism.  See files
     67  1.1.2.5  pgoyette 	netbsd32_mod.c
     68  1.1.2.5  pgoyette 	netbsd32_module.c
     69  1.1.2.5  pgoyette 	netbsd32_compat_80.[ch]
     70  1.1.2.5  pgoyette 	amd64's machdep.c and machdep_16.c
     71  1.1.2.4  pgoyette 
     72  1.1.2.1  pgoyette 
     73  1.1.2.1  pgoyette TODO - Not required for branch merge
     74  1.1.2.1  pgoyette ------------------------------------
     75  1.1.2.1  pgoyette 1.  Audit the entire code base for any remaining embedded #ifdef's for
     76  1.1.2.1  pgoyette     COMPAT_xx.  When found, move the actual compat code into the compat
     77  1.1.2.1  pgoyette     hierarchy and replace originals with indirect (vectored) calls.
     78  1.1.2.1  pgoyette 
     79  1.1.2.1  pgoyette 2.  The rtsock compat code is a disaster, with rtsock_50.c #include-ing
     80  1.1.2.1  pgoyette     the main rtsock.c code with various manipulations of the COMPAT_50
     81  1.1.2.1  pgoyette     macro.  Once rtsock is separated, compat_14 references to rtsock_50
     82  1.1.2.1  pgoyette     routines needs to be verified.
     83  1.1.2.1  pgoyette 
     84  1.1.2.1  pgoyette     Currently, this entire code is built for the monolithic COMPAT
     85  1.1.2.1  pgoyette     module, but there's no way to reach the entry points, so none of
     86  1.1.2.1  pgoyette     the compat code can be executed, neither on the branch nor on
     87  1.1.2.1  pgoyette     HEAD.
     88  1.1.2.1  pgoyette 
     89  1.1.2.1  pgoyette 3.  The compat_60 module still needs some work for XEN systems.  We
     90  1.1.2.1  pgoyette     probably need some build infrastructure changes to ensure that
     91  1.1.2.1  pgoyette     XEN (and, for i386, XEN-PAE) modules are build with the correct
     92  1.1.2.1  pgoyette     macros defined and with -I directories specified in the same order
     93  1.1.2.1  pgoyette     as for building kernels. See PR port-xen/53130.  This currently
     94  1.1.2.1  pgoyette     prevents loading of micro-code updates for amd64 processors running
     95  1.1.2.1  pgoyette     XEN kernels.  This limitation also exists on HEAD.
     96  1.1.2.1  pgoyette 
     97  1.1.2.1  pgoyette 4.  There seems to be quite a bit of MD compat_xx code, in the various
     98  1.1.2.1  pgoyette     sys/arch/ directories.  I haven't yet looked at any of this.  But it
     99  1.1.2.1  pgoyette     seems to me that the MI compat build infrastructure should have some
    100  1.1.2.1  pgoyette     mechanism to "reach over" to the MD code, #include a Makefile.inc file,
    101  1.1.2.1  pgoyette     and perhaps define something to enable the MI modcmd code to call a
    102  1.1.2.1  pgoyette     compat_xx_MD_init() routine.
    103  1.1.2.1  pgoyette 
    104  1.1.2.1  pgoyette     Note also that there are a few bits of MD code that is COMPAT_44
    105  1.1.2.1  pgoyette     related.  (The only bit of MI COMPAT_44 code is in the single module
    106  1.1.2.1  pgoyette     shared by COMPAT_43 and COMPAT_09.)  This affects the cesfic, hp300,
    107  1.1.2.1  pgoyette     news68k, and x68k platforms, all in their respective machdep.c
    108  1.1.2.1  pgoyette     source file.  Additionally, the zaurus platform defines COMPAT_44 in
    109  1.1.2.1  pgoyette     its INSTALL kernel configuration - but no other configuration files!
    110  1.1.2.1  pgoyette 
    111  1.1.2.1  pgoyette     As far as I can tell, none of the MD compat code is currently built
    112  1.1.2.1  pgoyette     into the monolithic COMPAT module on HEAD.  Thus, its absence from
    113  1.1.2.1  pgoyette     any of the version-specific modules is not a regression.
    114  1.1.2.1  pgoyette 
    115  1.1.2.1  pgoyette 5.  For compat_50, in addition to rtsock there are some things in dev/vnd,
    116  1.1.2.1  pgoyette     dev/gpio, and dev/wscons/wsmux that I haven't been able to cleanly
    117  1.1.2.1  pgoyette     separate.  These items are not currently included in the monolithic
    118  1.1.2.1  pgoyette     COMPAT module on HEAD, so lack of integration on the branch is not a
    119  1.1.2.1  pgoyette     regression.
    120  1.1.2.1  pgoyette 
    121  1.1.2.1  pgoyette 6.  Even though the build mechanism has been switched back to using a
    122  1.1.2.1  pgoyette     .a compat library, it might be useful to make it work with the .o
    123  1.1.2.1  pgoyette     library.
    124  1.1.2.1  pgoyette 
    125