[sheepdog] [PATCH] move assert definition from util.h to logger.h
Liu Yuan
namei.unix at gmail.com
Thu Jul 11 06:55:18 CEST 2013
On Thu, Jul 11, 2013 at 01:11:57PM +0900, MORITA Kazutaka wrote:
> If we don't use a logger, we don't need to define our assert. In that
> sense, assert() should be defined in logger.h. The only problem is
> that assert can be used before including logger.h. To avoid it, this
> patch adds an #error directive to detect assert definition before
> logger.h.
>
> This fixes a compiler error which happens when NDEBUG is not defined.
>
> Signed-off-by: MORITA Kazutaka <morita.kazutaka at lab.ntt.co.jp>
> ---
> include/compiler.h | 3 +++
> include/logger.h | 14 +++++++++-----
> include/sheep.h | 2 +-
> include/sheepdog_proto.h | 3 ++-
> include/util.h | 24 +++++-------------------
> lib/event.c | 2 +-
> lib/net.c | 2 +-
> lib/util.c | 3 +--
> lib/work.c | 2 +-
> sheep/sheep_priv.h | 1 +
> sheepfs/volume.c | 1 -
> shepherd/shepherd.c | 1 -
> 12 files changed, 25 insertions(+), 33 deletions(-)
>
> diff --git a/include/compiler.h b/include/compiler.h
> index 1cd2440..b2ae002 100644
> --- a/include/compiler.h
> +++ b/include/compiler.h
> @@ -17,4 +17,7 @@
>
> #define __printf(a, b) __attribute__((format(printf, a, b)))
>
> +/* Force a compilation error if the condition is true */
> +#define BUILD_BUG_ON(condition) ((void)sizeof(struct { int: -!!(condition); }))
> +
> #endif /* SD_COMPILER_H */
> diff --git a/include/logger.h b/include/logger.h
> index c2c4237..9bc3bbe 100644
> --- a/include/logger.h
> +++ b/include/logger.h
> @@ -81,10 +81,14 @@ void sd_backtrace(void);
> log_write(SDOG_DEBUG, __func__, __LINE__, fmt, ##args); \
> } while (0)
>
> -static inline void do_assert(const char *expr, const char *func, int line)
> -{
> - log_write(SDOG_EMERG, func, line, "Asserting `%s' failed.", expr);
> - abort();
> -}
> +#ifdef assert
> +#error "logger.h must be included before assert.h"
I think we should always use sheepdog's assert(). So this would be better rephrased
as "Don't include <assert.h>, use logger.h for assert()"
Thanks
Yuan
More information about the sheepdog
mailing list