summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlmuHS <almuhs@github.com>2019-07-08 20:55:49 +0200
committerAlmuHS <almuhs@github.com>2019-07-08 20:55:49 +0200
commite4df7e2dc4d1d97900d3189a76a8116934b5467a (patch)
tree3d29c2e6a1b9926398254be040b23edf85fba534
parentdec8f10b55abbb4c50e584661a8900707c573395 (diff)
experiment: added mutex in cpu_setup
-rw-r--r--i386/i386/mp_desc.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/i386/i386/mp_desc.c b/i386/i386/mp_desc.c
index 6eb3c6e6..3bb207b1 100644
--- a/i386/i386/mp_desc.c
+++ b/i386/i386/mp_desc.c
@@ -90,6 +90,7 @@ vm_offset_t cpu_stack_high;
static struct kmutex mp_cpu_boot_lock;
+static struct kmutex ap_config_lock;
/*
* Multiprocessor i386/i486 systems use a separate copy of the
@@ -299,6 +300,10 @@ cpu_setup()
int i = 1;
int kernel_id = 0;
+
+ kmutex_init(&ap_config_lock);
+ kmutex_lock(&ap_config_lock, FALSE);
+
while(i < ncpu && (machine_slot[i].running == TRUE)) i++;
/* assume Pentium 4, Xeon, or later processors */
@@ -354,6 +359,8 @@ cpu_setup()
ktss_init();
slave_main();
+ kmutex_unlock(&ap_config_lock);
+
kernel_id = cpu_number();
printf("cpu %d enabled\n", kernel_id);