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