1 #ifndef FIO_DEBUG_H 2 #define FIO_DEBUG_H 3 4 #include <assert.h> 5 #include "log.h" 6 7 enum { 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_STEADYSTATE, 25 FD_HELPERTHREAD, 26 FD_DEBUG_MAX, 27 }; 28 29 extern unsigned int fio_debug_jobno, *fio_debug_jobp; 30 31 #ifdef FIO_INC_DEBUG 32 struct debug_level { 33 const char *name; 34 const char *help; 35 unsigned long shift; 36 unsigned int jobno; 37 }; 38 extern struct debug_level debug_levels[]; 39 40 extern unsigned long fio_debug; 41 42 void __dprint(int type, const char *str, ...) __attribute__((format (printf, 2, 3))); 43 44 #define dprint(type, str, args...) \ 45 do { \ 46 if ((((1 << type)) & fio_debug) == 0) \ 47 break; \ 48 __dprint((type), (str), ##args); \ 49 } while (0) \ 50 51 #else 52 53 static inline void dprint(int type, const char *str, ...) 54 { 55 } 56 #endif 57 58 #endif 59