block: do not use get_clock()
Use the external qemu-timer API instead. No one else should be calling cpu_get_clock(), get_clock() and get_clock_realtime() directly; they are internal functions and they should be confined to qemu-timer.c and cpus.c (where the icount implementation resides). All accesses should go through qemu_clock_get_ns. Cc: kwolf@redhat.com Cc: stefanha@redhat.com Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Message-id: 1417010463-3527-2-git-send-email-pbonzini@redhat.com Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
c5f6e493bb
commit
a56ebc6ba4
@ -24,6 +24,7 @@
|
|||||||
|
|
||||||
#include "block/accounting.h"
|
#include "block/accounting.h"
|
||||||
#include "block/block_int.h"
|
#include "block/block_int.h"
|
||||||
|
#include "qemu/timer.h"
|
||||||
|
|
||||||
void block_acct_start(BlockAcctStats *stats, BlockAcctCookie *cookie,
|
void block_acct_start(BlockAcctStats *stats, BlockAcctCookie *cookie,
|
||||||
int64_t bytes, enum BlockAcctType type)
|
int64_t bytes, enum BlockAcctType type)
|
||||||
@ -31,7 +32,7 @@ void block_acct_start(BlockAcctStats *stats, BlockAcctCookie *cookie,
|
|||||||
assert(type < BLOCK_MAX_IOTYPE);
|
assert(type < BLOCK_MAX_IOTYPE);
|
||||||
|
|
||||||
cookie->bytes = bytes;
|
cookie->bytes = bytes;
|
||||||
cookie->start_time_ns = get_clock();
|
cookie->start_time_ns = qemu_clock_get_ns(QEMU_CLOCK_REALTIME);
|
||||||
cookie->type = type;
|
cookie->type = type;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -41,7 +42,8 @@ void block_acct_done(BlockAcctStats *stats, BlockAcctCookie *cookie)
|
|||||||
|
|
||||||
stats->nr_bytes[cookie->type] += cookie->bytes;
|
stats->nr_bytes[cookie->type] += cookie->bytes;
|
||||||
stats->nr_ops[cookie->type]++;
|
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1922,7 +1922,7 @@ static int fd_open(BlockDriverState *bs)
|
|||||||
return 0;
|
return 0;
|
||||||
last_media_present = (s->fd >= 0);
|
last_media_present = (s->fd >= 0);
|
||||||
if (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);
|
qemu_close(s->fd);
|
||||||
s->fd = -1;
|
s->fd = -1;
|
||||||
#ifdef DEBUG_FLOPPY
|
#ifdef DEBUG_FLOPPY
|
||||||
@ -1931,7 +1931,7 @@ static int fd_open(BlockDriverState *bs)
|
|||||||
}
|
}
|
||||||
if (s->fd < 0) {
|
if (s->fd < 0) {
|
||||||
if (s->fd_got_error &&
|
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
|
#ifdef DEBUG_FLOPPY
|
||||||
printf("No floppy (open delayed)\n");
|
printf("No floppy (open delayed)\n");
|
||||||
#endif
|
#endif
|
||||||
@ -1939,7 +1939,7 @@ static int fd_open(BlockDriverState *bs)
|
|||||||
}
|
}
|
||||||
s->fd = qemu_open(bs->filename, s->open_flags & ~O_NONBLOCK);
|
s->fd = qemu_open(bs->filename, s->open_flags & ~O_NONBLOCK);
|
||||||
if (s->fd < 0) {
|
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;
|
s->fd_got_error = 1;
|
||||||
if (last_media_present)
|
if (last_media_present)
|
||||||
s->fd_media_changed = 1;
|
s->fd_media_changed = 1;
|
||||||
@ -1954,7 +1954,7 @@ static int fd_open(BlockDriverState *bs)
|
|||||||
}
|
}
|
||||||
if (!last_media_present)
|
if (!last_media_present)
|
||||||
s->fd_media_changed = 1;
|
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;
|
s->fd_got_error = 0;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user