[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RFC PATCH v6 22/32] timer: fix usage of clock functions
From: |
Pavel Dovgalyuk |
Subject: |
[Qemu-devel] [RFC PATCH v6 22/32] timer: fix usage of clock functions |
Date: |
Mon, 08 Dec 2014 10:55:03 +0300 |
User-agent: |
StGit/0.16 |
This patch replaces calling of get_clock_realtime() everywhere
except the timer module. All calls are replaced with host clock requests.
Patch also replaces get_clock() calls with realtime clock requests.
Usage of this interface simplifies implementation of record/replay.
Signed-off-by: Pavel Dovgalyuk <address@hidden>
---
block/accounting.c | 5 +++--
block/raw-posix.c | 10 ++++++----
hw/ppc/ppc.c | 4 ++--
pc-bios/s390-ccw/virtio.c | 2 +-
target-mips/kvm.c | 2 +-
5 files changed, 13 insertions(+), 10 deletions(-)
diff --git a/block/accounting.c b/block/accounting.c
index edbb1cc..10d95ef 100644
--- a/block/accounting.c
+++ b/block/accounting.c
@@ -31,7 +31,7 @@ void block_acct_start(BlockAcctStats *stats, BlockAcctCookie
*cookie,
assert(type < BLOCK_MAX_IOTYPE);
cookie->bytes = bytes;
- cookie->start_time_ns = get_clock();
+ cookie->start_time_ns = qemu_clock_get_ns(QEMU_CLOCK_REALTIME);
cookie->type = type;
}
@@ -41,7 +41,8 @@ void block_acct_done(BlockAcctStats *stats, BlockAcctCookie
*cookie)
stats->nr_bytes[cookie->type] += cookie->bytes;
stats->nr_ops[cookie->type]++;
- stats->total_time_ns[cookie->type] += get_clock() - cookie->start_time_ns;
+ stats->total_time_ns[cookie->type] +=
qemu_clock_get_ns(QEMU_CLOCK_REALTIME)
+ - cookie->start_time_ns;
}
diff --git a/block/raw-posix.c b/block/raw-posix.c
index b1af77e..5974531 100644
--- a/block/raw-posix.c
+++ b/block/raw-posix.c
@@ -1922,7 +1922,8 @@ static int fd_open(BlockDriverState *bs)
return 0;
last_media_present = (s->fd >= 0);
if (s->fd >= 0 &&
- (get_clock() - s->fd_open_time) >= FD_OPEN_TIMEOUT) {
+ (qemu_clock_get_ns(QEMU_CLOCK_REALTIME) - s->fd_open_time)
+ >= FD_OPEN_TIMEOUT) {
qemu_close(s->fd);
s->fd = -1;
#ifdef DEBUG_FLOPPY
@@ -1931,7 +1932,8 @@ static int fd_open(BlockDriverState *bs)
}
if (s->fd < 0) {
if (s->fd_got_error &&
- (get_clock() - s->fd_error_time) < FD_OPEN_TIMEOUT) {
+ (qemu_clock_get_ns(QEMU_CLOCK_REALTIME) - s->fd_error_time)
+ < FD_OPEN_TIMEOUT) {
#ifdef DEBUG_FLOPPY
printf("No floppy (open delayed)\n");
#endif
@@ -1939,7 +1941,7 @@ static int fd_open(BlockDriverState *bs)
}
s->fd = qemu_open(bs->filename, s->open_flags & ~O_NONBLOCK);
if (s->fd < 0) {
- s->fd_error_time = get_clock();
+ s->fd_error_time = qemu_clock_get_ns(QEMU_CLOCK_REALTIME);
s->fd_got_error = 1;
if (last_media_present)
s->fd_media_changed = 1;
@@ -1954,7 +1956,7 @@ static int fd_open(BlockDriverState *bs)
}
if (!last_media_present)
s->fd_media_changed = 1;
- s->fd_open_time = get_clock();
+ s->fd_open_time = qemu_clock_get_ns(QEMU_CLOCK_REALTIME);
s->fd_got_error = 0;
return 0;
}
diff --git a/hw/ppc/ppc.c b/hw/ppc/ppc.c
index bec82cd..5ce565d 100644
--- a/hw/ppc/ppc.c
+++ b/hw/ppc/ppc.c
@@ -844,7 +844,7 @@ static void timebase_pre_save(void *opaque)
return;
}
- tb->time_of_the_day_ns = get_clock_realtime();
+ tb->time_of_the_day_ns = qemu_clock_get_ns(QEMU_CLOCK_HOST);
/*
* tb_offset is only expected to be changed by migration so
* there is no need to update it from KVM here
@@ -873,7 +873,7 @@ static int timebase_post_load(void *opaque, int version_id)
* We try to adjust timebase by downtime if host clocks are not
* too much out of sync (1 second for now).
*/
- host_ns = get_clock_realtime();
+ host_ns = qemu_clock_get_ns(QEMU_CLOCK_HOST);
ns_diff = MAX(0, host_ns - tb_remote->time_of_the_day_ns);
migration_duration_ns = MIN(NSEC_PER_SEC, ns_diff);
migration_duration_tb = muldiv64(migration_duration_ns, freq,
NSEC_PER_SEC);
diff --git a/pc-bios/s390-ccw/virtio.c b/pc-bios/s390-ccw/virtio.c
index c0540d1..f1867ba 100644
--- a/pc-bios/s390-ccw/virtio.c
+++ b/pc-bios/s390-ccw/virtio.c
@@ -164,7 +164,7 @@ static u64 get_clock(void)
static ulong get_second(void)
{
- return (get_clock() >> 12) / 1000000;
+ return (qemu_clock_get_ns(QEMU_CLOCK_REALTIME) >> 12) / 1000000;
}
/*
diff --git a/target-mips/kvm.c b/target-mips/kvm.c
index 97fd51a..a761ea5 100644
--- a/target-mips/kvm.c
+++ b/target-mips/kvm.c
@@ -439,7 +439,7 @@ static void kvm_mips_update_state(void *opaque, int
running, RunState state)
}
} else {
/* Set clock restore time to now */
- count_resume = get_clock();
+ count_resume = qemu_clock_get_ns(QEMU_CLOCK_REALTIME);
ret = kvm_mips_put_one_reg64(cs, KVM_REG_MIPS_COUNT_RESUME,
&count_resume);
if (ret < 0) {
- [Qemu-devel] [RFC PATCH v6 12/32] From 185a3a47d08857a66332ae862b372a153ce92bb9 Mon Sep 17 00:00:00 2001, (continued)
- [Qemu-devel] [RFC PATCH v6 12/32] From 185a3a47d08857a66332ae862b372a153ce92bb9 Mon Sep 17 00:00:00 2001, Pavel Dovgalyuk, 2014/12/08
- [Qemu-devel] [RFC PATCH v6 13/32] From a0cb9e80ba0de409b5ad556109a1c71ce4d8ce19 Mon Sep 17 00:00:00 2001, Pavel Dovgalyuk, 2014/12/08
- [Qemu-devel] [RFC PATCH v6 14/32] From 04bbd21134dd2c6b7309a7f5f2b780aae2757003 Mon Sep 17 00:00:00 2001, Pavel Dovgalyuk, 2014/12/08
- [Qemu-devel] [RFC PATCH v6 15/32] cpu-exec: allow temporary disabling icount, Pavel Dovgalyuk, 2014/12/08
- [Qemu-devel] [RFC PATCH v6 16/32] cpu-exec: invalidate nocache translation if they are interrupted, Pavel Dovgalyuk, 2014/12/08
- [Qemu-devel] [RFC PATCH v6 17/32] cpu: replay instructions sequence, Pavel Dovgalyuk, 2014/12/08
- [Qemu-devel] [RFC PATCH v6 18/32] replay: interrupts and exceptions, Pavel Dovgalyuk, 2014/12/08
- [Qemu-devel] [RFC PATCH v6 19/32] replay: asynchronous events infrastructure, Pavel Dovgalyuk, 2014/12/08
- [Qemu-devel] [RFC PATCH v6 20/32] timer: introduce new QEMU_CLOCK_VIRTUAL_RT clock, Pavel Dovgalyuk, 2014/12/08
- [Qemu-devel] [RFC PATCH v6 21/32] cpus: make icount warp deterministic in replay mode, Pavel Dovgalyuk, 2014/12/08
- [Qemu-devel] [RFC PATCH v6 22/32] timer: fix usage of clock functions,
Pavel Dovgalyuk <=
- [Qemu-devel] [RFC PATCH v6 24/32] replay: recording and replaying different timers, Pavel Dovgalyuk, 2014/12/08
- [Qemu-devel] [RFC PATCH v6 25/32] replay: shutdown event, Pavel Dovgalyuk, 2014/12/08
- [Qemu-devel] [RFC PATCH v6 23/32] replay: recording and replaying clock ticks, Pavel Dovgalyuk, 2014/12/08
- [Qemu-devel] [RFC PATCH v6 26/32] replay: checkpoints, Pavel Dovgalyuk, 2014/12/08
- [Qemu-devel] [RFC PATCH v6 27/32] replay: bottom halves, Pavel Dovgalyuk, 2014/12/08
- [Qemu-devel] [RFC PATCH v6 28/32] replay: replay aio requests, Pavel Dovgalyuk, 2014/12/08
- [Qemu-devel] [RFC PATCH v6 29/32] replay: thread pool, Pavel Dovgalyuk, 2014/12/08
- [Qemu-devel] [RFC PATCH v6 30/32] replay: initialization and deinitialization, Pavel Dovgalyuk, 2014/12/08
- [Qemu-devel] [RFC PATCH v6 31/32] replay: command line options, Pavel Dovgalyuk, 2014/12/08
- [Qemu-devel] [RFC PATCH v6 32/32] replay: recording of the user input, Pavel Dovgalyuk, 2014/12/08