diff options
author | jake <jake@FreeBSD.org> | 2002-04-01 21:55:00 +0000 |
---|---|---|
committer | jake <jake@FreeBSD.org> | 2002-04-01 21:55:00 +0000 |
commit | 15dc222b823665d63da106fbde3ab6ead56a87a3 (patch) | |
tree | 493b460bc4cbf164ebc2c453a73471911d8857e5 | |
parent | 6bb0c0b2661593317904cfd02cc3036cff3beefd (diff) | |
download | FreeBSD-src-15dc222b823665d63da106fbde3ab6ead56a87a3.zip FreeBSD-src-15dc222b823665d63da106fbde3ab6ead56a87a3.tar.gz |
Move the CTASSERT macro from MD code to systm.h alongside KASSERT so other
code can use it. This takes a single constant argument and fails to compile
if it is 0 (false). The main application of this is to make assertions about
structure sizes at compile time, in order to validate assumptions made in
other code. Examples:
CTASSERT(sizeof(struct foo) == FOO_SIZEOF);
CTASSERT(sizeof(struct foo) == (1 << FOO_SHIFT));
Requested by: jhb, phk
-rw-r--r-- | sys/sparc64/include/param.h | 4 | ||||
-rw-r--r-- | sys/sys/systm.h | 4 |
2 files changed, 4 insertions, 4 deletions
diff --git a/sys/sparc64/include/param.h b/sys/sparc64/include/param.h index a4404cf..36aef81 100644 --- a/sys/sparc64/include/param.h +++ b/sys/sparc64/include/param.h @@ -176,9 +176,5 @@ #define pgtok(x) ((unsigned long)(x) * (PAGE_SIZE / 1024)) -#define CTASSERT(x) _CTASSERT(x, __LINE__) -#define _CTASSERT(x, y) __CTASSERT(x, y) -#define __CTASSERT(x, y) typedef char __assert ## y[(x) ? 1 : -1] - #endif /* !_MACHINE_PARAM_H_ */ #endif /* !_NO_NAMESPACE_POLLUTION */ diff --git a/sys/sys/systm.h b/sys/sys/systm.h index 10eb911..e3d3602 100644 --- a/sys/sys/systm.h +++ b/sys/sys/systm.h @@ -78,6 +78,10 @@ extern int maxusers; /* system tune hint */ #define KASSERT(exp,msg) #endif +#define CTASSERT(x) _CTASSERT(x, __LINE__) +#define _CTASSERT(x, y) __CTASSERT(x, y) +#define __CTASSERT(x, y) typedef char __assert ## y[(x) ? 1 : -1] + /* * XXX the hints declarations are even more misplaced than most declarations * in this file, since they are needed in one file (per arch) and only used |