[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH for-7.1 v2 00/39] Logging cleanup and per-thread logfiles
From: |
Richard Henderson |
Subject: |
[PATCH for-7.1 v2 00/39] Logging cleanup and per-thread logfiles |
Date: |
Sat, 26 Mar 2022 07:24:47 -0600 |
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 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.
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 | 365 +++++++++++++++++----------
49 files changed, 712 insertions(+), 659 deletions(-)
--
2.25.1
- [PATCH for-7.1 v2 00/39] Logging cleanup and per-thread logfiles,
Richard Henderson <=
- [PATCH v2 2/8] linux-user/nios2: Fix clone child return, Richard Henderson, 2022/03/26
- [PATCH v2 1/8] linux-user/nios2: Hoist pc advance to the top of EXCP_TRAP, Richard Henderson, 2022/03/26
- [PATCH v2 01/39] util/log: Drop manual log buffering, Richard Henderson, 2022/03/26
- [PATCH v2 3/8] linux-user/nios2: Drop syscall 0 "workaround", Richard Henderson, 2022/03/26
- [PATCH v2 02/39] target/hexagon: Remove qemu_set_log in hexagon_translate_init, Richard Henderson, 2022/03/26
- [PATCH v2 03/39] util/log: Return bool from qemu_set_log_filename, Richard Henderson, 2022/03/26
- [PATCH v2 4/8] linux-user/nios2: Adjust error return, Richard Henderson, 2022/03/26
- [PATCH v2 05/39] os-posix: Use qemu_log_enabled, Richard Henderson, 2022/03/26
- [PATCH v2 5/8] linux-user/nios2: Handle special qemu syscall return values, Richard Henderson, 2022/03/26