From bf84eacbfc91a952eb5b781ad2955109c862d41e Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Fri, 19 Mar 2010 16:41:52 +0100 Subject: [PATCH 1/1] Make the dprint() processing out-of-line Instead of having the big macro inlined everywhere, only inline the mask check and put the rest out-of-line. This reduces the size of fio with 4% here, and speeds it up. Signed-off-by: Jens Axboe --- Makefile | 2 +- debug.c | 27 +++++++++++++++++++++++++++ debug.h | 26 +++++++++++--------------- log.h | 2 ++ 4 files changed, 41 insertions(+), 16 deletions(-) create mode 100644 debug.c diff --git a/Makefile b/Makefile index ce2374b6..12042f4a 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ SCRIPTS = fio_generate_plots OBJS = gettime.o fio.o ioengines.o init.o stat.o log.o time.o filesetup.o \ eta.o verify.o memory.o io_u.o parse.o mutex.o options.o \ rbtree.o diskutil.o fifo.o blktrace.o smalloc.o filehash.o helpers.o \ - cgroup.o profile.o + cgroup.o profile.o debug.o OBJS += crc/crc7.o OBJS += crc/crc16.o diff --git a/debug.c b/debug.c new file mode 100644 index 00000000..2eb3b6f9 --- /dev/null +++ b/debug.c @@ -0,0 +1,27 @@ +#include +#include +#include +#include "debug.h" + +void __dprint(int type, const char *str, ...) +{ + va_list args; + pid_t pid; + + assert(type < FD_DEBUG_MAX); + + if ((((1 << type)) & fio_debug) == 0) + return; + + pid = getpid(); + if (fio_debug_jobp && *fio_debug_jobp != -1U + && pid != *fio_debug_jobp) + return; + + log_info("%-8s ", debug_levels[(type)].name); + log_info("%-5u ", (int) pid); + + va_start(args, str); + vfprintf(f_out, str, args); + va_end(args); +} diff --git a/debug.h b/debug.h index 891c254e..e51d8b20 100644 --- a/debug.h +++ b/debug.h @@ -32,24 +32,20 @@ extern struct debug_level debug_levels[]; extern unsigned long fio_debug; -#define dprint(type, str, args...) \ - do { \ - pid_t __pid; \ - assert(type < FD_DEBUG_MAX); \ - if ((((1 << type)) & fio_debug) == 0) \ - break; \ - __pid = getpid(); \ - if (fio_debug_jobp && *fio_debug_jobp != -1U \ - && __pid != *fio_debug_jobp) \ - break; \ - log_info("%-8s ", debug_levels[(type)].name); \ - log_info("%-5u ", (int) __pid); \ - log_info(str, ##args); \ - } while (0) +void __dprint(int type, const char *str, ...); + +#define dprint(type, str, args...) \ + do { \ + if ((((1 << type)) & fio_debug) == 0) \ + break; \ + __dprint((type), (str), ##args); \ + } while (0) \ #else -#define dprint(type, str, args...) +static inline void dprint(int type, const char *str, ...) +{ +} #endif #endif diff --git a/log.h b/log.h index 12c9a552..5ca37b39 100644 --- a/log.h +++ b/log.h @@ -1,6 +1,8 @@ #ifndef FIO_LOG_H #define FIO_LOG_H +#include + extern FILE *f_out; extern FILE *f_err; -- 2.25.1