diff mbox

[v2,16/16] common: Convert conditional compilation of debug printfs to regular ifs

Message ID 1399964572-5376-17-git-send-email-marc.mari.barcelo@gmail.com
State New
Headers show

Commit Message

Marc Marí May 13, 2014, 7:02 a.m. UTC
Modify debug macros to have the same format through the codebase and use regular
ifs instead of ifdef.

As the debug printf is always put in code, some casting had to be added to avoid
warnings treated as errors at compile time.

Signed-off-by: Marc Marí <marc.mari.barcelo@gmail.com>
---
 include/qemu-common.h |    7 +++++++
 migration-rdma.c      |   32 ++++++++++++++------------------
 page_cache.c          |   10 ++++++----
 3 files changed, 27 insertions(+), 22 deletions(-)

Comments

Cornelia Huck May 13, 2014, 9:05 a.m. UTC | #1
On Tue, 13 May 2014 09:02:52 +0200
Marc Marí <marc.mari.barcelo@gmail.com> wrote:

> Modify debug macros to have the same format through the codebase and use regular
> ifs instead of ifdef.
> 
> As the debug printf is always put in code, some casting had to be added to avoid
> warnings treated as errors at compile time.
> 
> Signed-off-by: Marc Marí <marc.mari.barcelo@gmail.com>
> ---
>  include/qemu-common.h |    7 +++++++
>  migration-rdma.c      |   32 ++++++++++++++------------------
>  page_cache.c          |   10 ++++++----
>  3 files changed, 27 insertions(+), 22 deletions(-)
> 
> diff --git a/include/qemu-common.h b/include/qemu-common.h
> index 3f3fd60..3593bdc 100644
> --- a/include/qemu-common.h
> +++ b/include/qemu-common.h
> @@ -463,3 +463,10 @@ int parse_debug_env(const char *name, int max, int initial);
>  const char *qemu_ether_ntoa(const MACAddr *mac);
> 
>  #endif
> +
> +#define QEMU_DPRINTF(cond,pfx,fmt,...) \
> +  do { \
> +    if (cond) { \
> +      fprintf(stderr, pfx": %s:"fmt, __func__, ## __VA_ARGS__); \
> +    } \
> +  } while (0)

I'd split that hunk into a seperate patch and make it the first one in
the series. That way, you'd preserve bisectability.
Eric Blake May 13, 2014, 3:21 p.m. UTC | #2
On 05/13/2014 01:02 AM, Marc Marí wrote:
> Modify debug macros to have the same format through the codebase and use regular
> ifs instead of ifdef.
> 
> As the debug printf is always put in code, some casting had to be added to avoid
> warnings treated as errors at compile time.
> 
> Signed-off-by: Marc Marí <marc.mari.barcelo@gmail.com>
> ---
>  include/qemu-common.h |    7 +++++++
>  migration-rdma.c      |   32 ++++++++++++++------------------
>  page_cache.c          |   10 ++++++----
>  3 files changed, 27 insertions(+), 22 deletions(-)
> 
> diff --git a/include/qemu-common.h b/include/qemu-common.h
> index 3f3fd60..3593bdc 100644
> --- a/include/qemu-common.h
> +++ b/include/qemu-common.h
> @@ -463,3 +463,10 @@ int parse_debug_env(const char *name, int max, int initial);
>  const char *qemu_ether_ntoa(const MACAddr *mac);
>  
>  #endif
> +
> +#define QEMU_DPRINTF(cond,pfx,fmt,...) \
> +  do { \
> +    if (cond) { \
> +      fprintf(stderr, pfx": %s:"fmt, __func__, ## __VA_ARGS__); \

Another instance of using the gcc extension ##__VA_ARGS__, when you
could be portable to all C99 compilers by just subsuming fmt into the '...'.

Spacing doesn't match normal style; need space after comma, and use
indentation of 4 spaces not 2.  It should be:

#define QEMU_DPRINTF(cond, pfx, fmt, ...) \
    do { \
        if (cond) { \
......

I'm not sure whether the code base has a definite preference towards
lining up \ continuations in the same column.

I agree with the other review comments that this hunk needs to be first
in the series - each patch must pass 'make' on its own, but your series
as sent fails to compile earlier patches until this hunk is in.


>   */
>  #define ERROR(errp, fmt, ...) \
> -    do { \
> -        fprintf(stderr, "RDMA ERROR: " fmt "\n", ## __VA_ARGS__); \
> -        if (errp && (*(errp) == NULL)) { \
> -            error_setg(errp, "RDMA ERROR: " fmt, ## __VA_ARGS__); \
> -        } \
> -    } while (0)
> +    QEMU_DPRINTF(1, "RDMA ERROR", fmt"\n", ## __VA_ARGS__); \
> +    do { if (errp && (*(errp) == NULL)) { error_setg(errp, "RDMA ERROR: " fmt, ## __VA_ARGS__); } } while (0)

Once again, you broke a one-statement macro into multiple statements.
Fix the placement of "do {".

Pre-existing, but you might as well simplify the code to drop redundant
() and comparison to NULL:

if (errp && !*errp) {
diff mbox

Patch

diff --git a/include/qemu-common.h b/include/qemu-common.h
index 3f3fd60..3593bdc 100644
--- a/include/qemu-common.h
+++ b/include/qemu-common.h
@@ -463,3 +463,10 @@  int parse_debug_env(const char *name, int max, int initial);
 const char *qemu_ether_ntoa(const MACAddr *mac);
 
 #endif
+
+#define QEMU_DPRINTF(cond,pfx,fmt,...) \
+  do { \
+    if (cond) { \
+      fprintf(stderr, pfx": %s:"fmt, __func__, ## __VA_ARGS__); \
+    } \
+  } while (0)
diff --git a/migration-rdma.c b/migration-rdma.c
index eeb4302..9f9fa8d 100644
--- a/migration-rdma.c
+++ b/migration-rdma.c
@@ -32,39 +32,35 @@ 
 //#define DEBUG_RDMA_REALLY_VERBOSE
 
 #ifdef DEBUG_RDMA
-#define DPRINTF(fmt, ...) \
-    do { printf("rdma: " fmt, ## __VA_ARGS__); } while (0)
+#define DEBUG_RDMA_ENABLED 1
 #else
-#define DPRINTF(fmt, ...) \
-    do { } while (0)
+#define DEBUG_RDMA_ENABLED 0
 #endif
 
+#define DPRINTF(fmt, ...) QEMU_DPRINTF(DEBUG_RDMA_ENABLED, "rdma", fmt, ## __VA_ARGS__)
+
 #ifdef DEBUG_RDMA_VERBOSE
-#define DDPRINTF(fmt, ...) \
-    do { printf("rdma: " fmt, ## __VA_ARGS__); } while (0)
+#define DEBUG_RDMA_VERBOSE_ENABLED 1
 #else
-#define DDPRINTF(fmt, ...) \
-    do { } while (0)
+#define DEBUG_RDMA_VERBOSE_ENABLED 0
 #endif
 
+#define DDPRINTF(fmt, ...) QEMU_DPRINTF(DEBUG_RDMA_VERBOSE_ENABLED, "rdma", fmt, ## __VA_ARGS__)
+
 #ifdef DEBUG_RDMA_REALLY_VERBOSE
-#define DDDPRINTF(fmt, ...) \
-    do { printf("rdma: " fmt, ## __VA_ARGS__); } while (0)
+#define DEBUG_RDMA_REALLY_VERBOSE_ENABLED 1
 #else
-#define DDDPRINTF(fmt, ...) \
-    do { } while (0)
+#define DEBUG_RDMA_REALLY_VERBOSE_ENABLED 0
 #endif
 
+#define DDDPRINTF(fmt, ...) QEMU_DPRINTF(DEBUG_RDMA_REALLY_VERBOSE_ENABLED, "rdma", fmt, ## __VA_ARGS__)
+
 /*
  * Print and error on both the Monitor and the Log file.
  */
 #define ERROR(errp, fmt, ...) \
-    do { \
-        fprintf(stderr, "RDMA ERROR: " fmt "\n", ## __VA_ARGS__); \
-        if (errp && (*(errp) == NULL)) { \
-            error_setg(errp, "RDMA ERROR: " fmt, ## __VA_ARGS__); \
-        } \
-    } while (0)
+    QEMU_DPRINTF(1, "RDMA ERROR", fmt"\n", ## __VA_ARGS__); \
+    do { if (errp && (*(errp) == NULL)) { error_setg(errp, "RDMA ERROR: " fmt, ## __VA_ARGS__); } } while (0)
 
 #define RDMA_RESOLVE_TIMEOUT_MS 10000
 
diff --git a/page_cache.c b/page_cache.c
index b033681..514d8c0 100644
--- a/page_cache.c
+++ b/page_cache.c
@@ -25,14 +25,16 @@ 
 #include "qemu-common.h"
 #include "migration/page_cache.h"
 
+//#define DEBUG_CACHE 1
+
 #ifdef DEBUG_CACHE
-#define DPRINTF(fmt, ...) \
-    do { fprintf(stdout, "cache: " fmt, ## __VA_ARGS__); } while (0)
+#define DEBUG_CACHE_ENABLED 1
 #else
-#define DPRINTF(fmt, ...) \
-    do { } while (0)
+#define DEBUG_CACHE_ENABLED 0 
 #endif
 
+#define DPRINTF(fmt, ...) QEMU_DPRINTF(DEBUG_CACHE_ENABLED, "cache", fmt, ## __VA_ARGS__)
+
 typedef struct CacheItem CacheItem;
 
 struct CacheItem {