Skip to content

Commit

Permalink
accel/tcg: rename tcg-cpus functions to match module name
Browse files Browse the repository at this point in the history
Signed-off-by: Claudio Fontana <cfontana@suse.de>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <20201015143217.29337-4-cfontana@suse.de>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
  • Loading branch information
Claudio Fontana authored and rth7680 committed Dec 10, 2020
1 parent 37c2f9a commit 9e2658d
Show file tree
Hide file tree
Showing 7 changed files with 64 additions and 64 deletions.
24 changes: 12 additions & 12 deletions accel/tcg/tcg-cpus-icount.c
Expand Up @@ -36,7 +36,7 @@
#include "tcg-cpus-icount.h"
#include "tcg-cpus-rr.h"

static int64_t tcg_get_icount_limit(void)
static int64_t icount_get_limit(void)
{
int64_t deadline;

Expand Down Expand Up @@ -68,49 +68,49 @@ static int64_t tcg_get_icount_limit(void)
}
}

static void notify_aio_contexts(void)
static void icount_notify_aio_contexts(void)
{
/* Wake up other AioContexts. */
qemu_clock_notify(QEMU_CLOCK_VIRTUAL);
qemu_clock_run_timers(QEMU_CLOCK_VIRTUAL);
}

void handle_icount_deadline(void)
void icount_handle_deadline(void)
{
assert(qemu_in_vcpu_thread());
int64_t deadline = qemu_clock_deadline_ns_all(QEMU_CLOCK_VIRTUAL,
QEMU_TIMER_ATTR_ALL);

if (deadline == 0) {
notify_aio_contexts();
icount_notify_aio_contexts();
}
}

void prepare_icount_for_run(CPUState *cpu)
void icount_prepare_for_run(CPUState *cpu)
{
int insns_left;

/*
* These should always be cleared by process_icount_data after
* These should always be cleared by icount_process_data after
* each vCPU execution. However u16.high can be raised
* asynchronously by cpu_exit/cpu_interrupt/tcg_handle_interrupt
* asynchronously by cpu_exit/cpu_interrupt/tcg_cpus_handle_interrupt
*/
g_assert(cpu_neg(cpu)->icount_decr.u16.low == 0);
g_assert(cpu->icount_extra == 0);

cpu->icount_budget = tcg_get_icount_limit();
cpu->icount_budget = icount_get_limit();
insns_left = MIN(0xffff, cpu->icount_budget);
cpu_neg(cpu)->icount_decr.u16.low = insns_left;
cpu->icount_extra = cpu->icount_budget - insns_left;

replay_mutex_lock();

if (cpu->icount_budget == 0 && replay_has_checkpoint()) {
notify_aio_contexts();
icount_notify_aio_contexts();
}
}

void process_icount_data(CPUState *cpu)
void icount_process_data(CPUState *cpu)
{
/* Account for executed instructions */
icount_update(cpu);
Expand All @@ -129,7 +129,7 @@ static void icount_handle_interrupt(CPUState *cpu, int mask)
{
int old_mask = cpu->interrupt_request;

tcg_handle_interrupt(cpu, mask);
tcg_cpus_handle_interrupt(cpu, mask);
if (qemu_cpu_is_self(cpu) &&
!cpu->can_do_io
&& (mask & ~old_mask) != 0) {
Expand All @@ -139,7 +139,7 @@ static void icount_handle_interrupt(CPUState *cpu, int mask)

const CpusAccel tcg_cpus_icount = {
.create_vcpu_thread = rr_start_vcpu_thread,
.kick_vcpu_thread = qemu_cpu_kick_rr_cpus,
.kick_vcpu_thread = rr_kick_vcpu_thread,

.handle_interrupt = icount_handle_interrupt,
.get_virtual_clock = icount_get,
Expand Down
6 changes: 3 additions & 3 deletions accel/tcg/tcg-cpus-icount.h
Expand Up @@ -10,8 +10,8 @@
#ifndef TCG_CPUS_ICOUNT_H
#define TCG_CPUS_ICOUNT_H

void handle_icount_deadline(void);
void prepare_icount_for_run(CPUState *cpu);
void process_icount_data(CPUState *cpu);
void icount_handle_deadline(void);
void icount_prepare_for_run(CPUState *cpu);
void icount_process_data(CPUState *cpu);

#endif /* TCG_CPUS_ICOUNT_H */
10 changes: 5 additions & 5 deletions accel/tcg/tcg-cpus-mttcg.c
Expand Up @@ -40,7 +40,7 @@
* current CPUState for a given thread.
*/

static void *tcg_cpu_thread_fn(void *arg)
static void *mttcg_cpu_thread_fn(void *arg)
{
CPUState *cpu = arg;

Expand All @@ -66,7 +66,7 @@ static void *tcg_cpu_thread_fn(void *arg)
if (cpu_can_run(cpu)) {
int r;
qemu_mutex_unlock_iothread();
r = tcg_cpu_exec(cpu);
r = tcg_cpus_exec(cpu);
qemu_mutex_lock_iothread();
switch (r) {
case EXCP_DEBUG:
Expand Down Expand Up @@ -97,7 +97,7 @@ static void *tcg_cpu_thread_fn(void *arg)
qemu_wait_io_event(cpu);
} while (!cpu->unplug || cpu_can_run(cpu));

qemu_tcg_destroy_vcpu(cpu);
tcg_cpus_destroy(cpu);
qemu_mutex_unlock_iothread();
rcu_unregister_thread();
return NULL;
Expand All @@ -124,7 +124,7 @@ static void mttcg_start_vcpu_thread(CPUState *cpu)
snprintf(thread_name, VCPU_THREAD_NAME_SIZE, "CPU %d/TCG",
cpu->cpu_index);

qemu_thread_create(cpu->thread, thread_name, tcg_cpu_thread_fn,
qemu_thread_create(cpu->thread, thread_name, mttcg_cpu_thread_fn,
cpu, QEMU_THREAD_JOINABLE);

#ifdef _WIN32
Expand All @@ -136,5 +136,5 @@ const CpusAccel tcg_cpus_mttcg = {
.create_vcpu_thread = mttcg_start_vcpu_thread,
.kick_vcpu_thread = mttcg_kick_vcpu_thread,

.handle_interrupt = tcg_handle_interrupt,
.handle_interrupt = tcg_cpus_handle_interrupt,
};
74 changes: 37 additions & 37 deletions accel/tcg/tcg-cpus-rr.c
Expand Up @@ -37,7 +37,7 @@
#include "tcg-cpus-icount.h"

/* Kick all RR vCPUs */
void qemu_cpu_kick_rr_cpus(CPUState *unused)
void rr_kick_vcpu_thread(CPUState *unused)
{
CPUState *cpu;

Expand All @@ -58,62 +58,62 @@ void qemu_cpu_kick_rr_cpus(CPUState *unused)
* idleness is complete.
*/

static QEMUTimer *tcg_kick_vcpu_timer;
static CPUState *tcg_current_rr_cpu;
static QEMUTimer *rr_kick_vcpu_timer;
static CPUState *rr_current_cpu;

#define TCG_KICK_PERIOD (NANOSECONDS_PER_SECOND / 10)

static inline int64_t qemu_tcg_next_kick(void)
static inline int64_t rr_next_kick_time(void)
{
return qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + TCG_KICK_PERIOD;
}

/* Kick the currently round-robin scheduled vCPU to next */
static void qemu_cpu_kick_rr_next_cpu(void)
static void rr_kick_next_cpu(void)
{
CPUState *cpu;
do {
cpu = qatomic_mb_read(&tcg_current_rr_cpu);
cpu = qatomic_mb_read(&rr_current_cpu);
if (cpu) {
cpu_exit(cpu);
}
} while (cpu != qatomic_mb_read(&tcg_current_rr_cpu));
} while (cpu != qatomic_mb_read(&rr_current_cpu));
}

static void kick_tcg_thread(void *opaque)
static void rr_kick_thread(void *opaque)
{
timer_mod(tcg_kick_vcpu_timer, qemu_tcg_next_kick());
qemu_cpu_kick_rr_next_cpu();
timer_mod(rr_kick_vcpu_timer, rr_next_kick_time());
rr_kick_next_cpu();
}

static void start_tcg_kick_timer(void)
static void rr_start_kick_timer(void)
{
if (!tcg_kick_vcpu_timer && CPU_NEXT(first_cpu)) {
tcg_kick_vcpu_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL,
kick_tcg_thread, NULL);
if (!rr_kick_vcpu_timer && CPU_NEXT(first_cpu)) {
rr_kick_vcpu_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL,
rr_kick_thread, NULL);
}
if (tcg_kick_vcpu_timer && !timer_pending(tcg_kick_vcpu_timer)) {
timer_mod(tcg_kick_vcpu_timer, qemu_tcg_next_kick());
if (rr_kick_vcpu_timer && !timer_pending(rr_kick_vcpu_timer)) {
timer_mod(rr_kick_vcpu_timer, rr_next_kick_time());
}
}

static void stop_tcg_kick_timer(void)
static void rr_stop_kick_timer(void)
{
if (tcg_kick_vcpu_timer && timer_pending(tcg_kick_vcpu_timer)) {
timer_del(tcg_kick_vcpu_timer);
if (rr_kick_vcpu_timer && timer_pending(rr_kick_vcpu_timer)) {
timer_del(rr_kick_vcpu_timer);
}
}

static void qemu_tcg_rr_wait_io_event(void)
static void rr_wait_io_event(void)
{
CPUState *cpu;

while (all_cpu_threads_idle()) {
stop_tcg_kick_timer();
rr_stop_kick_timer();
qemu_cond_wait_iothread(first_cpu->halt_cond);
}

start_tcg_kick_timer();
rr_start_kick_timer();

CPU_FOREACH(cpu) {
qemu_wait_io_event_common(cpu);
Expand All @@ -124,13 +124,13 @@ static void qemu_tcg_rr_wait_io_event(void)
* Destroy any remaining vCPUs which have been unplugged and have
* finished running
*/
static void deal_with_unplugged_cpus(void)
static void rr_deal_with_unplugged_cpus(void)
{
CPUState *cpu;

CPU_FOREACH(cpu) {
if (cpu->unplug && !cpu_can_run(cpu)) {
qemu_tcg_destroy_vcpu(cpu);
tcg_cpus_destroy(cpu);
break;
}
}
Expand All @@ -144,7 +144,7 @@ static void deal_with_unplugged_cpus(void)
* elsewhere.
*/

static void *tcg_rr_cpu_thread_fn(void *arg)
static void *rr_cpu_thread_fn(void *arg)
{
CPUState *cpu = arg;

Expand All @@ -171,7 +171,7 @@ static void *tcg_rr_cpu_thread_fn(void *arg)
}
}

start_tcg_kick_timer();
rr_start_kick_timer();

cpu = first_cpu;

Expand All @@ -190,7 +190,7 @@ static void *tcg_rr_cpu_thread_fn(void *arg)
* Run the timers here. This is much more efficient than
* waking up the I/O thread and waiting for completion.
*/
handle_icount_deadline();
icount_handle_deadline();
}

replay_mutex_unlock();
Expand All @@ -201,7 +201,7 @@ static void *tcg_rr_cpu_thread_fn(void *arg)

while (cpu && cpu_work_list_empty(cpu) && !cpu->exit_request) {

qatomic_mb_set(&tcg_current_rr_cpu, cpu);
qatomic_mb_set(&rr_current_cpu, cpu);
current_cpu = cpu;

qemu_clock_enable(QEMU_CLOCK_VIRTUAL,
Expand All @@ -212,11 +212,11 @@ static void *tcg_rr_cpu_thread_fn(void *arg)

qemu_mutex_unlock_iothread();
if (icount_enabled()) {
prepare_icount_for_run(cpu);
icount_prepare_for_run(cpu);
}
r = tcg_cpu_exec(cpu);
r = tcg_cpus_exec(cpu);
if (icount_enabled()) {
process_icount_data(cpu);
icount_process_data(cpu);
}
qemu_mutex_lock_iothread();

Expand All @@ -240,7 +240,7 @@ static void *tcg_rr_cpu_thread_fn(void *arg)
} /* while (cpu && !cpu->exit_request).. */

/* Does not need qatomic_mb_set because a spurious wakeup is okay. */
qatomic_set(&tcg_current_rr_cpu, NULL);
qatomic_set(&rr_current_cpu, NULL);

if (cpu && cpu->exit_request) {
qatomic_mb_set(&cpu->exit_request, 0);
Expand All @@ -254,8 +254,8 @@ static void *tcg_rr_cpu_thread_fn(void *arg)
qemu_notify_event();
}

qemu_tcg_rr_wait_io_event();
deal_with_unplugged_cpus();
rr_wait_io_event();
rr_deal_with_unplugged_cpus();
}

rcu_unregister_thread();
Expand All @@ -279,7 +279,7 @@ void rr_start_vcpu_thread(CPUState *cpu)
/* share a single thread for all cpus with TCG */
snprintf(thread_name, VCPU_THREAD_NAME_SIZE, "ALL CPUs/TCG");
qemu_thread_create(cpu->thread, thread_name,
tcg_rr_cpu_thread_fn,
rr_cpu_thread_fn,
cpu, QEMU_THREAD_JOINABLE);

single_tcg_halt_cond = cpu->halt_cond;
Expand All @@ -299,7 +299,7 @@ void rr_start_vcpu_thread(CPUState *cpu)

const CpusAccel tcg_cpus_rr = {
.create_vcpu_thread = rr_start_vcpu_thread,
.kick_vcpu_thread = qemu_cpu_kick_rr_cpus,
.kick_vcpu_thread = rr_kick_vcpu_thread,

.handle_interrupt = tcg_handle_interrupt,
.handle_interrupt = tcg_cpus_handle_interrupt,
};
2 changes: 1 addition & 1 deletion accel/tcg/tcg-cpus-rr.h
Expand Up @@ -13,7 +13,7 @@
#define TCG_KICK_PERIOD (NANOSECONDS_PER_SECOND / 10)

/* Kick all RR vCPUs. */
void qemu_cpu_kick_rr_cpus(CPUState *unused);
void rr_kick_vcpu_thread(CPUState *unused);

/* start the round robin vcpu thread */
void rr_start_vcpu_thread(CPUState *cpu);
Expand Down
6 changes: 3 additions & 3 deletions accel/tcg/tcg-cpus.c
Expand Up @@ -38,12 +38,12 @@

/* common functionality among all TCG variants */

void qemu_tcg_destroy_vcpu(CPUState *cpu)
void tcg_cpus_destroy(CPUState *cpu)
{
cpu_thread_signal_destroyed(cpu);
}

int tcg_cpu_exec(CPUState *cpu)
int tcg_cpus_exec(CPUState *cpu)
{
int ret;
#ifdef CONFIG_PROFILER
Expand All @@ -64,7 +64,7 @@ int tcg_cpu_exec(CPUState *cpu)
}

/* mask must never be zero, except for A20 change call */
void tcg_handle_interrupt(CPUState *cpu, int mask)
void tcg_cpus_handle_interrupt(CPUState *cpu, int mask)
{
g_assert(qemu_mutex_iothread_locked());

Expand Down
6 changes: 3 additions & 3 deletions accel/tcg/tcg-cpus.h
Expand Up @@ -18,8 +18,8 @@ extern const CpusAccel tcg_cpus_mttcg;
extern const CpusAccel tcg_cpus_icount;
extern const CpusAccel tcg_cpus_rr;

void qemu_tcg_destroy_vcpu(CPUState *cpu);
int tcg_cpu_exec(CPUState *cpu);
void tcg_handle_interrupt(CPUState *cpu, int mask);
void tcg_cpus_destroy(CPUState *cpu);
int tcg_cpus_exec(CPUState *cpu);
void tcg_cpus_handle_interrupt(CPUState *cpu, int mask);

#endif /* TCG_CPUS_H */

0 comments on commit 9e2658d

Please sign in to comment.