Add macro DECLARE_MODULE_TIED to denote a module as requiring the
kernel of exactly the same __FreeBSD_version as the headers module was compiled against. Mark our in-tree ABI emulators with DECLARE_MODULE_TIED. The modules use kernel interfaces that the Release Engineering Team feel are not stable enough to guarantee they will not change during the life cycle of a STABLE branch. In particular, the layout of struct sysentvec is declared to be not part of the STABLE KBI. Discussed with: bz, rwatson Approved by: re (bz, kensmith) MFC after: 2 weeks
This commit is contained in:
parent
96f231fde9
commit
78ae4338a2
@ -1210,4 +1210,4 @@ static moduledata_t linux_elf_mod = {
|
||||
0
|
||||
};
|
||||
|
||||
DECLARE_MODULE(linuxelf, linux_elf_mod, SI_SUB_EXEC, SI_ORDER_ANY);
|
||||
DECLARE_MODULE_TIED(linuxelf, linux_elf_mod, SI_SUB_EXEC, SI_ORDER_ANY);
|
||||
|
@ -309,5 +309,5 @@ static moduledata_t svr4_elf_mod = {
|
||||
svr4_elf_modevent,
|
||||
0
|
||||
};
|
||||
DECLARE_MODULE(svr4elf, svr4_elf_mod, SI_SUB_EXEC, SI_ORDER_ANY);
|
||||
DECLARE_MODULE_TIED(svr4elf, svr4_elf_mod, SI_SUB_EXEC, SI_ORDER_ANY);
|
||||
MODULE_DEPEND(svr4elf, streams, 1, 1, 1);
|
||||
|
@ -134,4 +134,4 @@ static moduledata_t ibcs2_mod = {
|
||||
ibcs2_modevent,
|
||||
0
|
||||
};
|
||||
DECLARE_MODULE(ibcs2, ibcs2_mod, SI_SUB_PSEUDO, SI_ORDER_ANY);
|
||||
DECLARE_MODULE_TIED(ibcs2, ibcs2_mod, SI_SUB_PSEUDO, SI_ORDER_ANY);
|
||||
|
@ -1179,4 +1179,4 @@ static moduledata_t linux_elf_mod = {
|
||||
0
|
||||
};
|
||||
|
||||
DECLARE_MODULE(linuxelf, linux_elf_mod, SI_SUB_EXEC, SI_ORDER_ANY);
|
||||
DECLARE_MODULE_TIED(linuxelf, linux_elf_mod, SI_SUB_EXEC, SI_ORDER_ANY);
|
||||
|
@ -115,7 +115,8 @@ int exec_unregister(const struct execsw *);
|
||||
__CONCAT(name,_modevent), \
|
||||
(void *)& execsw_arg \
|
||||
}; \
|
||||
DECLARE_MODULE(name, __CONCAT(name,_mod), SI_SUB_EXEC, SI_ORDER_ANY)
|
||||
DECLARE_MODULE_TIED(name, __CONCAT(name,_mod), SI_SUB_EXEC, \
|
||||
SI_ORDER_ANY)
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@ -125,13 +125,26 @@ struct mod_metadata {
|
||||
*/
|
||||
#define MODULE_KERNEL_MAXVER (roundup(__FreeBSD_version, 100000) - 1)
|
||||
|
||||
#define DECLARE_MODULE(name, data, sub, order) \
|
||||
#define DECLARE_MODULE_WITH_MAXVER(name, data, sub, order, maxver) \
|
||||
MODULE_DEPEND(name, kernel, __FreeBSD_version, \
|
||||
__FreeBSD_version, MODULE_KERNEL_MAXVER); \
|
||||
__FreeBSD_version, maxver); \
|
||||
MODULE_METADATA(_md_##name, MDT_MODULE, &data, #name); \
|
||||
SYSINIT(name##module, sub, order, module_register_init, &data); \
|
||||
struct __hack
|
||||
|
||||
#define DECLARE_MODULE(name, data, sub, order) \
|
||||
DECLARE_MODULE_WITH_MAXVER(name, data, sub, order, MODULE_KERNEL_MAXVER)
|
||||
|
||||
/*
|
||||
* The module declared with DECLARE_MODULE_TIED can only be loaded
|
||||
* into the kernel with exactly the same __FreeBSD_version.
|
||||
*
|
||||
* Use it for modules that use kernel interfaces that are not stable
|
||||
* even on STABLE/X branches.
|
||||
*/
|
||||
#define DECLARE_MODULE_TIED(name, data, sub, order) \
|
||||
DECLARE_MODULE_WITH_MAXVER(name, data, sub, order, __FreeBSD_version)
|
||||
|
||||
#define MODULE_VERSION(module, version) \
|
||||
static struct mod_version _##module##_version = { \
|
||||
version \
|
||||
|
Loading…
Reference in New Issue
Block a user