diff options
author | Richard Henderson <richard.henderson@linaro.org> | 2022-04-17 11:29:49 -0700 |
---|---|---|
committer | Richard Henderson <richard.henderson@linaro.org> | 2022-04-20 10:51:11 -0700 |
commit | 78b548583e0725bb7054162a31dac552b01c02a8 (patch) | |
tree | e8e56b975713665391fddd1534e8642ed000c29f /cpu.c | |
parent | 6fef222971e1f77d1e7b6c218edce72ceb568126 (diff) |
*: Use fprintf between qemu_log_trylock/unlock
Inside qemu_log, we perform qemu_log_trylock/unlock, which need
not be done if we have already performed the lock beforehand.
Always check the result of qemu_log_trylock -- only checking
qemu_loglevel_mask races with the acquisition of the lock on
the logfile.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20220417183019.755276-10-richard.henderson@linaro.org>
Diffstat (limited to 'cpu.c')
-rw-r--r-- | cpu.c | 14 |
1 files changed, 8 insertions, 6 deletions
@@ -400,12 +400,14 @@ void cpu_abort(CPUState *cpu, const char *fmt, ...) cpu_dump_state(cpu, stderr, CPU_DUMP_FPU | CPU_DUMP_CCOP); if (qemu_log_separate()) { FILE *logfile = qemu_log_trylock(); - qemu_log("qemu: fatal: "); - qemu_log_vprintf(fmt, ap2); - qemu_log("\n"); - log_cpu_state(cpu, CPU_DUMP_FPU | CPU_DUMP_CCOP); - qemu_log_flush(); - qemu_log_unlock(logfile); + if (logfile) { + fprintf(logfile, "qemu: fatal: "); + vfprintf(logfile, fmt, ap2); + fprintf(logfile, "\n"); + cpu_dump_state(cpu, logfile, CPU_DUMP_FPU | CPU_DUMP_CCOP); + qemu_log_flush(); + qemu_log_unlock(logfile); + } qemu_log_close(); } va_end(ap2); |