qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] qemu_clock_get_ns does not take into account icount_time_sh


From: Humberto \"SilverOne\" Carvalho
Subject: [Qemu-devel] qemu_clock_get_ns does not take into account icount_time_shift
Date: Wed, 25 Jul 2018 20:25:18 +0100

Hello,

When using icount with shift, virtual time is defined as icount << N.
However, qemu_clock_get_ns simply returns cpu_get_icount, thereby returning
icount instead of icount << N.

If you check the qemu/util/qemu-timer.c file you will find the following
function:

597: int64_t qemu_clock_get_ns(QEMUClockType type)
598: {
....
602: switch (type) {
....
606: case QEMU_CLOCK_VIRTUAL:
607: if (use_icount) {
608: return cpu_get_icount();

Now on line 606, in case we requested QEMU_CLOCK_VIRTUAL, and we are using
icount, the value of cpu_get_icount(); will be returned.

However if I understand correctly, in order to convert icount to ns, you
must take into account the icount shift -- as defined in the documentation:
"The virtual cpu will execute one instruction every 2^N ns of virtual
time.".

Therefor, the correct value to return would be
cpu_icount_to_ns(cpu_get_icount()), where cpu_icount_to_ns is defined in
cpus.c:

296: int64_t cpu_icount_to_ns(int64_t icount)
297: {
298: return icount << icount_time_shift;
299: }

Best Regards,
Humberto "SilverOne" Carvalho


reply via email to

[Prev in Thread] Current Thread [Next in Thread]