diff options
author | Stefan Hajnoczi <stefanha@redhat.com> | 2021-04-14 21:02:46 +0100 |
---|---|---|
committer | Stefan Hajnoczi <stefanha@redhat.com> | 2021-07-05 11:40:32 +0100 |
commit | 0f08586c7171757d77c27ee6c606e8a1c44ac6e3 (patch) | |
tree | 353c4ebb7279d41714e393efd47fabafe1a0807f /include/qemu/main-loop.h | |
parent | 711c0418c8c1ce3a24346f058b001c4c5a2f0f81 (diff) | |
download | qemu-0f08586c7171757d77c27ee6c606e8a1c44ac6e3.zip qemu-0f08586c7171757d77c27ee6c606e8a1c44ac6e3.tar.gz qemu-0f08586c7171757d77c27ee6c606e8a1c44ac6e3.tar.bz2 |
util/async: add a human-readable name to BHs for debugging
It can be difficult to debug issues with BHs in production environments.
Although BHs can usually be identified by looking up their ->cb()
function pointer, this requires debug information for the program. It is
also not possible to print human-readable diagnostics about BHs because
they have no identifier.
This patch adds a name to each BH. The name is not unique per instance
but differentiates between cb() functions, which is usually enough. It's
done by changing aio_bh_new() and friends to macros that stringify cb.
The next patch will use the name field when reporting leaked BHs.
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-Id: <20210414200247.917496-2-stefanha@redhat.com>
Diffstat (limited to 'include/qemu/main-loop.h')
-rw-r--r-- | include/qemu/main-loop.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/include/qemu/main-loop.h b/include/qemu/main-loop.h index 98aef56..8dbc6fc 100644 --- a/include/qemu/main-loop.h +++ b/include/qemu/main-loop.h @@ -294,7 +294,9 @@ void qemu_cond_timedwait_iothread(QemuCond *cond, int ms); void qemu_fd_register(int fd); -QEMUBH *qemu_bh_new(QEMUBHFunc *cb, void *opaque); +#define qemu_bh_new(cb, opaque) \ + qemu_bh_new_full((cb), (opaque), (stringify(cb))) +QEMUBH *qemu_bh_new_full(QEMUBHFunc *cb, void *opaque, const char *name); void qemu_bh_schedule_idle(QEMUBH *bh); enum { |