icount: rename functions to be consistent with the module name

Signed-off-by: Claudio Fontana <cfontana@suse.de>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Claudio Fontana 2020-08-31 16:18:34 +02:00 committed by Paolo Bonzini
parent 740b175973
commit 8191d36841
14 changed files with 60 additions and 60 deletions

View File

@ -71,7 +71,7 @@ static void align_clocks(SyncClocks *sc, CPUState *cpu)
}
cpu_icount = cpu->icount_extra + cpu_neg(cpu)->icount_decr.u16.low;
sc->diff_clk += cpu_icount_to_ns(sc->last_cpu_icount - cpu_icount);
sc->diff_clk += icount_to_ns(sc->last_cpu_icount - cpu_icount);
sc->last_cpu_icount = cpu_icount;
if (sc->diff_clk > VM_CLOCK_ADVANCE) {
@ -665,7 +665,7 @@ static inline void cpu_loop_exec_tb(CPUState *cpu, TranslationBlock *tb,
assert(icount_enabled());
#ifndef CONFIG_USER_ONLY
/* Ensure global icount has gone forward */
cpu_update_icount(cpu);
icount_update(cpu);
/* Refill decrementer and continue execution. */
insns_left = MIN(0xffff, cpu->icount_budget);
cpu_neg(cpu)->icount_decr.u16.low = insns_left;
@ -775,7 +775,7 @@ void dump_drift_info(void)
}
qemu_printf("Host - Guest clock %"PRIi64" ms\n",
(cpu_get_clock() - cpu_get_icount()) / SCALE_MS);
(cpu_get_clock() - icount_get()) / SCALE_MS);
if (icount_align_option) {
qemu_printf("Max guest delay %"PRIi64" ms\n",
-max_delay / SCALE_MS);

View File

@ -184,11 +184,11 @@ is then incremented (which is called "warping" the virtual clock) as
soon as the timer fires or the CPUs need to go out of the idle state.
Two functions are used for this purpose; because these actions change
virtual machine state and must be deterministic, each of them creates a
checkpoint. qemu_start_warp_timer checks if the CPUs are idle and if so
starts accounting real time to virtual clock. qemu_account_warp_timer
checkpoint. icount_start_warp_timer checks if the CPUs are idle and if so
starts accounting real time to virtual clock. icount_account_warp_timer
is called when the CPUs get an interrupt or when the warp timer fires,
and it warps the virtual clock by the amount of real time that has passed
since qemu_start_warp_timer.
since icount_start_warp_timer.
Bottom halves
-------------

View File

@ -35,30 +35,30 @@ extern int use_icount;
* Update the icount with the executed instructions. Called by
* cpus-tcg vCPU thread so the main-loop can see time has moved forward.
*/
void cpu_update_icount(CPUState *cpu);
void icount_update(CPUState *cpu);
/* get raw icount value */
int64_t cpu_get_icount_raw(void);
int64_t icount_get_raw(void);
/* return the virtual CPU time in ns, based on the instruction counter. */
int64_t cpu_get_icount(void);
int64_t icount_get(void);
/*
* convert an instruction counter value to ns, based on the icount shift.
* This shift is set as a fixed value with the icount "shift" option
* (precise mode), or it is constantly approximated and corrected at
* runtime in adaptive mode.
*/
int64_t cpu_icount_to_ns(int64_t icount);
int64_t icount_to_ns(int64_t icount);
/* configure the icount options, including "shift" */
void configure_icount(QemuOpts *opts, Error **errp);
void icount_configure(QemuOpts *opts, Error **errp);
/* used by tcg vcpu thread to calc icount budget */
int64_t qemu_icount_round(int64_t count);
int64_t icount_round(int64_t count);
/* if the CPUs are idle, start accounting real time to virtual clock. */
void qemu_start_warp_timer(void);
void qemu_account_warp_timer(void);
void icount_start_warp_timer(void);
void icount_account_warp_timer(void);
/*
* CPU Ticks and Clock

View File

@ -109,12 +109,12 @@ int64_t replay_read_clock(ReplayClockKind kind);
#define REPLAY_CLOCK(clock, value) \
(replay_mode == REPLAY_MODE_PLAY ? replay_read_clock((clock)) \
: replay_mode == REPLAY_MODE_RECORD \
? replay_save_clock((clock), (value), cpu_get_icount_raw()) \
? replay_save_clock((clock), (value), icount_get_raw()) \
: (value))
#define REPLAY_CLOCK_LOCKED(clock, value) \
(replay_mode == REPLAY_MODE_PLAY ? replay_read_clock((clock)) \
: replay_mode == REPLAY_MODE_RECORD \
? replay_save_clock((clock), (value), cpu_get_icount_raw_locked()) \
? replay_save_clock((clock), (value), icount_get_raw_locked()) \
: (value))
/* Processing data from random generators */

View File

@ -64,7 +64,7 @@ bool replay_next_event_is(int event)
uint64_t replay_get_current_icount(void)
{
return cpu_get_icount_raw();
return icount_get_raw();
}
int replay_get_instructions(void)

View File

@ -70,7 +70,7 @@ int64_t cpu_get_ticks(void)
int64_t ticks;
if (icount_enabled()) {
return cpu_get_icount();
return icount_get();
}
qemu_spin_lock(&timers_state.vm_clock_lock);
@ -160,7 +160,7 @@ static bool adjust_timers_state_needed(void *opaque)
return s->icount_rt_timer != NULL;
}
static bool shift_state_needed(void *opaque)
static bool icount_shift_state_needed(void *opaque)
{
return icount_enabled() == 2;
}
@ -196,7 +196,7 @@ static const VMStateDescription icount_vmstate_shift = {
.name = "timer/icount/shift",
.version_id = 1,
.minimum_version_id = 1,
.needed = shift_state_needed,
.needed = icount_shift_state_needed,
.fields = (VMStateField[]) {
VMSTATE_INT16(icount_time_shift, TimersState),
VMSTATE_END_OF_LIST()

View File

@ -560,7 +560,7 @@ static int64_t tcg_get_icount_limit(void)
deadline = INT32_MAX;
}
return qemu_icount_round(deadline);
return icount_round(deadline);
} else {
return replay_get_instructions();
}
@ -615,7 +615,7 @@ static void process_icount_data(CPUState *cpu)
{
if (icount_enabled()) {
/* Account for executed instructions */
cpu_update_icount(cpu);
icount_update(cpu);
/* Reset the counters */
cpu_neg(cpu)->icount_decr.u16.low = 0;
@ -716,7 +716,7 @@ static void *qemu_tcg_rr_cpu_thread_fn(void *arg)
replay_mutex_lock();
qemu_mutex_lock_iothread();
/* Account partial waits to QEMU_CLOCK_VIRTUAL. */
qemu_account_warp_timer();
icount_account_warp_timer();
/* Run the timers here. This is much more efficient than
* waking up the I/O thread and waiting for completion.

View File

@ -73,7 +73,7 @@ static void icount_enable_adaptive(void)
* originally budgeted minus the current state of the decrementing
* icount counters in extra/u16.low.
*/
static int64_t cpu_get_icount_executed(CPUState *cpu)
static int64_t icount_get_executed(CPUState *cpu)
{
return (cpu->icount_budget -
(cpu_neg(cpu)->icount_decr.u16.low + cpu->icount_extra));
@ -84,9 +84,9 @@ static int64_t cpu_get_icount_executed(CPUState *cpu)
* account executed instructions. This is done by the TCG vCPU
* thread so the main-loop can see time has moved forward.
*/
static void cpu_update_icount_locked(CPUState *cpu)
static void icount_update_locked(CPUState *cpu)
{
int64_t executed = cpu_get_icount_executed(cpu);
int64_t executed = icount_get_executed(cpu);
cpu->icount_budget -= executed;
qatomic_set_i64(&timers_state.qemu_icount,
@ -98,16 +98,16 @@ static void cpu_update_icount_locked(CPUState *cpu)
* account executed instructions. This is done by the TCG vCPU
* thread so the main-loop can see time has moved forward.
*/
void cpu_update_icount(CPUState *cpu)
void icount_update(CPUState *cpu)
{
seqlock_write_lock(&timers_state.vm_clock_seqlock,
&timers_state.vm_clock_lock);
cpu_update_icount_locked(cpu);
icount_update_locked(cpu);
seqlock_write_unlock(&timers_state.vm_clock_seqlock,
&timers_state.vm_clock_lock);
}
static int64_t cpu_get_icount_raw_locked(void)
static int64_t icount_get_raw_locked(void)
{
CPUState *cpu = current_cpu;
@ -117,47 +117,47 @@ static int64_t cpu_get_icount_raw_locked(void)
exit(1);
}
/* Take into account what has run */
cpu_update_icount_locked(cpu);
icount_update_locked(cpu);
}
/* The read is protected by the seqlock, but needs atomic64 to avoid UB */
return qatomic_read_i64(&timers_state.qemu_icount);
}
static int64_t cpu_get_icount_locked(void)
static int64_t icount_get_locked(void)
{
int64_t icount = cpu_get_icount_raw_locked();
int64_t icount = icount_get_raw_locked();
return qatomic_read_i64(&timers_state.qemu_icount_bias) +
cpu_icount_to_ns(icount);
icount_to_ns(icount);
}
int64_t cpu_get_icount_raw(void)
int64_t icount_get_raw(void)
{
int64_t icount;
unsigned start;
do {
start = seqlock_read_begin(&timers_state.vm_clock_seqlock);
icount = cpu_get_icount_raw_locked();
icount = icount_get_raw_locked();
} while (seqlock_read_retry(&timers_state.vm_clock_seqlock, start));
return icount;
}
/* Return the virtual CPU time, based on the instruction counter. */
int64_t cpu_get_icount(void)
int64_t icount_get(void)
{
int64_t icount;
unsigned start;
do {
start = seqlock_read_begin(&timers_state.vm_clock_seqlock);
icount = cpu_get_icount_locked();
icount = icount_get_locked();
} while (seqlock_read_retry(&timers_state.vm_clock_seqlock, start));
return icount;
}
int64_t cpu_icount_to_ns(int64_t icount)
int64_t icount_to_ns(int64_t icount)
{
return icount << qatomic_read(&timers_state.icount_time_shift);
}
@ -188,7 +188,7 @@ static void icount_adjust(void)
&timers_state.vm_clock_lock);
cur_time = REPLAY_CLOCK_LOCKED(REPLAY_CLOCK_VIRTUAL_RT,
cpu_get_clock_locked());
cur_icount = cpu_get_icount_locked();
cur_icount = icount_get_locked();
delta = cur_icount - cur_time;
/* FIXME: This is a very crude algorithm, somewhat prone to oscillation. */
@ -229,7 +229,7 @@ static void icount_adjust_vm(void *opaque)
icount_adjust();
}
int64_t qemu_icount_round(int64_t count)
int64_t icount_round(int64_t count)
{
int shift = qatomic_read(&timers_state.icount_time_shift);
return (count + (1 << shift) - 1) >> shift;
@ -266,7 +266,7 @@ static void icount_warp_rt(void)
* In adaptive mode, do not let QEMU_CLOCK_VIRTUAL run too
* far ahead of real time.
*/
int64_t cur_icount = cpu_get_icount_locked();
int64_t cur_icount = icount_get_locked();
int64_t delta = clock - cur_icount;
warp_delta = MIN(warp_delta, delta);
}
@ -291,7 +291,7 @@ static void icount_timer_cb(void *opaque)
icount_warp_rt();
}
void qemu_start_warp_timer(void)
void icount_start_warp_timer(void)
{
int64_t clock;
int64_t deadline;
@ -394,7 +394,7 @@ void qemu_start_warp_timer(void)
}
}
void qemu_account_warp_timer(void)
void icount_account_warp_timer(void)
{
if (!icount_enabled() || !icount_sleep) {
return;
@ -417,7 +417,7 @@ void qemu_account_warp_timer(void)
icount_warp_rt();
}
void configure_icount(QemuOpts *opts, Error **errp)
void icount_configure(QemuOpts *opts, Error **errp)
{
const char *option = qemu_opt_get(opts, "shift");
bool sleep = qemu_opt_get_bool(opts, "sleep", true);

View File

@ -2695,7 +2695,7 @@ static void user_register_global_props(void)
static int do_configure_icount(void *opaque, QemuOpts *opts, Error **errp)
{
configure_icount(opts, errp);
icount_configure(opts, errp);
return 0;
}

View File

@ -6,40 +6,40 @@
int use_icount;
void cpu_update_icount(CPUState *cpu)
void icount_update(CPUState *cpu)
{
abort();
}
void configure_icount(QemuOpts *opts, Error **errp)
void icount_configure(QemuOpts *opts, Error **errp)
{
/* signal error */
error_setg(errp, "cannot configure icount, TCG support not available");
}
int64_t cpu_get_icount_raw(void)
int64_t icount_get_raw(void)
{
abort();
return 0;
}
int64_t cpu_get_icount(void)
int64_t icount_get(void)
{
abort();
return 0;
}
int64_t cpu_icount_to_ns(int64_t icount)
int64_t icount_to_ns(int64_t icount)
{
abort();
return 0;
}
int64_t qemu_icount_round(int64_t count)
int64_t icount_round(int64_t count)
{
abort();
return 0;
}
void qemu_start_warp_timer(void)
void icount_start_warp_timer(void)
{
abort();
}
void qemu_account_warp_timer(void)
void icount_account_warp_timer(void)
{
abort();
}

View File

@ -1212,12 +1212,12 @@ static bool instructions_supported(CPUARMState *env)
static uint64_t instructions_get_count(CPUARMState *env)
{
return (uint64_t)cpu_get_icount_raw();
return (uint64_t)icount_get_raw();
}
static int64_t instructions_ns_per(uint64_t icount)
{
return cpu_icount_to_ns((int64_t)icount);
return icount_to_ns((int64_t)icount);
}
#endif

View File

@ -300,7 +300,7 @@ static int read_instret(CPURISCVState *env, int csrno, target_ulong *val)
{
#if !defined(CONFIG_USER_ONLY)
if (icount_enabled()) {
*val = cpu_get_icount();
*val = icount_get();
} else {
*val = cpu_get_host_ticks();
}
@ -315,7 +315,7 @@ static int read_instreth(CPURISCVState *env, int csrno, target_ulong *val)
{
#if !defined(CONFIG_USER_ONLY)
if (icount_enabled()) {
*val = cpu_get_icount() >> 32;
*val = icount_get() >> 32;
} else {
*val = cpu_get_host_ticks() >> 32;
}

View File

@ -526,7 +526,7 @@ void main_loop_wait(int nonblocking)
* CPU thread can infinitely wait for event after
* missing the warp
*/
qemu_start_warp_timer();
icount_start_warp_timer();
}
qemu_clock_run_all_timers();
}

View File

@ -419,7 +419,7 @@ static void timerlist_rearm(QEMUTimerList *timer_list)
{
/* Interrupt execution to force deadline recalculation. */
if (icount_enabled() && timer_list->clock->type == QEMU_CLOCK_VIRTUAL) {
qemu_start_warp_timer();
icount_start_warp_timer();
}
timerlist_notify(timer_list);
}
@ -636,7 +636,7 @@ int64_t qemu_clock_get_ns(QEMUClockType type)
default:
case QEMU_CLOCK_VIRTUAL:
if (icount_enabled()) {
return cpu_get_icount();
return icount_get();
} else if (qtest_enabled()) { /* for qtest_clock_warp */
return qtest_get_virtual_clock();
} else {