On Mon, Aug 28, 2006 at 11:38:47PM +0900, Jun Kuriyama
wrote:
>
> I found this when I compiled my kernel with INVARIANTS
without
> INVARIANT_SUPPORT.
>
> In src/sys/sys/sx.h, _sx_assert() is defined in
INVARIANT_SUPPORT,
>
> > #ifdef INVARIANT_SUPPORT
> > void _sx_assert(struct sx *sx, int what, const
char *file, int line);
> > #endif
>
> but sx_assert() uses this function in INVARIANTS
option.
>
> > #ifdef INVARIANTS
> > #define sx_assert(sx, what) _sx_assert((sx),
(what), LOCK_FILE, LOCK_LINE)
> > #else
> > #define sx_assert(sx, what)
> > #endif
>
> Is this consistent?
>
Well, yes. The idea is that you can compile your entire
kernel
with INVARIANT_SUPPORT and only certain files with
INVARIANTS.
I believe this info is in the NOTES files... yes it is:
: #
: # The INVARIANT_SUPPORT option makes us compile in support
for
: # verifying some of the internal structures. It is a
prerequisite for
: # 'INVARIANTS', as enabling 'INVARIANTS' will make
these functions be
: # called. The intent is that you can set 'INVARIANTS'
for single
: # source files (by changing the source file or specifying
it on the
: # command line) if you have 'INVARIANT_SUPPORT' enabled.
Also, if you
: # wish to build a kernel module with 'INVARIANTS', then
adding
: # 'INVARIANT_SUPPORT' to your kernel will provide all
the necessary
: # infrastructure without the added overhead.
: #
: options INVARIANT_SUPPORT
Cheers,
--
Ruslan Ermilov
ru FreeBSD.org
FreeBSD committer
|