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:
Richard Henderson 2022-04-17 11:30:05 -07:00
parent bf619eae2e
commit 7fc493f8bd
3 changed files with 34 additions and 35 deletions

View file

@ -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)

View file

@ -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)
{ {

View file

@ -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)