From 6a8a82f56197a7af1f8aa285158e13c479921157 Mon Sep 17 00:00:00 2001 From: zab Date: Thu, 11 Sep 2003 19:26:54 +0000 Subject: [PATCH] - add an LASSERTF() variant so we can get some printf style data along with our assert. --- lnet/include/linux/kp30.h | 16 ++++++++++++++++ lustre/portals/include/linux/kp30.h | 16 ++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/lnet/include/linux/kp30.h b/lnet/include/linux/kp30.h index 1757317..b08347d 100644 --- a/lnet/include/linux/kp30.h +++ b/lnet/include/linux/kp30.h @@ -210,8 +210,22 @@ extern void kportal_assertion_failed(char *expr, char *file, const char *func, const int line); #define LASSERT(e) ((e) ? 0 : kportal_assertion_failed( #e , __FILE__, \ __FUNCTION__, __LINE__)) +/* it would be great to dump_stack() here, but some kernels + * export it as show_stack() and I can't be bothered to + * proprely engage in that dance right now */ +#define LASSERTF(cond, fmt...) \ + do { \ + if (unlikely(!(cond))) { \ + portals_debug_msg(0, D_EMERG, __FILE__, __FUNCTION__,\ + __LINE__, CDEBUG_STACK, \ + "ASSERTION(" #cond ") failed:" fmt);\ + LBUG(); \ + } \ + } while (0) + #else #define LASSERT(e) +#define LASSERTF(cond, fmt...) do { } while (0) #endif #ifdef __arch_um__ @@ -609,8 +623,10 @@ extern void kportal_blockallsigs (void); # undef NDEBUG # include # define LASSERT(e) assert(e) +# define LASSERTF(cond, args...) assert(cond) # else # define LASSERT(e) +# define LASSERTF(cond, args...) do { } while (0) # endif # define printk(format, args...) printf (format, ## args) # define PORTAL_ALLOC(ptr, size) do { (ptr) = malloc(size); } while (0); diff --git a/lustre/portals/include/linux/kp30.h b/lustre/portals/include/linux/kp30.h index 1757317..b08347d 100644 --- a/lustre/portals/include/linux/kp30.h +++ b/lustre/portals/include/linux/kp30.h @@ -210,8 +210,22 @@ extern void kportal_assertion_failed(char *expr, char *file, const char *func, const int line); #define LASSERT(e) ((e) ? 0 : kportal_assertion_failed( #e , __FILE__, \ __FUNCTION__, __LINE__)) +/* it would be great to dump_stack() here, but some kernels + * export it as show_stack() and I can't be bothered to + * proprely engage in that dance right now */ +#define LASSERTF(cond, fmt...) \ + do { \ + if (unlikely(!(cond))) { \ + portals_debug_msg(0, D_EMERG, __FILE__, __FUNCTION__,\ + __LINE__, CDEBUG_STACK, \ + "ASSERTION(" #cond ") failed:" fmt);\ + LBUG(); \ + } \ + } while (0) + #else #define LASSERT(e) +#define LASSERTF(cond, fmt...) do { } while (0) #endif #ifdef __arch_um__ @@ -609,8 +623,10 @@ extern void kportal_blockallsigs (void); # undef NDEBUG # include # define LASSERT(e) assert(e) +# define LASSERTF(cond, args...) assert(cond) # else # define LASSERT(e) +# define LASSERTF(cond, args...) do { } while (0) # endif # define printk(format, args...) printf (format, ## args) # define PORTAL_ALLOC(ptr, size) do { (ptr) = malloc(size); } while (0); -- 1.8.3.1