AP init: synchronize syscall channel initialization
This commit is contained in:
@ -39,6 +39,8 @@
|
|||||||
int num_processors = 1;
|
int num_processors = 1;
|
||||||
static volatile int ap_stop = 1;
|
static volatile int ap_stop = 1;
|
||||||
|
|
||||||
|
mcs_lock_node_t ap_syscall_semaphore;
|
||||||
|
|
||||||
static void ap_wait(void)
|
static void ap_wait(void)
|
||||||
{
|
{
|
||||||
init_tick();
|
init_tick();
|
||||||
@ -53,7 +55,11 @@ static void ap_wait(void)
|
|||||||
arch_start_pvclock();
|
arch_start_pvclock();
|
||||||
|
|
||||||
if (find_command_line("hidos")) {
|
if (find_command_line("hidos")) {
|
||||||
|
mcs_lock_node_t mcs_node;
|
||||||
|
|
||||||
|
mcs_lock_lock_noirq(&ap_syscall_semaphore, &mcs_node);
|
||||||
init_host_syscall_channel();
|
init_host_syscall_channel();
|
||||||
|
mcs_lock_unlock_noirq(&ap_syscall_semaphore, &mcs_node);
|
||||||
}
|
}
|
||||||
|
|
||||||
pc_ap_init();
|
pc_ap_init();
|
||||||
@ -67,6 +73,7 @@ static void ap_wait(void)
|
|||||||
void ap_start(void)
|
void ap_start(void)
|
||||||
{
|
{
|
||||||
init_tick();
|
init_tick();
|
||||||
|
mcs_lock_init(&ap_syscall_semaphore);
|
||||||
ap_stop = 0;
|
ap_stop = 0;
|
||||||
sync_tick();
|
sync_tick();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user