This patch add a CTASSERT macro for compile time assertion.
This macro makes the compile to spit "mixed definition and code" warning, I can't find a way to avoid it. This patch lays some groundwork for the persistent l2arc feature. See https://www.illumos.org/issues/3525. Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com> Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> Closes #303
This commit is contained in:
parent
acf0ade362
commit
6c48cd8ac2
|
@ -145,4 +145,15 @@ do { \
|
|||
#define VERIFY(x) ASSERT(x)
|
||||
|
||||
#endif /* NDEBUG */
|
||||
|
||||
/*
|
||||
* Compile-time assertion. The condition 'x' must be constant.
|
||||
*/
|
||||
#define CTASSERT_GLOBAL(x) _CTASSERT(x, __LINE__)
|
||||
#define CTASSERT(x) { _CTASSERT(x, __LINE__); }
|
||||
#define _CTASSERT(x, y) __CTASSERT(x, y)
|
||||
#define __CTASSERT(x, y) \
|
||||
typedef char __attribute__ ((unused)) \
|
||||
__compile_time_assertion__ ## y[(x) ? 1 : -1]
|
||||
|
||||
#endif /* SPL_DEBUG_H */
|
||||
|
|
Loading…
Reference in New Issue