diff options
author | kib <kib@FreeBSD.org> | 2010-10-12 09:18:17 +0000 |
---|---|---|
committer | kib <kib@FreeBSD.org> | 2010-10-12 09:18:17 +0000 |
commit | 84212c755146fe8d191ba26c09911fe3411c965c (patch) | |
tree | 49b23685ac60a1e49a5edfa5657f8d82d84b941d /sys/sys/module.h | |
parent | 47dfb514f552fe3cfa9cd48c17ec7385fccb0422 (diff) | |
download | FreeBSD-src-84212c755146fe8d191ba26c09911fe3411c965c.zip FreeBSD-src-84212c755146fe8d191ba26c09911fe3411c965c.tar.gz |
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
Diffstat (limited to 'sys/sys/module.h')
-rw-r--r-- | sys/sys/module.h | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/sys/sys/module.h b/sys/sys/module.h index 2abad63..782770a 100644 --- a/sys/sys/module.h +++ b/sys/sys/module.h @@ -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 \ |