All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 00/39] Logging cleanup and per-thread logfiles
@ 2022-04-17 18:29 Richard Henderson
  2022-04-17 18:29 ` [PATCH v3 01/39] util/log: Drop manual log buffering Richard Henderson
                   ` (38 more replies)
  0 siblings, 39 replies; 41+ messages in thread
From: Richard Henderson @ 2022-04-17 18:29 UTC (permalink / raw)
  To: qemu-devel; +Cc: alex.bennee

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



^ permalink raw reply	[flat|nested] 41+ messages in thread

end of thread, other threads:[~2022-04-19 10:20 UTC | newest]

Thread overview: 41+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-04-17 18:29 [PATCH v3 00/39] Logging cleanup and per-thread logfiles Richard Henderson
2022-04-17 18:29 ` [PATCH v3 01/39] util/log: Drop manual log buffering Richard Henderson
2022-04-17 18:29 ` [PATCH v3 02/39] target/hexagon: Remove qemu_set_log in hexagon_translate_init Richard Henderson
2022-04-17 18:29 ` [PATCH v3 03/39] util/log: Return bool from qemu_set_log_filename Richard Henderson
2022-04-17 18:29 ` [PATCH v3 04/39] util/log: Pass Error pointer to qemu_set_log Richard Henderson
2022-04-17 18:29 ` [PATCH v3 05/39] os-posix: Use qemu_log_enabled Richard Henderson
2022-04-17 18:29 ` [PATCH v3 06/39] util/log: Move qemu_log_lock, qemu_log_unlock out of line Richard Henderson
2022-04-17 18:29 ` [PATCH v3 07/39] util/log: Rename qemu_log_lock to qemu_log_trylock Richard Henderson
2022-04-17 18:29 ` [PATCH v3 08/39] hw/xen: Split out xen_pv_output_msg Richard Henderson
2022-04-17 18:29 ` [PATCH v3 09/39] *: Use fprintf between qemu_log_trylock/unlock Richard Henderson
2022-04-17 18:29 ` [PATCH v3 10/39] util/log: Remove qemu_log_vprintf Richard Henderson
2022-04-17 18:29 ` [PATCH v3 11/39] tcg: Pass the locked filepointer to tcg_dump_ops Richard Henderson
2022-04-17 18:29 ` [PATCH v3 12/39] exec/translator: Pass the locked filepointer to disas_log hook Richard Henderson
2022-04-17 18:29 ` [PATCH v3 13/39] exec/log: Remove log_disas and log_target_disas Richard Henderson
2022-04-17 18:29 ` [PATCH v3 14/39] accel/tcg: Use cpu_dump_state between qemu_log_trylock/unlock Richard Henderson
2022-04-17 18:29 ` [PATCH v3 15/39] target/nios2: Remove log_cpu_state from reset Richard Henderson
2022-04-17 18:29 ` [PATCH v3 16/39] util/log: Use qemu_log_trylock/unlock in qemu_log Richard Henderson
2022-04-17 18:29 ` [PATCH v3 17/39] util/log: Drop return value from qemu_log Richard Henderson
2022-04-17 18:29 ` [PATCH v3 18/39] util/log: Mark qemu_log_trylock as G_GNUC_WARN_UNUSED_RESULT Richard Henderson
2022-04-17 18:29 ` [PATCH v3 19/39] util/log: Remove qemu_log_flush Richard Henderson
2022-04-17 18:30 ` [PATCH v3 20/39] util/log: Drop call to setvbuf Richard Henderson
2022-04-17 18:30 ` [PATCH v3 21/39] bsd-user: Expand log_page_dump inline Richard Henderson
2022-04-17 18:30 ` [PATCH v3 22/39] linux-user: " Richard Henderson
2022-04-17 18:30 ` [PATCH v3 23/39] tests/unit: Do not reference QemuLogFile directly Richard Henderson
2022-04-17 18:30 ` [PATCH v3 24/39] include/exec/log: " Richard Henderson
2022-04-19 10:14   ` Alex Bennée
2022-04-17 18:30 ` [PATCH v3 25/39] include/qemu/log: Move entire implementation out-of-line Richard Henderson
2022-04-17 18:30 ` [PATCH v3 26/39] sysemu/os-win32: Test for and use _lock_file/_unlock_file Richard Henderson
2022-04-17 18:30 ` [PATCH v3 27/39] util/log: Introduce qemu_set_log_filename_flags Richard Henderson
2022-04-17 18:30 ` [PATCH v3 28/39] bsd-user: Use qemu_set_log_filename_flags Richard Henderson
2022-04-17 18:30 ` [PATCH v3 29/39] linux-user: " Richard Henderson
2022-04-17 18:30 ` [PATCH v3 30/39] softmmu: " Richard Henderson
2022-04-17 18:30 ` [PATCH v3 31/39] util/log: Remove qemu_log_close Richard Henderson
2022-04-17 18:30 ` [PATCH v3 32/39] util/log: Rename logfilename to global_filename Richard Henderson
2022-04-17 18:30 ` [PATCH v3 33/39] util/log: Rename qemu_logfile to global_file Richard Henderson
2022-04-17 18:30 ` [PATCH v3 34/39] util/log: Rename qemu_logfile_mutex to global_mutex Richard Henderson
2022-04-17 18:30 ` [PATCH v3 35/39] util/log: Hoist the eval of is_daemonized in qemu_set_log_internal Richard Henderson
2022-04-17 18:30 ` [PATCH v3 36/39] util/log: Combine two logfile closes Richard Henderson
2022-04-17 18:30 ` [PATCH v3 37/39] util/log: Rename QemuLogFile to RCUCloseFILE Richard Henderson
2022-04-17 18:30 ` [PATCH v3 38/39] util/log: Limit RCUCloseFILE to file closing Richard Henderson
2022-04-17 18:30 ` [PATCH v3 39/39] util/log: Support per-thread log files Richard Henderson

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.