Date: Mon, 11 Feb 2008 14:31:00 -0500 From: John Baldwin <jhb@freebsd.org> To: Dag-Erling =?utf-8?q?Sm=C3=B8rgrav?= <des@des.no> Cc: arch@freebsd.org Subject: Re: [PATCH] Automatic kernel version module dependencies.. Message-ID: <200802111431.00640.jhb@freebsd.org> In-Reply-To: <86lk5taway.fsf@ds4.des.no> References: <200802081802.54313.jhb@freebsd.org> <20080209.160817.168016724.imp@bsdimp.com> <86lk5taway.fsf@ds4.des.no>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sunday 10 February 2008 06:24:37 am Dag-Erling Sm=C3=B8rgrav wrote: > "M. Warner Losh" <imp@bsdimp.com> writes: > > Dag-Erling_Sm=C3=B8rgrav <des@des.no> writes: > > > ...provided they were built from the same config... I think > > > MUTEX_PROFILING has been fixed, but there may still be cases where > > > the ABI changes dependening on kernel options. > > These are usually well documented. But I can't find any in the > > current doc set. Maybe you could point me at options that do this so > > we can document them (and maybe add a #warning when compiling with > > them)? >=20 > Here's one I found: DEBUG_LOCKS changes the size of struct lock, which > changes the size and layout of struct vnode. Yes, DEBUG_LOCKS, MUTEX_PROFILING (O.B.E), and PAE are the ones I know of. = We=20 could employ a similar strategy for these btw. For example, you could do=20 this for PAE: sys/i386/i386/pmap.c: #ifdef PAE MODULE_VERSION(pae, 1); #else MODULE_VERSION(pae, 0); #endif sys/module.h: #if defined(__i386__) #ifdef PAE #define PAE_DEPEND(name) MODULE_DEPEND(name, pae, 1, 1, 1) #else #define PAE_DEPEND(name) MODULE_DEPEND(name, pae, 0, 0, 0) #endif #else #define PAE_DEPEND(name) struct __hack #endif #define DECLARE_MODULE(name, ...) \ ... PAE_DEPEND(name); \ ... It sucks to have the MD-ness there. Could perhaps have an MI macro like th= is: sys/module.h: #include <machine/module.h> #ifndef MACHINE_MODULE_DEPEND #define MACHINE_MODULE_DEPEND struct __hack #endif sys/i386/include/module.h: PAE bits from above but s/PAE_DEPEND/MACHINE_MODULE_DEPEND/. In general we= =20 try to keep the number of such ABI-breaking options to a very bare minimum,= =20 so perhaps one-off hacks in sys/module.h rather than abstracting it is=20 sufficient. =2D-=20 John Baldwin
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200802111431.00640.jhb>