diff options
author | AlmuHS <liberamenso10000@gmail.com> | 2018-07-07 21:07:18 +0200 |
---|---|---|
committer | AlmuHS <liberamenso10000@gmail.com> | 2018-07-07 21:07:18 +0200 |
commit | 8bb917f34a956d9c8912cf01f5ccf9f0cb5f1f11 (patch) | |
tree | 17855399fed9902c2ead036d851a5e0e7c604fe4 | |
parent | 0fb80d231bbbb5f06c79c9b852032ac14a69c1d4 (diff) |
configured mutex
-rw-r--r-- | i386/i386/intel_startCPU.c | 11 |
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); |