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