[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v3 00/39] Logging cleanup and per-thread logfiles
From: |
Richard Henderson |
Subject: |
[PATCH v3 00/39] Logging cleanup and per-thread logfiles |
Date: |
Sun, 17 Apr 2022 11:29:40 -0700 |
Most of the changes here reduce the amount of locking involved
in logging, due to repeated qemu_log calls, each of which takes
and releases the rcu_read_lock.
This makes more use of qemu_log_lock/unlock around code blocks,
which both keeps the output together in the face of threads and
also plays the rcu_read_lock game only once for the block.
Finally, add a -d tid option to open per-thread logfiles.
This can be extremely helpful in debugging user-only threads.
Changes for v3:
* Updates for review:
- use 0x%x
- use enum for valid_filename_template
Changes for v2:
* Rename qemu_log_lock to qemu_log_trylock to emphasize that
the call is not guaranteed to succeed.
* Work around a musl compilation error, caused by our own
typeof_strip_qual macro not working with incomplete structs.
* Use CONFIG_GETTID properly.
Patches lacking review:
24-include-exec-log-Do-not-reference-QemuLogFile-dir.patch
27-util-log-Introduce-qemu_set_log_filename_flags.patch
r~
Richard Henderson (39):
util/log: Drop manual log buffering
target/hexagon: Remove qemu_set_log in hexagon_translate_init
util/log: Return bool from qemu_set_log_filename
util/log: Pass Error pointer to qemu_set_log
os-posix: Use qemu_log_enabled
util/log: Move qemu_log_lock, qemu_log_unlock out of line
util/log: Rename qemu_log_lock to qemu_log_trylock
hw/xen: Split out xen_pv_output_msg
*: Use fprintf between qemu_log_trylock/unlock
util/log: Remove qemu_log_vprintf
tcg: Pass the locked filepointer to tcg_dump_ops
exec/translator: Pass the locked filepointer to disas_log hook
exec/log: Remove log_disas and log_target_disas
accel/tcg: Use cpu_dump_state between qemu_log_trylock/unlock
target/nios2: Remove log_cpu_state from reset
util/log: Use qemu_log_trylock/unlock in qemu_log
util/log: Drop return value from qemu_log
util/log: Mark qemu_log_trylock as G_GNUC_WARN_UNUSED_RESULT
util/log: Remove qemu_log_flush
util/log: Drop call to setvbuf
bsd-user: Expand log_page_dump inline
linux-user: Expand log_page_dump inline
tests/unit: Do not reference QemuLogFile directly
include/exec/log: Do not reference QemuLogFile directly
include/qemu/log: Move entire implementation out-of-line
sysemu/os-win32: Test for and use _lock_file/_unlock_file
util/log: Introduce qemu_set_log_filename_flags
bsd-user: Use qemu_set_log_filename_flags
linux-user: Use qemu_set_log_filename_flags
softmmu: Use qemu_set_log_filename_flags
util/log: Remove qemu_log_close
util/log: Rename logfilename to global_filename
util/log: Rename qemu_logfile to global_file
util/log: Rename qemu_logfile_mutex to global_mutex
util/log: Hoist the eval of is_daemonized in qemu_set_log_internal
util/log: Combine two logfile closes
util/log: Rename QemuLogFile to RCUCloseFILE
util/log: Limit RCUCloseFILE to file closing
util/log: Support per-thread log files
meson.build | 12 +
include/exec/log.h | 52 +---
include/exec/translator.h | 2 +-
include/qemu/log-for-trace.h | 2 +-
include/qemu/log.h | 93 +------
include/sysemu/os-win32.h | 16 +-
accel/tcg/cpu-exec.c | 18 +-
accel/tcg/translate-all.c | 118 +++++----
accel/tcg/translator.c | 12 +-
bsd-user/main.c | 54 ++--
cpu.c | 16 +-
hw/net/can/can_sja1000.c | 25 +-
hw/xen/xen_pvdev.c | 45 ++--
linux-user/main.c | 55 ++--
linux-user/mmap.c | 7 +-
monitor/misc.c | 9 +-
net/can/can_socketcan.c | 24 +-
os-posix.c | 2 +-
qemu-img.c | 2 +-
qemu-io.c | 2 +-
qemu-nbd.c | 2 +-
scsi/qemu-pr-helper.c | 2 +-
softmmu/vl.c | 21 +-
storage-daemon/qemu-storage-daemon.c | 2 +-
target/alpha/translate.c | 7 +-
target/arm/translate-a64.c | 6 +-
target/arm/translate.c | 7 +-
target/avr/translate.c | 7 +-
target/cris/translate.c | 7 +-
target/hexagon/translate.c | 13 +-
target/hppa/translate.c | 15 +-
target/i386/tcg/translate.c | 22 +-
target/m68k/translate.c | 7 +-
target/microblaze/translate.c | 7 +-
target/mips/tcg/translate.c | 7 +-
target/nios2/cpu.c | 5 -
target/nios2/translate.c | 7 +-
target/openrisc/translate.c | 7 +-
target/ppc/translate.c | 7 +-
target/riscv/translate.c | 10 +-
target/rx/translate.c | 7 +-
target/s390x/tcg/translate.c | 11 +-
target/sh4/translate.c | 7 +-
target/sparc/translate.c | 7 +-
target/tricore/translate.c | 7 +-
target/xtensa/translate.c | 7 +-
tcg/tcg.c | 184 ++++++-------
tests/unit/test-logging.c | 42 ++-
util/log.c | 377 +++++++++++++++++----------
49 files changed, 724 insertions(+), 659 deletions(-)
--
2.25.1
- [PATCH v3 00/39] Logging cleanup and per-thread logfiles,
Richard Henderson <=
- [PATCH v3 01/39] util/log: Drop manual log buffering, Richard Henderson, 2022/04/17
- [PATCH v3 11/39] tcg: Pass the locked filepointer to tcg_dump_ops, Richard Henderson, 2022/04/17
- [PATCH v3 03/39] util/log: Return bool from qemu_set_log_filename, Richard Henderson, 2022/04/17
- [PATCH v3 06/39] util/log: Move qemu_log_lock, qemu_log_unlock out of line, Richard Henderson, 2022/04/17
- [PATCH v3 05/39] os-posix: Use qemu_log_enabled, Richard Henderson, 2022/04/17
- [PATCH v3 14/39] accel/tcg: Use cpu_dump_state between qemu_log_trylock/unlock, Richard Henderson, 2022/04/17
- [PATCH v3 20/39] util/log: Drop call to setvbuf, Richard Henderson, 2022/04/17
- [PATCH v3 10/39] util/log: Remove qemu_log_vprintf, Richard Henderson, 2022/04/17
- [PATCH v3 08/39] hw/xen: Split out xen_pv_output_msg, Richard Henderson, 2022/04/17
- [PATCH v3 09/39] *: Use fprintf between qemu_log_trylock/unlock, Richard Henderson, 2022/04/17