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, 21eb7976ef27c1d9f69885b0c8db3020303999c9afJens Axboe FD_NET, 223e260a46ea9a8de224c3d0a29a608da3440f284aJens Axboe FD_RATE, 234f3fe6cdbba0fcba681506f930c6f07dc01fe942Jens Axboe FD_COMPRESS, 24a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboe FD_DEBUG_MAX, 25a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboe}; 26a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboe 2769b98d4c9945bed6b3446a9e73bfaf8e557cf033Jens Axboeextern unsigned int fio_debug_jobno, *fio_debug_jobp; 2869b98d4c9945bed6b3446a9e73bfaf8e557cf033Jens Axboe 29a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboe#ifdef FIO_INC_DEBUG 30a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboestruct debug_level { 31a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboe const char *name; 320b8d11ed135ac467c071c2ae0fe4f3a69a3b8febJens Axboe const char *help; 33a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboe unsigned long shift; 345e1d306e4f9a6337d07cc2d536d77c53e083226fJens Axboe unsigned int jobno; 35a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboe}; 36a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboeextern struct debug_level debug_levels[]; 37a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboe 38a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboeextern unsigned long fio_debug; 39a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboe 40985ee30c1c9b61c834b38e2fbd13d0a19797602eJens Axboevoid __dprint(int type, const char *str, ...) __attribute__((format (printf, 2, 3))); 41bf84eacbfc91a952eb5b781ad2955109c862d41eJens Axboe 42bf84eacbfc91a952eb5b781ad2955109c862d41eJens Axboe#define dprint(type, str, args...) \ 43bf84eacbfc91a952eb5b781ad2955109c862d41eJens Axboe do { \ 44bf84eacbfc91a952eb5b781ad2955109c862d41eJens Axboe if ((((1 << type)) & fio_debug) == 0) \ 45bf84eacbfc91a952eb5b781ad2955109c862d41eJens Axboe break; \ 46bf84eacbfc91a952eb5b781ad2955109c862d41eJens Axboe __dprint((type), (str), ##args); \ 47bf84eacbfc91a952eb5b781ad2955109c862d41eJens Axboe } while (0) \ 48a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboe 49a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboe#else 50a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboe 51bf84eacbfc91a952eb5b781ad2955109c862d41eJens Axboestatic inline void dprint(int type, const char *str, ...) 52bf84eacbfc91a952eb5b781ad2955109c862d41eJens Axboe{ 53bf84eacbfc91a952eb5b781ad2955109c862d41eJens Axboe} 54a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboe#endif 55a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboe 56a3d741fa3bc3120d5b62a56826a97524daa32803Jens Axboe#endif 57