1#ifndef FIO_DEBUG_H 2#define FIO_DEBUG_H 3 4#include <assert.h> 5#include "log.h" 6 7enum { 8 FD_PROCESS = 0, 9 FD_FILE, 10 FD_IO, 11 FD_MEM, 12 FD_BLKTRACE, 13 FD_VERIFY, 14 FD_RANDOM, 15 FD_PARSE, 16 FD_DISKUTIL, 17 FD_JOB, 18 FD_MUTEX, 19 FD_PROFILE, 20 FD_TIME, 21 FD_NET, 22 FD_RATE, 23 FD_COMPRESS, 24 FD_DEBUG_MAX, 25}; 26 27extern unsigned int fio_debug_jobno, *fio_debug_jobp; 28 29#ifdef FIO_INC_DEBUG 30struct debug_level { 31 const char *name; 32 const char *help; 33 unsigned long shift; 34 unsigned int jobno; 35}; 36extern struct debug_level debug_levels[]; 37 38extern unsigned long fio_debug; 39 40void __dprint(int type, const char *str, ...) __attribute__((format (printf, 2, 3))); 41 42#define dprint(type, str, args...) \ 43 do { \ 44 if ((((1 << type)) & fio_debug) == 0) \ 45 break; \ 46 __dprint((type), (str), ##args); \ 47 } while (0) \ 48 49#else 50 51static inline void dprint(int type, const char *str, ...) 52{ 53} 54#endif 55 56#endif 57