Skip site navigation (1)Skip section navigation (2)
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>