Annotation of src/doc/TODO.compat-module, Revision 1.1.2.10
1.1.2.10! pgoyette 1: /* $NetBSD: TODO.compat-module,v 1.1.2.9 2018/09/24 00:03:53 pgoyette Exp $ */
1.1.2.1 pgoyette 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
1.1.2.2 pgoyette 34: is no longer available.
1.1.2.1 pgoyette 35:
36: Similarly, the compat_sysv module has also been split into several
37: version-specific modules, and the mini-monolithic compat_sysv module
1.1.2.2 pgoyette 38: is no longer provided.
1.1.2.1 pgoyette 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:
1.1.2.5 pgoyette 46: 11. Implemented a MP-safe mechanism for installing and removing function
47: pointers. Thanks to riastradh@ for the template code.
48:
1.1.2.6 pgoyette 49: 12. Replace version-specific parts of the compat_netbsd32 module (and
50: also the compat_netbsd32_sysv module) with individual modules. Update
51: dependencies accordingly. (Done, but see #13 below.)
52:
1.1.2.8 pgoyette 53: 13. Finished splitting the vnd_30 and vnd_50 compat code into separate
54: modules.
55:
56: 14. Cleaned up some previous vectored routines (related to if_43.c) to
57: use the MP-safe mechanism.
1.1.2.7 pgoyette 58:
1.1.2.1 pgoyette 59:
60: TODO - Required for branch merge
61: --------------------------------
1.1.2.8 pgoyette 62: 15. Need to finish cleaning up the netbsd32 machine-dependent code, since
1.1.2.5 pgoyette 63: the MI code assumes that there's MD file available.
64:
1.1.2.8 pgoyette 65: 16. The ieee_80211 compat code needs to be verified to make sure it is
1.1.2.5 pgoyette 66: handling the if43_20 compat routine cvtcmd() correctly.
67:
1.1.2.8 pgoyette 68: 17. There are a few function pointers in netbsd32 module that need to
1.1.2.5 pgoyette 69: be converted to the new MP-safe mechanism. See files
70: netbsd32_mod.c
71: netbsd32_module.c
72: netbsd32_compat_80.[ch]
73: amd64's machdep.c and machdep_16.c
1.1.2.4 pgoyette 74:
1.1.2.1 pgoyette 75:
76: TODO - Not required for branch merge
77: ------------------------------------
1.1.2.8 pgoyette 78: 18. Audit the entire code base for any remaining embedded #ifdef's for
1.1.2.1 pgoyette 79: COMPAT_xx. When found, move the actual compat code into the compat
80: hierarchy and replace originals with indirect (vectored) calls.
81:
1.1.2.8 pgoyette 82: 19. The rtsock compat code is a disaster, with rtsock_50.c #include-ing
1.1.2.1 pgoyette 83: the main rtsock.c code with various manipulations of the COMPAT_50
84: macro. Once rtsock is separated, compat_14 references to rtsock_50
85: routines needs to be verified.
86:
87: Currently, this entire code is built for the monolithic COMPAT
88: module, but there's no way to reach the entry points, so none of
89: the compat code can be executed, neither on the branch nor on
90: HEAD.
91:
1.1.2.8 pgoyette 92: 20. The compat_60 module still needs some work for XEN systems. We
1.1.2.1 pgoyette 93: probably need some build infrastructure changes to ensure that
94: XEN (and, for i386, XEN-PAE) modules are build with the correct
95: macros defined and with -I directories specified in the same order
96: as for building kernels. See PR port-xen/53130. This currently
97: prevents loading of micro-code updates for amd64 processors running
98: XEN kernels. This limitation also exists on HEAD.
99:
1.1.2.8 pgoyette 100: 21. There seems to be quite a bit of MD compat_xx code, in the various
1.1.2.1 pgoyette 101: sys/arch/ directories. I haven't yet looked at any of this. But it
102: seems to me that the MI compat build infrastructure should have some
103: mechanism to "reach over" to the MD code, #include a Makefile.inc file,
104: and perhaps define something to enable the MI modcmd code to call a
105: compat_xx_MD_init() routine.
106:
107: Note also that there are a few bits of MD code that is COMPAT_44
108: related. (The only bit of MI COMPAT_44 code is in the single module
109: shared by COMPAT_43 and COMPAT_09.) This affects the cesfic, hp300,
110: news68k, and x68k platforms, all in their respective machdep.c
111: source file. Additionally, the zaurus platform defines COMPAT_44 in
112: its INSTALL kernel configuration - but no other configuration files!
113:
114: As far as I can tell, none of the MD compat code is currently built
115: into the monolithic COMPAT module on HEAD. Thus, its absence from
116: any of the version-specific modules is not a regression.
117:
1.1.2.8 pgoyette 118: 22. For compat_50, in addition to rtsock there are some things in dev/gpio
119: and dev/wscons/wsmux that I haven't been able to cleanly separate.
120: These items are not currently included in the monolithic COMPAT module
121: on HEAD, so lack of integration on the branch is not a regression.
1.1.2.1 pgoyette 122:
1.1.2.8 pgoyette 123: 23. Even though the build mechanism has been switched back to using a
1.1.2.1 pgoyette 124: .a compat library, it might be useful to make it work with the .o
125: library.
126:
1.1.2.10! pgoyette 127: 24. We need a mechanism to determine, at run-time, whether or not the
! 128: NTP option was selected. Even though the NTP code is not modular,
! 129: other modules (such as clockctl) need to know whether NTP routines
! 130: are available.
! 131:
CVSweb <webmaster@jp.NetBSD.org>