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