debug.h revision c223da83e253b0057bb029bf4fbb55a05844215c
1a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboe#ifndef FIO_DEBUG_H
2a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboe#define FIO_DEBUG_H
3a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboe
4a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboe#include <assert.h>
5a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboe#include "log.h"
6a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboe
7a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboeenum {
8a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboe	FD_PROCESS	= 0,
9a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboe	FD_FILE,
10a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboe	FD_IO,
11a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboe	FD_MEM,
12a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboe	FD_BLKTRACE,
13a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboe	FD_VERIFY,
14a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboe	FD_RANDOM,
15a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboe	FD_PARSE,
16cd991b9e36b18903f1564a4bfafdc83a9f165219Jens Axboe	FD_DISKUTIL,
175e1d306e4f9a6337d07cc2d536d77c53e083226fJens Axboe	FD_JOB,
1829adda3ce304f16036cafee6c099aa08444a7db1Jens Axboe	FD_MUTEX,
1979d16311c8d0c7188d73df77838fb1b4b6ff58dbJens Axboe	FD_PROFILE,
20c223da83e253b0057bb029bf4fbb55a05844215cJens Axboe	FD_TIME,
21a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboe	FD_DEBUG_MAX,
22a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboe};
23a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboe
2469b98d4c9945bed6b3446a9e73bfaf8e557cf033Jens Axboeextern unsigned int fio_debug_jobno, *fio_debug_jobp;
2569b98d4c9945bed6b3446a9e73bfaf8e557cf033Jens Axboe
26a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboe#ifdef FIO_INC_DEBUG
27a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboestruct debug_level {
28a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboe	const char *name;
29a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboe	unsigned long shift;
305e1d306e4f9a6337d07cc2d536d77c53e083226fJens Axboe	unsigned int jobno;
31a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboe};
32a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboeextern struct debug_level debug_levels[];
33a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboe
34a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboeextern unsigned long fio_debug;
35a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboe
36bf84eacbfc91a952eb5b781ad2955109c862d41eJens Axboevoid __dprint(int type, const char *str, ...);
37bf84eacbfc91a952eb5b781ad2955109c862d41eJens Axboe
38bf84eacbfc91a952eb5b781ad2955109c862d41eJens Axboe#define dprint(type, str, args...)			\
39bf84eacbfc91a952eb5b781ad2955109c862d41eJens Axboe	do {						\
40bf84eacbfc91a952eb5b781ad2955109c862d41eJens Axboe		if ((((1 << type)) & fio_debug) == 0)	\
41bf84eacbfc91a952eb5b781ad2955109c862d41eJens Axboe			break;				\
42bf84eacbfc91a952eb5b781ad2955109c862d41eJens Axboe		__dprint((type), (str), ##args);	\
43bf84eacbfc91a952eb5b781ad2955109c862d41eJens Axboe	} while (0)					\
44a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboe
45a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboe#else
46a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboe
47bf84eacbfc91a952eb5b781ad2955109c862d41eJens Axboestatic inline void dprint(int type, const char *str, ...)
48bf84eacbfc91a952eb5b781ad2955109c862d41eJens Axboe{
49bf84eacbfc91a952eb5b781ad2955109c862d41eJens Axboe}
50a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboe#endif
51a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboe
52a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboe#endif
53