qemu/hw/net/vmxnet_debug.h
Miao Yan 71c2f5b9b3 net/vmxnet3: fix debug macro pattern for vmxnet3
Vmxnet3 uses the following debug macro style:

 #ifdef SOME_DEBUG
 #  define debug(...) do{ printf(...); } while (0)
 # else
 #  define debug(...) do{ } while (0)
 #endif

If SOME_DEBUG is undefined, then format string inside the
debug macro will never be checked by compiler. Code is
likely to break in the future when SOME_DEBUG is enabled
 because of lack of testing. This patch changes this
to the following:

 #define debug(...) \
  do { if (SOME_DEBUG_ENABLED) printf(...); } while (0)

Signed-off-by: Miao Yan <yanmiaobest@gmail.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Dmitry Fleytman <dmitry@daynix.com>
Signed-off-by: Jason Wang <jasowang@redhat.com>
2016-01-11 11:01:34 +08:00

148 lines
5.8 KiB
C

/*
* QEMU VMWARE VMXNET* paravirtual NICs - debugging facilities
*
* Copyright (c) 2012 Ravello Systems LTD (http://ravellosystems.com)
*
* Developed by Daynix Computing LTD (http://www.daynix.com)
*
* Authors:
* Dmitry Fleytman <dmitry@daynix.com>
* Tamir Shomer <tamirs@daynix.com>
* Yan Vugenfirer <yan@daynix.com>
*
* This work is licensed under the terms of the GNU GPL, version 2 or later.
* See the COPYING file in the top-level directory.
*
*/
#ifndef _QEMU_VMXNET_DEBUG_H
#define _QEMU_VMXNET_DEBUG_H
#define VMXNET_DEVICE_NAME "vmxnet3"
#define VMXNET_DEBUG_WARNINGS
#define VMXNET_DEBUG_ERRORS
#undef VMXNET_DEBUG_CB
#undef VMXNET_DEBUG_INTERRUPTS
#undef VMXNET_DEBUG_CONFIG
#undef VMXNET_DEBUG_RINGS
#undef VMXNET_DEBUG_PACKETS
#undef VMXNET_DEBUG_SHMEM_ACCESS
#ifdef VMXNET_DEBUG_CB
# define VMXNET_DEBUG_CB_ENABLED 1
#else
# define VMXNET_DEBUG_CB_ENABLED 0
#endif
#ifdef VMXNET_DEBUG_WARNINGS
# define VMXNET_DEBUG_WARNINGS_ENABLED 1
#else
# define VMXNET_DEBUG_WARNINGS_ENABLED 0
#endif
#ifdef VMXNET_DEBUG_ERRORS
# define VMXNET_DEBUG_ERRORS_ENABLED 1
#else
# define VMXNET_DEBUG_ERRORS_ENABLED 0
#endif
#ifdef VMXNET_DEBUG_CONFIG
# define VMXNET_DEBUG_CONFIG_ENABLED 1
#else
# define VMXNET_DEBUG_CONFIG_ENABLED 0
#endif
#ifdef VMXNET_DEBUG_RINGS
# define VMXNET_DEBUG_RINGS_ENABLED 1
#else
# define VMXNET_DEBUG_RINGS_ENABLED 0
#endif
#ifdef VMXNET_DEBUG_PACKETS
# define VMXNET_DEBUG_PACKETS_ENABLED 1
#else
# define VMXNET_DEBUG_PACKETS_ENABLED 0
#endif
#ifdef VMXNET_DEBUG_INTERRUPTS
# define VMXNET_DEBUG_INTERRUPTS_ENABLED 1
#else
# define VMXNET_DEBUG_INTERRUPTS_ENABLED 0
#endif
#ifdef VMXNET_DEBUG_SHMEM_ACCESS
# define VMXNET_DEBUG_SHMEM_ACCESS_ENABLED 1
#else
# define VMXNET_DEBUG_SHMEM_ACCESS_ENABLED 0
#endif
#define VMW_SHPRN(fmt, ...) \
do { \
if (VMXNET_DEBUG_SHMEM_ACCESS_ENABLED) { \
printf("[%s][SH][%s]: " fmt "\n", VMXNET_DEVICE_NAME, __func__, \
## __VA_ARGS__); \
} \
} while (0)
#define VMW_CBPRN(fmt, ...) \
do { \
if (VMXNET_DEBUG_CB_ENABLED) { \
printf("[%s][CB][%s]: " fmt "\n", VMXNET_DEVICE_NAME, __func__, \
## __VA_ARGS__); \
} \
} while (0)
#define VMW_PKPRN(fmt, ...) \
do { \
if (VMXNET_DEBUG_PACKETS_ENABLED) { \
printf("[%s][PK][%s]: " fmt "\n", VMXNET_DEVICE_NAME, __func__, \
## __VA_ARGS__); \
} \
} while (0)
#define VMW_WRPRN(fmt, ...) \
do { \
if (VMXNET_DEBUG_WARNINGS_ENABLED) { \
printf("[%s][WR][%s]: " fmt "\n", VMXNET_DEVICE_NAME, __func__, \
## __VA_ARGS__); \
} \
} while (0)
#define VMW_ERPRN(fmt, ...) \
do { \
if (VMXNET_DEBUG_ERRORS_ENABLED) { \
printf("[%s][ER][%s]: " fmt "\n", VMXNET_DEVICE_NAME, __func__, \
## __VA_ARGS__); \
} \
} while (0)
#define VMW_IRPRN(fmt, ...) \
do { \
if (VMXNET_DEBUG_INTERRUPTS_ENABLED) { \
printf("[%s][IR][%s]: " fmt "\n", VMXNET_DEVICE_NAME, __func__, \
## __VA_ARGS__); \
} \
} while (0)
#define VMW_CFPRN(fmt, ...) \
do { \
if (VMXNET_DEBUG_CONFIG_ENABLED) { \
printf("[%s][CF][%s]: " fmt "\n", VMXNET_DEVICE_NAME, __func__, \
## __VA_ARGS__); \
} \
} while (0)
#define VMW_RIPRN(fmt, ...) \
do { \
if (VMXNET_DEBUG_RINGS_ENABLED) { \
printf("[%s][RI][%s]: " fmt "\n", VMXNET_DEVICE_NAME, __func__, \
## __VA_ARGS__); \
} \
} while (0)
#define VMXNET_MF "%02X:%02X:%02X:%02X:%02X:%02X"
#define VMXNET_MA(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
#endif /* _QEMU_VMXNET3_DEBUG_H */