TODO.compat-module revision 1.1.2.16 1 /* $NetBSD: TODO.compat-module,v 1.1.2.16 2018/09/30 01:48:27 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
55 TODO - Required for branch merge
56 --------------------------------
57 15. Need to finish cleaning up the netbsd32 machine-dependent code, since
58 the MI code assumes that there's MD file available. This is done, but
59 there's still an issue with the compat_netbsd32 for sparc64 - it wants
60 to reference emul_sunos but doesn't include sunos_exec.c in the build.
61
62 16. The ieee_80211 compat code needs to be verified to make sure it is
63 handling the if43_20 compat routine cvtcmd() correctly.
64
65
66 TODO - Not required for branch merge
67 ------------------------------------
68 17. Audit the entire code base for any remaining embedded #ifdef's for
69 COMPAT_xx. When found, move the actual compat code into the compat
70 hierarchy and replace originals with indirect (vectored) calls.
71
72 18. The rtsock compat code is a disaster, with rtsock_50.c #include-ing
73 the main rtsock.c code with various manipulations of the COMPAT_50
74 macro. Once rtsock is separated, compat_14 references to rtsock_50
75 routines needs to be verified.
76
77 Currently, this entire code is built for the monolithic COMPAT
78 module, but there's no way to reach the entry points, so none of
79 the compat code can be executed, neither on the branch nor on
80 HEAD.
81
82 19. The compat_60 module still needs some work for XEN systems. We
83 probably need some build infrastructure changes to ensure that
84 XEN (and, for i386, XEN-PAE) modules are build with the correct
85 macros defined and with -I directories specified in the same order
86 as for building kernels. See PR port-xen/53130. This currently
87 prevents loading of micro-code updates for amd64 processors running
88 XEN kernels. This limitation also exists on HEAD.
89
90 20. There seems to be quite a bit of MD compat_xx code, in the various
91 sys/arch/ directories. I haven't yet looked at any of this. But it
92 seems to me that the MI compat build infrastructure should have some
93 mechanism to "reach over" to the MD code, #include a Makefile.inc file,
94 and perhaps define something to enable the MI modcmd code to call a
95 compat_xx_MD_init() routine.
96
97 Note also that there are a few bits of MD code that is COMPAT_44
98 related. (The only bit of MI COMPAT_44 code is in the single module
99 shared by COMPAT_43 and COMPAT_09.) This affects the cesfic, hp300,
100 news68k, and x68k platforms, all in their respective machdep.c
101 source file. Additionally, the zaurus platform defines COMPAT_44 in
102 its INSTALL kernel configuration - but no other configuration files!
103
104 As far as I can tell, none of the MD compat code is currently built
105 into the monolithic COMPAT module on HEAD. Thus, its absence from
106 any of the version-specific modules is not a regression.
107
108 21. For compat_50, in addition to rtsock there are some things in dev/gpio
109 and dev/wscons/wsmux that I haven't been able to cleanly separate.
110 These items are not currently included in the monolithic COMPAT module
111 on HEAD, so lack of integration on the branch is not a regression.
112
113 22. Find all the remaining dependencies on the compat_utils routines and
114 deal with them appropriately. For now, we simply ensure that they
115 are included in every kernel via 'options COMPAT_UTILS' in file
116 sys/conf/std
117