From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60053) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xu2o7-00072V-5X for qemu-devel@nongnu.org; Thu, 27 Nov 2014 12:24:52 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Xu2nv-0000Zw-Dl for qemu-devel@nongnu.org; Thu, 27 Nov 2014 12:24:43 -0500 Received: from mail-wg0-x229.google.com ([2a00:1450:400c:c00::229]:57680) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xu2nv-0000Zi-3O for qemu-devel@nongnu.org; Thu, 27 Nov 2014 12:24:31 -0500 Received: by mail-wg0-f41.google.com with SMTP id y19so7014112wgg.0 for ; Thu, 27 Nov 2014 09:24:30 -0800 (PST) Sender: Paolo Bonzini Message-ID: <54775E36.3070501@redhat.com> Date: Thu, 27 Nov 2014 18:24:06 +0100 From: Paolo Bonzini MIME-Version: 1.0 References: <1417010463-3527-2-git-send-email-pbonzini@redhat.com> <873895knke.fsf@blackfin.pond.sub.org> <20141127164451.GM15586@stefanha-thinkpad.lan> In-Reply-To: <20141127164451.GM15586@stefanha-thinkpad.lan> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH] block: do not use get_clock() List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Stefan Hajnoczi , Markus Armbruster Cc: kwolf@redhat.com, qemu-devel@nongnu.org, stefanha@redhat.com On 27/11/2014 17:44, Stefan Hajnoczi wrote: > On Thu, Nov 27, 2014 at 10:19:45AM +0100, Markus Armbruster wrote: >> Paolo Bonzini writes: >> >>> Use the external qemu-timer API instead. >> >> Ignorant question: why? > > Patch seems fine but I concur with Markus. Let's add the rationale to > the commit description. Like this? ---------------- 8< ---------------- From: Paolo Bonzini Subject: [PATCH] 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 --- block/accounting.c | 6 ++++-- block/raw-posix.c | 8 ++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/block/accounting.c b/block/accounting.c index edbb1cc..18102f0 100644 --- a/block/accounting.c +++ b/block/accounting.c @@ -24,6 +24,7 @@ #include "block/accounting.h" #include "block/block_int.h" +#include "qemu/timer.h" void block_acct_start(BlockAcctStats *stats, BlockAcctCookie *cookie, int64_t bytes, enum BlockAcctType type) @@ -31,7 +32,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 +42,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..02e107f 100644 --- a/block/raw-posix.c +++ b/block/raw-posix.c @@ -1922,7 +1922,7 @@ 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 +1931,7 @@ 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 +1939,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 +1954,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; } -- 1.8.3.1