lib: debug: Add DBGC_XXX versions of the macros to allow class-specific messages.
authorJeremy Allison <jra@samba.org>
Wed, 21 Mar 2018 19:40:50 +0000 (12:40 -0700)
committerJeremy Allison <jra@samba.org>
Thu, 22 Mar 2018 01:15:13 +0000 (02:15 +0100)
https://bugzilla.samba.org/show_bug.cgi?id=13347

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Ralph Böhme <slow@samba.org>
lib/util/debug.h

index 47280da1a78968d72c2c4d7f2f4aaeba764be7ed..1b17fad96946bfcb9918d5ed0fddb7515cba1305 100644 (file)
@@ -217,6 +217,14 @@ extern int  *DEBUGLEVEL_CLASS;
                && (dbgtext("%s: ", __func__))                          \
                && (dbgtext body) )
 
+/* Prefix messages with the function name - class specific */
+#define DBGC_PREFIX(dbgc_class, level, body ) \
+       (void)( ((level) <= MAX_DEBUG_LEVEL) &&                 \
+               unlikely(DEBUGLEVEL_CLASS[ dbgc_class ] >= (level))     \
+               && (dbghdrclass(level, dbgc_class, __location__, __func__ )) \
+               && (dbgtext("%s: ", __func__))                          \
+               && (dbgtext body) )
+
 /*
  * Debug levels matching RFC 3164
  */
@@ -232,12 +240,34 @@ extern int  *DEBUGLEVEL_CLASS;
 #define DBG_INFO(...)          DBG_PREFIX(DBGLVL_INFO,         (__VA_ARGS__))
 #define DBG_DEBUG(...)         DBG_PREFIX(DBGLVL_DEBUG,        (__VA_ARGS__))
 
+#define DBGC_ERR(dbgc_class, ...)      DBGC_PREFIX(dbgc_class, \
+                                               DBGLVL_ERR, (__VA_ARGS__))
+#define DBGC_WARNING(dbgc_class, ...)  DBGC_PREFIX(dbgc_class, \
+                                               DBGLVL_WARNING, (__VA_ARGS__))
+#define DBGC_NOTICE(dbgc_class, ...)   DBGC_PREFIX(dbgc_class, \
+                                               DBGLVL_NOTICE,  (__VA_ARGS__))
+#define DBGC_INFO(dbgc_class, ...)     DBGC_PREFIX(dbgc_class, \
+                                               DBGLVL_INFO,    (__VA_ARGS__))
+#define DBGC_DEBUG(dbgc_class, ...)    DBGC_PREFIX(dbgc_class, \
+                                               DBGLVL_DEBUG,   (__VA_ARGS__))
+
 #define D_ERR(...)             DEBUG(DBGLVL_ERR,       (__VA_ARGS__))
 #define D_WARNING(...)         DEBUG(DBGLVL_WARNING,   (__VA_ARGS__))
 #define D_NOTICE(...)          DEBUG(DBGLVL_NOTICE,    (__VA_ARGS__))
 #define D_INFO(...)            DEBUG(DBGLVL_INFO,      (__VA_ARGS__))
 #define D_DEBUG(...)           DEBUG(DBGLVL_DEBUG,     (__VA_ARGS__))
 
+#define DC_ERR(...)            DEBUGC(dbgc_class, \
+                                       DBGLVL_ERR,     (__VA_ARGS__))
+#define DC_WARNING(...)                DEBUGC(dbgc_class, \
+                                       DBGLVL_WARNING, (__VA_ARGS__))
+#define DC_NOTICE(...)         DEBUGC(dbgc_class, \
+                                       DBGLVL_NOTICE,  (__VA_ARGS__))
+#define DC_INFO(...)           DEBUGC(dbgc_class, \
+                                       DBGLVL_INFO,    (__VA_ARGS__))
+#define DC_DEBUG(...)          DEBUGC(dbgc_class, \
+                                       DBGLVL_DEBUG,   (__VA_ARGS__))
+
 /* The following definitions come from lib/debug.c  */
 
 /** Possible destinations for the debug log (in order of precedence -