X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=debug.h;h=8a8cf8710e04fd70365925b90ec4cf6081ddecae;hp=160f48c3b75a9bcfc62eb0ce614181f5daa5a088;hb=36ed2f9a93a486109a87b2c0306ab69d4f930891;hpb=5921e80c5dfc9f96d2f21da6ae58f2b5d3a0b373 diff --git a/debug.h b/debug.h index 160f48c3..8a8cf871 100644 --- a/debug.h +++ b/debug.h @@ -1,8 +1,7 @@ #ifndef FIO_DEBUG_H #define FIO_DEBUG_H -#include -#include "log.h" +#include "lib/types.h" enum { FD_PROCESS = 0, @@ -15,37 +14,61 @@ enum { FD_PARSE, FD_DISKUTIL, FD_JOB, + FD_MUTEX, + FD_PROFILE, + FD_TIME, + FD_NET, + FD_RATE, + FD_COMPRESS, + FD_STEADYSTATE, + FD_HELPERTHREAD, FD_DEBUG_MAX, }; +extern unsigned int fio_debug_jobno, *fio_debug_jobp, *fio_warned; + +static inline bool fio_did_warn(unsigned int mask) +{ + if (*fio_warned & mask) + return true; + + *fio_warned |= mask; + return false; +} + +enum { + FIO_WARN_ROOT_FLUSH = 1, + FIO_WARN_VERIFY_BUF = 2, + FIO_WARN_ZONED_BUG = 4, + FIO_WARN_IOLOG_DROP = 8, + FIO_WARN_FADVISE = 16, +}; + #ifdef FIO_INC_DEBUG struct debug_level { const char *name; + const char *help; unsigned long shift; unsigned int jobno; }; -extern struct debug_level debug_levels[]; +extern const struct debug_level debug_levels[]; extern unsigned long fio_debug; -extern unsigned int fio_debug_jobno, *fio_debug_jobp; - -#define dprint(type, str, args...) \ - do { \ - pid_t pid = getpid(); \ - assert(type < FD_DEBUG_MAX); \ - if ((((1 << type)) & fio_debug) == 0) \ - break; \ - if (fio_debug_jobp && *fio_debug_jobp != -1U \ - && pid != *fio_debug_jobp) \ - break; \ - log_info("%-8s ", debug_levels[(type)].name); \ - log_info("%-5u ", (int) pid); \ - log_info(str, ##args); \ - } while (0) + +void __dprint(int type, const char *str, ...) __attribute__((format (printf, 2, 3))); + +#define dprint(type, str, args...) \ + do { \ + if (((1 << type) & fio_debug) == 0) \ + break; \ + __dprint((type), (str), ##args); \ + } while (0) \ #else -#define dprint(type, str, args...) +static inline void dprint(int type, const char *str, ...) +{ +} #endif #endif