+#define PSI_DEBUG_PRINTV(ctx, msg, argv) do { \
+ if ((ctx) && (PSI_DATA(ctx)->flags & PSI_DEBUG)) { \
+ vdprintf(PSI_DATA(ctx)->debug_fd, msg, argv); \
+ } \
+} while(0)
+#define PSI_DEBUG_DUMP(ctx, dump_func, ...) do { \
+ if ((ctx) && (PSI_DATA(ctx)->flags & PSI_DEBUG)) { \
+ struct psi_dump dump_ = {{ .fd = PSI_DATA(ctx)->debug_fd}, \
+ .fun = (psi_dump_cb) dprintf}; \
+ dump_func(&dump_, __VA_ARGS__); \
+ } \
+} while (0)