summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlmuHS <liberamenso10000@gmail.com>2018-07-07 21:07:18 +0200
committerAlmuHS <liberamenso10000@gmail.com>2018-07-07 21:07:18 +0200
commit8bb917f34a956d9c8912cf01f5ccf9f0cb5f1f11 (patch)
tree17855399fed9902c2ead036d851a5e0e7c604fe4
parent0fb80d231bbbb5f06c79c9b852032ac14a69c1d4 (diff)
configured mutex
-rw-r--r--i386/i386/intel_startCPU.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/i386/i386/intel_startCPU.c b/i386/i386/intel_startCPU.c
index f6d6a4c2..193a4dd1 100644
--- a/i386/i386/intel_startCPU.c
+++ b/i386/i386/intel_startCPU.c
@@ -5,6 +5,8 @@
#include <i386/i386/pcb.h>
#include <i386/i386/tss.h>
+static struct kmutex mp_cpu_boot_lock;
+
kern_return_t intel_startCPU(int slot_num)
{
int lapic = cpu_to_lapic[slot_num];
@@ -32,7 +34,8 @@ kern_return_t intel_startCPU(int slot_num)
if (slot_num == cpu_number()) {
/*ml_set_interrupts_enabled(istate);*/
cpu_intr_restore(eFlagsRegister);
- lck_mtx_unlock(&mp_cpu_boot_lock);
+ /*lck_mtx_unlock(&mp_cpu_boot_lock);*/
+ kmutex_unlock(&mp_cpu_boot_lock);
return KERN_SUCCESS;
}
@@ -53,9 +56,11 @@ kern_return_t intel_startCPU(int slot_num)
/*ml_set_interrupts_enabled(istate);*/
cpu_intr_restore(eFlagsRegister);
- lck_mtx_unlock(&mp_cpu_boot_lock);
+ /*lck_mtx_unlock(&mp_cpu_boot_lock);*/
+ kmutex_unlock(&mp_cpu_boot_lock);
- if (!cpu_datap(slot_num)->cpu_running) {
+ /*if (!cpu_datap(slot_num)->cpu_running) {*/
+ if(!machine_slot[slot_num].running){
kprintf("Failed to start CPU %02d\n", slot_num);
printf("Failed to start CPU %02d, rebooting...\n", slot_num);
delay(1000000);