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_DEBUG_MAX, 25 }; 26 27 extern unsigned int fio_debug_jobno, *fio_debug_jobp; 28 29 #ifdef FIO_INC_DEBUG 30 struct debug_level { 31 const char *name; 32 const char *help; 33 unsigned long shift; 34 unsigned int jobno; 35 }; 36 extern struct debug_level debug_levels[]; 37 38 extern unsigned long fio_debug; 39 40 void __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 51 static inline void dprint(int type, const char *str, ...) 52 { 53 } 54 #endif 55 56 #endif 57