[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH qom-next 09/59] cpus: Pass CPUState to qemu_cpu_is_s
From: |
Andreas Färber |
Subject: |
[Qemu-devel] [PATCH qom-next 09/59] cpus: Pass CPUState to qemu_cpu_is_self() |
Date: |
Wed, 23 May 2012 05:07:32 +0200 |
Change return type to bool, move to include/qemu/cpu.h and
add documentation.
Signed-off-by: Andreas Färber <address@hidden>
---
cpus.c | 10 ++++------
exec.c | 3 ++-
hw/apic.c | 2 +-
include/qemu/cpu.h | 10 ++++++++++
kvm-all.c | 4 +++-
qemu-common.h | 1 -
target-i386/kvm.c | 6 ++++--
7 files changed, 24 insertions(+), 12 deletions(-)
diff --git a/cpus.c b/cpus.c
index 7d8e2ad..8712259 100644
--- a/cpus.c
+++ b/cpus.c
@@ -640,9 +640,10 @@ void qemu_init_cpu_loop(void)
void run_on_cpu(CPUArchState *env, void (*func)(void *data), void *data)
{
+ CPUState *cpu = ENV_GET_CPU(env);
struct qemu_work_item wi;
- if (qemu_cpu_is_self(env)) {
+ if (qemu_cpu_is_self(cpu)) {
func(data);
return;
}
@@ -857,7 +858,7 @@ static void qemu_cpu_kick_thread(CPUArchState *env)
exit(1);
}
#else /* _WIN32 */
- if (!qemu_cpu_is_self(env)) {
+ if (!qemu_cpu_is_self(cpu)) {
SuspendThread(cpu->hThread);
cpu_signal(0);
ResumeThread(cpu->hThread);
@@ -892,11 +893,8 @@ void qemu_cpu_kick_self(void)
#endif
}
-int qemu_cpu_is_self(void *_env)
+bool qemu_cpu_is_self(CPUState *cpu)
{
- CPUArchState *env = _env;
- CPUState *cpu = ENV_GET_CPU(env);
-
return qemu_thread_is_self(cpu->thread);
}
diff --git a/exec.c b/exec.c
index a0494c7..79e553c 100644
--- a/exec.c
+++ b/exec.c
@@ -1734,6 +1734,7 @@ static void cpu_unlink_tb(CPUArchState *env)
/* mask must never be zero, except for A20 change call */
static void tcg_handle_interrupt(CPUArchState *env, int mask)
{
+ CPUState *cpu = ENV_GET_CPU(env);
int old_mask;
old_mask = env->interrupt_request;
@@ -1743,7 +1744,7 @@ static void tcg_handle_interrupt(CPUArchState *env, int
mask)
* If called from iothread context, wake the target cpu in
* case its halted.
*/
- if (!qemu_cpu_is_self(env)) {
+ if (!qemu_cpu_is_self(cpu)) {
qemu_cpu_kick(env);
return;
}
diff --git a/hw/apic.c b/hw/apic.c
index 1207c33..b14635d 100644
--- a/hw/apic.c
+++ b/hw/apic.c
@@ -114,7 +114,7 @@ static void apic_sync_vapic(APICCommonState *s, int
sync_type)
length = offsetof(VAPICState, enabled) - offsetof(VAPICState, isr);
if (sync_type & SYNC_TO_VAPIC) {
- assert(qemu_cpu_is_self(&s->cpu->env));
+ assert(qemu_cpu_is_self(CPU(s->cpu)));
vapic_state.tpr = s->tpr;
vapic_state.enabled = 1;
diff --git a/include/qemu/cpu.h b/include/qemu/cpu.h
index ad706a6..7be983d 100644
--- a/include/qemu/cpu.h
+++ b/include/qemu/cpu.h
@@ -78,5 +78,15 @@ struct CPUState {
*/
void cpu_reset(CPUState *cpu);
+/**
+ * qemu_cpu_is_self:
+ * @cpu: The vCPU to check against.
+ *
+ * Checks whether the caller is executing on the vCPU thread.
+ *
+ * Returns: %true if called from @cpu's thread, %false otherwise.
+ */
+bool qemu_cpu_is_self(CPUState *cpu);
+
#endif
diff --git a/kvm-all.c b/kvm-all.c
index 9b73ccf..f25cf6d 100644
--- a/kvm-all.c
+++ b/kvm-all.c
@@ -831,9 +831,11 @@ static MemoryListener kvm_memory_listener = {
static void kvm_handle_interrupt(CPUArchState *env, int mask)
{
+ CPUState *cpu = ENV_GET_CPU(env);
+
env->interrupt_request |= mask;
- if (!qemu_cpu_is_self(env)) {
+ if (!qemu_cpu_is_self(cpu)) {
qemu_cpu_kick(env);
}
}
diff --git a/qemu-common.h b/qemu-common.h
index cccfb42..653e0e5 100644
--- a/qemu-common.h
+++ b/qemu-common.h
@@ -285,7 +285,6 @@ int cpu_load(QEMUFile *f, void *opaque, int version_id);
/* Unblock cpu */
void qemu_cpu_kick(void *env);
void qemu_cpu_kick_self(void);
-int qemu_cpu_is_self(void *env);
bool all_cpu_threads_idle(void);
/* work queue */
diff --git a/target-i386/kvm.c b/target-i386/kvm.c
index 97a2cb1..e9e2241 100644
--- a/target-i386/kvm.c
+++ b/target-i386/kvm.c
@@ -1527,9 +1527,10 @@ static int kvm_get_debugregs(CPUX86State *env)
int kvm_arch_put_registers(CPUX86State *env, int level)
{
+ CPUState *cpu = ENV_GET_CPU(env);
int ret;
- assert(cpu_is_stopped(env) || qemu_cpu_is_self(env));
+ assert(cpu_is_stopped(env) || qemu_cpu_is_self(cpu));
ret = kvm_getput_regs(env, 1);
if (ret < 0) {
@@ -1584,9 +1585,10 @@ int kvm_arch_put_registers(CPUX86State *env, int level)
int kvm_arch_get_registers(CPUX86State *env)
{
+ CPUState *cpu = ENV_GET_CPU(env);
int ret;
- assert(cpu_is_stopped(env) || qemu_cpu_is_self(env));
+ assert(cpu_is_stopped(env) || qemu_cpu_is_self(cpu));
ret = kvm_getput_regs(env, 0);
if (ret < 0) {
--
1.7.7
- [Qemu-devel] [PATCH qom-next 00/59] QOM CPUState, part 4: CPU_COMMON, Andreas Färber, 2012/05/23
- [Qemu-devel] [PATCH qom-next 11/59] cpu: Move created field to CPUState, Andreas Färber, 2012/05/22
- [Qemu-devel] [PATCH qom-next 10/59] cpus: Pass CPUState to qemu_cpu_kick_thread(), Andreas Färber, 2012/05/22
- [Qemu-devel] [PATCH qom-next 01/59] qemu-thread: Let qemu_thread_is_self() return bool, Andreas Färber, 2012/05/22
- [Qemu-devel] [PATCH qom-next 03/59] cpu: Move thread field into CPUState, Andreas Färber, 2012/05/22
- [Qemu-devel] [PATCH qom-next 09/59] cpus: Pass CPUState to qemu_cpu_is_self(),
Andreas Färber <=
- [Qemu-devel] [PATCH qom-next 14/59] cpu: Move stopped field to CPUState, Andreas Färber, 2012/05/22
- [Qemu-devel] [PATCH qom-next 05/59] apic: Replace cpu_env pointer by X86CPU link, Andreas Färber, 2012/05/22
- [Qemu-devel] [PATCH qom-next 08/59] Makefile.dis: Add include/ to include path, Andreas Färber, 2012/05/22
- [Qemu-devel] [PATCH qom-next 17/59] cpu: Move halt_cond to CPUState, Andreas Färber, 2012/05/22
- [Qemu-devel] [PATCH qom-next 04/59] pc: Add CPU as /machine/cpu[n], Andreas Färber, 2012/05/22
- [Qemu-devel] [PATCH qom-next 06/59] pc: Pass X86CPU to cpu_is_bsp(), Andreas Färber, 2012/05/22
- [Qemu-devel] [PATCH qom-next 07/59] cpu: Move thread_kicked to CPUState, Andreas Färber, 2012/05/22
- [Qemu-devel] [PATCH qom-next 22/59] ppc: Pass PowerPCCPU to power7_set_irq(), Andreas Färber, 2012/05/22
- [Qemu-devel] [PATCH qom-next 20/59] ppc: Pass PowerPCCPU to ppc6xx_set_irq(), Andreas Färber, 2012/05/22
- [Qemu-devel] [PATCH qom-next 12/59] cpu: Move stop field to CPUState, Andreas Färber, 2012/05/22