util/log: Use qemu_log_trylock/unlock in qemu_log

Avoid using QemuLogFile and RCU directly.

Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20220417183019.755276-17-richard.henderson@linaro.org>
This commit is contained in:
Richard Henderson 2022-04-17 11:29:56 -07:00
parent 9aee8f2c29
commit 095e9855b7
1 changed files with 5 additions and 6 deletions

View File

@ -62,23 +62,22 @@ void qemu_log_unlock(FILE *fd)
/* Return the number of characters emitted. */ /* Return the number of characters emitted. */
int qemu_log(const char *fmt, ...) int qemu_log(const char *fmt, ...)
{ {
FILE *f = qemu_log_trylock();
int ret = 0; int ret = 0;
QemuLogFile *logfile;
rcu_read_lock(); if (f) {
logfile = qatomic_rcu_read(&qemu_logfile);
if (logfile) {
va_list ap; va_list ap;
va_start(ap, fmt); va_start(ap, fmt);
ret = vfprintf(logfile->fd, fmt, ap); ret = vfprintf(f, fmt, ap);
va_end(ap); va_end(ap);
qemu_log_unlock(f);
/* Don't pass back error results. */ /* Don't pass back error results. */
if (ret < 0) { if (ret < 0) {
ret = 0; ret = 0;
} }
} }
rcu_read_unlock();
return ret; return ret;
} }