Introduce VCPU self-signaling service
Introduce qemu_cpu_kick_self to send SIG_IPI to the calling VCPU context. First user will be kvm. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
This commit is contained in:
parent
6d9cb73c1b
commit
46d62fac8a
21
cpus.c
21
cpus.c
@ -529,6 +529,17 @@ void qemu_cpu_kick(void *env)
|
||||
return;
|
||||
}
|
||||
|
||||
void qemu_cpu_kick_self(void)
|
||||
{
|
||||
#ifndef _WIN32
|
||||
assert(cpu_single_env);
|
||||
|
||||
raise(SIG_IPI);
|
||||
#else
|
||||
abort();
|
||||
#endif
|
||||
}
|
||||
|
||||
void qemu_notify_event(void)
|
||||
{
|
||||
CPUState *env = cpu_single_env;
|
||||
@ -831,6 +842,16 @@ void qemu_cpu_kick(void *_env)
|
||||
}
|
||||
}
|
||||
|
||||
void qemu_cpu_kick_self(void)
|
||||
{
|
||||
assert(cpu_single_env);
|
||||
|
||||
if (!cpu_single_env->thread_kicked) {
|
||||
qemu_thread_signal(cpu_single_env->thread, SIG_IPI);
|
||||
cpu_single_env->thread_kicked = true;
|
||||
}
|
||||
}
|
||||
|
||||
int qemu_cpu_self(void *_env)
|
||||
{
|
||||
CPUState *env = _env;
|
||||
|
@ -288,6 +288,7 @@ void qemu_notify_event(void);
|
||||
|
||||
/* Unblock cpu */
|
||||
void qemu_cpu_kick(void *env);
|
||||
void qemu_cpu_kick_self(void);
|
||||
int qemu_cpu_self(void *env);
|
||||
|
||||
/* work queue */
|
||||
|
Loading…
Reference in New Issue
Block a user