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