Message ID | 20220326132534.543738-34-richard.henderson@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | Logging cleanup and per-thread logfiles | expand |
Richard Henderson <richard.henderson@linaro.org> writes: > Move QemuLogFile, qemu_logfile, and all inline functions into qemu/log.c. > No need to expose these implementation details in the api. > > Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Alex Bennée <alex.bennee@linaro.org> > --- > include/qemu/log.h | 38 ++++---------------------------------- > tests/unit/test-logging.c | 1 + > util/log.c | 30 +++++++++++++++++++++++++++++- > 3 files changed, 34 insertions(+), 35 deletions(-) > > diff --git a/include/qemu/log.h b/include/qemu/log.h > index 75973111bb..42d545f77a 100644 > --- a/include/qemu/log.h > +++ b/include/qemu/log.h > @@ -3,46 +3,16 @@ > > /* A small part of this API is split into its own header */ > #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: > - * > */ > > -/* 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 > - */ > -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; > -} > +/* Returns true if qemu_log() will write somewhere other than stderr. */ > +bool qemu_log_separate(void); > > #define CPU_LOG_TB_OUT_ASM (1 << 0) > #define CPU_LOG_TB_IN_ASM (1 << 1) > diff --git a/tests/unit/test-logging.c b/tests/unit/test-logging.c > index dcb8ac70df..9b87af75af 100644 > --- a/tests/unit/test-logging.c > +++ b/tests/unit/test-logging.c > @@ -30,6 +30,7 @@ > #include "qemu-common.h" > #include "qapi/error.h" > #include "qemu/log.h" > +#include "qemu/rcu.h" > > static void test_parse_range(void) > { > diff --git a/util/log.c b/util/log.c > index caa38e707b..8b8b6a5d83 100644 > --- a/util/log.c > +++ b/util/log.c > @@ -26,14 +26,42 @@ > #include "trace/control.h" > #include "qemu/thread.h" > #include "qemu/lockable.h" > +#include "qemu/rcu.h" > + > + > +typedef struct QemuLogFile { > + struct rcu_head rcu; > + FILE *fd; > +} QemuLogFile; > > static char *logfilename; > static QemuMutex qemu_logfile_mutex; > -QemuLogFile *qemu_logfile; > +static QemuLogFile *qemu_logfile; > int qemu_loglevel; > static int log_append = 0; > 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. */ > > FILE *qemu_log_trylock(void)
diff --git a/include/qemu/log.h b/include/qemu/log.h index 75973111bb..42d545f77a 100644 --- a/include/qemu/log.h +++ b/include/qemu/log.h @@ -3,46 +3,16 @@ /* A small part of this API is split into its own header */ #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: - * */ -/* 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 - */ -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; -} +/* Returns true if qemu_log() will write somewhere other than stderr. */ +bool qemu_log_separate(void); #define CPU_LOG_TB_OUT_ASM (1 << 0) #define CPU_LOG_TB_IN_ASM (1 << 1) diff --git a/tests/unit/test-logging.c b/tests/unit/test-logging.c index dcb8ac70df..9b87af75af 100644 --- a/tests/unit/test-logging.c +++ b/tests/unit/test-logging.c @@ -30,6 +30,7 @@ #include "qemu-common.h" #include "qapi/error.h" #include "qemu/log.h" +#include "qemu/rcu.h" static void test_parse_range(void) { diff --git a/util/log.c b/util/log.c index caa38e707b..8b8b6a5d83 100644 --- a/util/log.c +++ b/util/log.c @@ -26,14 +26,42 @@ #include "trace/control.h" #include "qemu/thread.h" #include "qemu/lockable.h" +#include "qemu/rcu.h" + + +typedef struct QemuLogFile { + struct rcu_head rcu; + FILE *fd; +} QemuLogFile; static char *logfilename; static QemuMutex qemu_logfile_mutex; -QemuLogFile *qemu_logfile; +static QemuLogFile *qemu_logfile; int qemu_loglevel; static int log_append = 0; 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. */ FILE *qemu_log_trylock(void)
Move QemuLogFile, qemu_logfile, and all inline functions into qemu/log.c. No need to expose these implementation details in the api. Signed-off-by: Richard Henderson <richard.henderson@linaro.org> --- include/qemu/log.h | 38 ++++---------------------------------- tests/unit/test-logging.c | 1 + util/log.c | 30 +++++++++++++++++++++++++++++- 3 files changed, 34 insertions(+), 35 deletions(-)