summaryrefslogtreecommitdiff
path: root/qemu-log.c
diff options
context:
space:
mode:
authorJunfeng Dong <junfeng.dong@intel.com>2013-11-19 17:45:23 +0800
committerJunfeng Dong <junfeng.dong@intel.com>2013-11-19 17:45:23 +0800
commit340f06c9eaee097e626c251bf7a013350649c091 (patch)
tree107e5705050a12da68fc80a56ae37afd50a2cc94 /qemu-log.c
parent42bf3037d458a330856a0be584200c1e41c3f417 (diff)
downloadqemu-340f06c9eaee097e626c251bf7a013350649c091.tar.gz
qemu-340f06c9eaee097e626c251bf7a013350649c091.tar.bz2
qemu-340f06c9eaee097e626c251bf7a013350649c091.zip
Import upstream 1.6.0.upstream/1.6.0
Change-Id: Icf52b556470cac8677297f2ef14ded16684f7887 Signed-off-by: Junfeng Dong <junfeng.dong@intel.com>
Diffstat (limited to 'qemu-log.c')
-rw-r--r--qemu-log.c57
1 files changed, 32 insertions, 25 deletions
diff --git a/qemu-log.c b/qemu-log.c
index a4c3d1f2e..797f2af98 100644
--- a/qemu-log.c
+++ b/qemu-log.c
@@ -18,13 +18,9 @@
*/
#include "qemu-common.h"
-#include "qemu-log.h"
+#include "qemu/log.h"
-#ifdef WIN32
-static const char *logfilename = "qemu.log";
-#else
-static const char *logfilename = "/tmp/qemu.log";
-#endif
+static char *logfilename;
FILE *qemu_logfile;
int qemu_loglevel;
static int log_append = 0;
@@ -52,14 +48,19 @@ void qemu_log_mask(int mask, const char *fmt, ...)
}
/* enable or disable low levels log */
-void qemu_set_log(int log_flags, bool use_own_buffers)
+void do_qemu_set_log(int log_flags, bool use_own_buffers)
{
qemu_loglevel = log_flags;
if (qemu_loglevel && !qemu_logfile) {
- qemu_logfile = fopen(logfilename, log_append ? "a" : "w");
- if (!qemu_logfile) {
- perror(logfilename);
- _exit(1);
+ if (logfilename) {
+ qemu_logfile = fopen(logfilename, log_append ? "a" : "w");
+ if (!qemu_logfile) {
+ perror(logfilename);
+ _exit(1);
+ }
+ } else {
+ /* Default to stderr if no log file specified */
+ qemu_logfile = stderr;
}
/* must avoid mmap() usage of glibc by setting a buffer "by hand" */
if (use_own_buffers) {
@@ -77,22 +78,19 @@ void qemu_set_log(int log_flags, bool use_own_buffers)
}
}
if (!qemu_loglevel && qemu_logfile) {
- fclose(qemu_logfile);
- qemu_logfile = NULL;
+ qemu_log_close();
}
}
-void cpu_set_log_filename(const char *filename)
+void qemu_set_log_filename(const char *filename)
{
- logfilename = strdup(filename);
- if (qemu_logfile) {
- fclose(qemu_logfile);
- qemu_logfile = NULL;
- }
- cpu_set_log(qemu_loglevel);
+ g_free(logfilename);
+ logfilename = g_strdup(filename);
+ qemu_log_close();
+ qemu_set_log(qemu_loglevel);
}
-const CPULogItem cpu_log_items[] = {
+const QEMULogItem qemu_log_items[] = {
{ CPU_LOG_TB_OUT_ASM, "out_asm",
"show generated host assembly code for each compiled TB" },
{ CPU_LOG_TB_IN_ASM, "in_asm",
@@ -131,9 +129,9 @@ static int cmp1(const char *s1, int n, const char *s2)
}
/* takes a comma separated list of log masks. Return 0 if error. */
-int cpu_str_to_log_mask(const char *str)
+int qemu_str_to_log_mask(const char *str)
{
- const CPULogItem *item;
+ const QEMULogItem *item;
int mask;
const char *p, *p1;
@@ -145,11 +143,11 @@ int cpu_str_to_log_mask(const char *str)
p1 = p + strlen(p);
}
if (cmp1(p,p1-p,"all")) {
- for (item = cpu_log_items; item->mask != 0; item++) {
+ for (item = qemu_log_items; item->mask != 0; item++) {
mask |= item->mask;
}
} else {
- for (item = cpu_log_items; item->mask != 0; item++) {
+ for (item = qemu_log_items; item->mask != 0; item++) {
if (cmp1(p, p1 - p, item->name)) {
goto found;
}
@@ -165,3 +163,12 @@ int cpu_str_to_log_mask(const char *str)
}
return mask;
}
+
+void qemu_print_log_usage(FILE *f)
+{
+ const QEMULogItem *item;
+ fprintf(f, "Log items (comma separated):\n");
+ for (item = qemu_log_items; item->mask != 0; item++) {
+ fprintf(f, "%-10s %s\n", item->name, item->help);
+ }
+}