mirror of
https://github.com/clearlinux/kvmtool.git
synced 2026-10-03 23:38:35 +00:00
kvm tools: pass kvm ptr directly to timer injection
This will help us get rid of the global kvm object. Signed-off-by: Sasha Levin <levinsasha928@gmail.com> Signed-off-by: Pekka Enberg <penberg@kernel.org>
This commit is contained in:
+8
-2
@@ -163,8 +163,10 @@ void kvm_run_set_wrapper_sandbox(void)
|
||||
OPT_END() \
|
||||
};
|
||||
|
||||
static void handle_sigalrm(int sig)
|
||||
static void handle_sigalrm(int sig, siginfo_t *si, void *uc)
|
||||
{
|
||||
struct kvm *kvm = si->si_value.sival_ptr;
|
||||
|
||||
kvm__arch_periodic_poll(kvm);
|
||||
}
|
||||
|
||||
@@ -476,12 +478,16 @@ static int kvm_cmd_run_init(int argc, const char **argv)
|
||||
{
|
||||
static char real_cmdline[2048], default_name[20];
|
||||
unsigned int nr_online_cpus;
|
||||
struct sigaction sa;
|
||||
|
||||
kvm = kvm__new();
|
||||
if (IS_ERR(kvm))
|
||||
return PTR_ERR(kvm);
|
||||
|
||||
signal(SIGALRM, handle_sigalrm);
|
||||
sa.sa_flags = SA_SIGINFO;
|
||||
sa.sa_sigaction = handle_sigalrm;
|
||||
sigemptyset(&sa.sa_mask);
|
||||
sigaction(SIGALRM, &sa, NULL);
|
||||
|
||||
nr_online_cpus = sysconf(_SC_NPROCESSORS_ONLN);
|
||||
kvm->cfg.custom_rootfs_name = "default";
|
||||
|
||||
@@ -358,6 +358,7 @@ int kvm_timer__init(struct kvm *kvm)
|
||||
sev.sigev_value.sival_int = 0;
|
||||
sev.sigev_notify = SIGEV_THREAD_ID;
|
||||
sev.sigev_signo = SIGALRM;
|
||||
sev.sigev_value.sival_ptr = kvm;
|
||||
sev._sigev_un._tid = syscall(__NR_gettid);
|
||||
|
||||
r = timer_create(CLOCK_REALTIME, &sev, &kvm->timerid);
|
||||
|
||||
Reference in New Issue
Block a user