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:
parent
9aee8f2c29
commit
095e9855b7
11
util/log.c
11
util/log.c
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue