add qemu_get_clock_ns
Some places use get_clock directly because they want to access the rt_clock with nanosecond precision. Add a function to do exactly that instead of using internal interfaces. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
e970ec0b5e
commit
41c872b6bf
@ -25,6 +25,7 @@ extern QEMUClock *vm_clock;
|
||||
extern QEMUClock *host_clock;
|
||||
|
||||
int64_t qemu_get_clock(QEMUClock *clock);
|
||||
int64_t qemu_get_clock_ns(QEMUClock *clock);
|
||||
|
||||
QEMUTimer *qemu_new_timer(QEMUClock *clock, QEMUTimerCB *cb, void *opaque);
|
||||
void qemu_free_timer(QEMUTimer *ts);
|
||||
|
21
vl.c
21
vl.c
@ -931,6 +931,23 @@ int64_t qemu_get_clock(QEMUClock *clock)
|
||||
}
|
||||
}
|
||||
|
||||
int64_t qemu_get_clock_ns(QEMUClock *clock)
|
||||
{
|
||||
switch(clock->type) {
|
||||
case QEMU_CLOCK_REALTIME:
|
||||
return get_clock();
|
||||
default:
|
||||
case QEMU_CLOCK_VIRTUAL:
|
||||
if (use_icount) {
|
||||
return cpu_get_icount();
|
||||
} else {
|
||||
return cpu_get_clock();
|
||||
}
|
||||
case QEMU_CLOCK_HOST:
|
||||
return get_clock_realtime();
|
||||
}
|
||||
}
|
||||
|
||||
static void init_clocks(void)
|
||||
{
|
||||
init_get_clock();
|
||||
@ -2866,7 +2883,7 @@ static int ram_save_live(Monitor *mon, QEMUFile *f, int stage, void *opaque)
|
||||
}
|
||||
|
||||
bytes_transferred_last = bytes_transferred;
|
||||
bwidth = get_clock();
|
||||
bwidth = qemu_get_clock_ns(rt_clock);
|
||||
|
||||
while (!qemu_file_rate_limit(f)) {
|
||||
int ret;
|
||||
@ -2877,7 +2894,7 @@ static int ram_save_live(Monitor *mon, QEMUFile *f, int stage, void *opaque)
|
||||
break;
|
||||
}
|
||||
|
||||
bwidth = get_clock() - bwidth;
|
||||
bwidth = qemu_get_clock_ns(rt_clock) - bwidth;
|
||||
bwidth = (bytes_transferred - bytes_transferred_last) / bwidth;
|
||||
|
||||
/* if we haven't transferred anything this round, force expected_time to a
|
||||
|
Loading…
Reference in New Issue
Block a user