On Fri, Apr 05, 2013 at 02:07:52PM +0100, Richard W.M. Jones wrote: > +/* DEBUG_SSH=1 enables the DPRINTF (debugging printf) statements in > + * this block driver code. > + * > + * TRACE_LIBSSH2=<bitmask> enables tracing in libssh2 itself. Note > + * that this requires that libssh2 was specially compiled with the > + * `./configure --enable-debug' option, so most likely you will have > + * to compile it yourself. The meaning of <bitmask> is described > + * here: http://www.libssh2.org/libssh2_trace.html > + */ > +#define DEBUG_SSH 0 > +#define TRACE_LIBSSH2 0 /* or try: LIBSSH2_TRACE_SFTP */ > + > +#if DEBUG_SSH > +#define DPRINTF(fmt,...) \ > + do { \ > + fprintf(stderr, "ssh: %-15s " fmt "\n", __func__, ##__VA_ARGS__); \ > + } while (0) > +#else > +#define DPRINTF(fmt,...) /* nothing */ > +#endif
The following approach keeps syntax and format string error checking even when DEBUG_SSH if 0: #define DPRINTF(fmt, ...) \ do { \ if (DEBUG_SSH) { \ fprintf(stderr, "ssh: %-15s " fmt "\n", \ __func__, ##__VA_ARGS__); \ } \ } while (0) It avoids DPRINTF() bitrot. > +#define LOCK(s) do { \ > + DPRINTF("acquiring the lock"); \ > + qemu_co_mutex_lock(&s->lock); \ > + DPRINTF("acquired the lock"); \ > + } while (0) > + > +#define UNLOCK(s) do { \ > + qemu_co_mutex_unlock(&s->lock); \ > + DPRINTF("released the lock"); \ > + } while (0) See ./trace-events: qemu_co_mutex_lock_entry(void *mutex, void *self) "mutex %p self %p" qemu_co_mutex_lock_return(void *mutex, void *self) "mutex %p self %p" qemu_co_mutex_unlock_entry(void *mutex, void *self) "mutex %p self %p" qemu_co_mutex_unlock_return(void *mutex, void *self) "mutex %p self %p" This means you can get these printfs like this: $ ./configure --enable-trace-backend=stderr $ echo qemu_co_mutex_lock_entry >my-events $ echo qemu_co_mutex_lock_return >>my-events $ echo qemu_co_mutex_unlock_entry >>my-events $ echo qemu_co_mutex_unlock_return >>my-events $ x86_64-softmmu/qemu-system-x86_64 -trace events=my-events ... If you want you can keep the macros but really we already have these printfs.