[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH] qemu-progress: redirct qemu progress message to ano
From: |
zhenwei pi |
Subject: |
[Qemu-devel] [PATCH] qemu-progress: redirct qemu progress message to another file stream |
Date: |
Mon, 16 Apr 2018 15:46:28 +0800 |
currently qemu progress message only print into stdout, and other thread may
print some log into stdout at the same time.
add a new api qemu_progress_set_output to redirect progress message to
another file stream.
Signed-off-by: zhenwei pi <address@hidden>
---
include/qemu-common.h | 1 +
util/qemu-progress.c | 22 +++++++++++++++++++---
2 files changed, 20 insertions(+), 3 deletions(-)
diff --git a/include/qemu-common.h b/include/qemu-common.h
index 8a4f63c..511e7e0 100644
--- a/include/qemu-common.h
+++ b/include/qemu-common.h
@@ -128,6 +128,7 @@ ssize_t qemu_co_send_recv(int sockfd, void *buf, size_t
bytes, bool do_send);
void qemu_progress_init(int enabled, float min_skip);
void qemu_progress_end(void);
void qemu_progress_print(float delta, int max);
+int qemu_progress_set_output(FILE *output);
const char *qemu_get_vm_name(void);
#define QEMU_FILE_TYPE_BIOS 0
diff --git a/util/qemu-progress.c b/util/qemu-progress.c
index 3c2223c..dd7aa52 100644
--- a/util/qemu-progress.c
+++ b/util/qemu-progress.c
@@ -31,6 +31,7 @@ struct progress_state {
float min_skip;
void (*print)(void);
void (*end)(void);
+ FILE *output;
};
static struct progress_state state;
@@ -43,17 +44,18 @@ static volatile sig_atomic_t print_pending;
*/
static void progress_simple_print(void)
{
- printf(" (%3.2f/100%%)\r", state.current);
- fflush(stdout);
+ fprintf(state.output, " (%3.2f/100%%)\r", state.current);
+ fflush(state.output);
}
static void progress_simple_end(void)
{
- printf("\n");
+ fprintf(state.output, "\n");
}
static void progress_simple_init(void)
{
+ state.output = stdout;
state.print = progress_simple_print;
state.end = progress_simple_end;
}
@@ -129,6 +131,20 @@ void qemu_progress_end(void)
}
/*
+ * Redirect progress into another file stream.
+ * @output is the new file stream.
+ */
+int qemu_progress_set_output(FILE *output)
+{
+ if (!output) {
+ return -EINVAL;
+ }
+
+ state.output = output;
+ return 0;
+}
+
+/*
* Report progress.
* @delta is how much progress we made.
* If @max is zero, @delta is an absolut value of the total job done.
--
2.7.4
- [Qemu-devel] [PATCH] qemu-progress: redirct qemu progress message to another file stream,
zhenwei pi <=