mirror of
https://gitlab.com/qemu-project/qemu
synced 2024-09-06 09:55:55 +00:00
include/qemu/log: Move entire implementation out-of-line
Move QemuLogFile, qemu_logfile, and all inline functions into qemu/log.c. No need to expose these implementation details in the api. Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20220417183019.755276-26-richard.henderson@linaro.org>
This commit is contained in:
parent
bf619eae2e
commit
7fc493f8bd
|
@ -3,46 +3,16 @@
|
||||||
|
|
||||||
/* A small part of this API is split into its own header */
|
/* A small part of this API is split into its own header */
|
||||||
#include "qemu/log-for-trace.h"
|
#include "qemu/log-for-trace.h"
|
||||||
#include "qemu/rcu.h"
|
|
||||||
|
|
||||||
typedef struct QemuLogFile {
|
|
||||||
struct rcu_head rcu;
|
|
||||||
FILE *fd;
|
|
||||||
} QemuLogFile;
|
|
||||||
|
|
||||||
/* Private global variable, don't use */
|
|
||||||
extern QemuLogFile *qemu_logfile;
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The new API:
|
* The new API:
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Log settings checking macros: */
|
/* Returns true if qemu_log() will really write somewhere. */
|
||||||
|
bool qemu_log_enabled(void);
|
||||||
|
|
||||||
/* Returns true if qemu_log() will really write somewhere
|
/* Returns true if qemu_log() will write somewhere other than stderr. */
|
||||||
*/
|
bool qemu_log_separate(void);
|
||||||
static inline bool qemu_log_enabled(void)
|
|
||||||
{
|
|
||||||
return qemu_logfile != NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Returns true if qemu_log() will write somewhere else than stderr
|
|
||||||
*/
|
|
||||||
static inline bool qemu_log_separate(void)
|
|
||||||
{
|
|
||||||
QemuLogFile *logfile;
|
|
||||||
bool res = false;
|
|
||||||
|
|
||||||
rcu_read_lock();
|
|
||||||
logfile = qatomic_rcu_read(&qemu_logfile);
|
|
||||||
if (logfile && logfile->fd != stderr) {
|
|
||||||
res = true;
|
|
||||||
}
|
|
||||||
rcu_read_unlock();
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
#define CPU_LOG_TB_OUT_ASM (1 << 0)
|
#define CPU_LOG_TB_OUT_ASM (1 << 0)
|
||||||
#define CPU_LOG_TB_IN_ASM (1 << 1)
|
#define CPU_LOG_TB_IN_ASM (1 << 1)
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
|
|
||||||
#include "qapi/error.h"
|
#include "qapi/error.h"
|
||||||
#include "qemu/log.h"
|
#include "qemu/log.h"
|
||||||
|
#include "qemu/rcu.h"
|
||||||
|
|
||||||
static void test_parse_range(void)
|
static void test_parse_range(void)
|
||||||
{
|
{
|
||||||
|
|
30
util/log.c
30
util/log.c
|
@ -26,14 +26,42 @@
|
||||||
#include "trace/control.h"
|
#include "trace/control.h"
|
||||||
#include "qemu/thread.h"
|
#include "qemu/thread.h"
|
||||||
#include "qemu/lockable.h"
|
#include "qemu/lockable.h"
|
||||||
|
#include "qemu/rcu.h"
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct QemuLogFile {
|
||||||
|
struct rcu_head rcu;
|
||||||
|
FILE *fd;
|
||||||
|
} QemuLogFile;
|
||||||
|
|
||||||
static char *logfilename;
|
static char *logfilename;
|
||||||
static QemuMutex qemu_logfile_mutex;
|
static QemuMutex qemu_logfile_mutex;
|
||||||
QemuLogFile *qemu_logfile;
|
static QemuLogFile *qemu_logfile;
|
||||||
int qemu_loglevel;
|
int qemu_loglevel;
|
||||||
static int log_append = 0;
|
static int log_append = 0;
|
||||||
static GArray *debug_regions;
|
static GArray *debug_regions;
|
||||||
|
|
||||||
|
/* Returns true if qemu_log() will really write somewhere. */
|
||||||
|
bool qemu_log_enabled(void)
|
||||||
|
{
|
||||||
|
return qemu_logfile != NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Returns true if qemu_log() will write somewhere other than stderr. */
|
||||||
|
bool qemu_log_separate(void)
|
||||||
|
{
|
||||||
|
QemuLogFile *logfile;
|
||||||
|
bool res = false;
|
||||||
|
|
||||||
|
rcu_read_lock();
|
||||||
|
logfile = qatomic_rcu_read(&qemu_logfile);
|
||||||
|
if (logfile && logfile->fd != stderr) {
|
||||||
|
res = true;
|
||||||
|
}
|
||||||
|
rcu_read_unlock();
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
/* Lock/unlock output. */
|
/* Lock/unlock output. */
|
||||||
|
|
||||||
FILE *qemu_log_trylock(void)
|
FILE *qemu_log_trylock(void)
|
||||||
|
|
Loading…
Reference in a new issue