Project

General

Profile

Bug #729 ยป vk_reboot.patch

josepht, 07/12/2007 03:55 PM

View differences:

sys/platform/vkernel/i386/exception.c 12 Jul 2007 15:24:31 -0000
--mycpu->gd_intr_nesting_level;
}
static
void
halt_vcpu(int nada, siginfo_t *info, void *ctxp)
{
int ret = 0;
pthread_exit(&ret);
}
#endif
void
......
#ifdef SMP
sa.sa_sigaction = ipisig;
sigaction(SIGUSR1, &sa, NULL);
sa.sa_sigaction = halt_vcpu;
sigaction(SIGUSR2, &sa, NULL);
#endif
}
sys/platform/vkernel/i386/mp.c 12 Jul 2007 15:24:48 -0000
return(ncpus - 1);
}
#ifdef SMP
void
kill_cpus(void)
{
int i;
for (i = 1; i < MAXCPU; i++)
if (ap_tids[i] != NULL)
pthread_kill(ap_tids[i], SIGUSR2);
}
#endif
sys/platform/vkernel/include/smp.h 12 Jul 2007 15:37:35 -0000
int stop_cpus (u_int);
void ap_init (void);
int restart_cpus (u_int);
void kill_cpus (void);
#if 0
void forward_signal (struct proc *);
sys/platform/vkernel/platform/init.c 12 Jul 2007 15:37:08 -0000
#include <machine/cpu.h>
#include <machine/globaldata.h>
#include <machine/smp.h>
#include <machine/tls.h>
#include <machine/md_var.h>
#include <machine/vmparam.h>
......
kprintf("cpu reset, rebooting vkernel\n");
closefrom(3);
cleanpid();
#ifdef SMP
kill_cpus();
#endif
execv(save_av[0], save_av);
}
    (1-1/1)