aboutsummaryrefslogtreecommitdiff
path: root/kern/machine.c
diff options
context:
space:
mode:
authorDamien Zammit <damien@zamaudio.com>2024-02-11 12:00:57 +0000
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2024-02-11 15:05:32 +0100
commitaadb433981b086bfb4e082757fed1154582d5497 (patch)
tree286c851c30d398c08f2c0d0e5f925ca3ffa2587e /kern/machine.c
parent0232f733a60af52ff901d9af1bb4006fa1765182 (diff)
downloadgnumach-aadb433981b086bfb4e082757fed1154582d5497.tar.gz
gnumach-aadb433981b086bfb4e082757fed1154582d5497.tar.bz2
gnumach-aadb433981b086bfb4e082757fed1154582d5497.zip
smp: Create AP processor set and put all APs inside it
This has the effect of running with one cpu only with smp, but has the ability to enable APs in userspace with the right processor set RPCs. Message-ID: <20240211120051.1889789-1-damien@zamaudio.com>
Diffstat (limited to 'kern/machine.c')
-rw-r--r--kern/machine.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/kern/machine.c b/kern/machine.c
index 87fbc4d1..f757d146 100644
--- a/kern/machine.c
+++ b/kern/machine.c
@@ -84,6 +84,9 @@ void cpu_up(int cpu)
processor = cpu_to_processor(cpu);
pset_lock(&default_pset);
+#if MACH_HOST
+ pset_lock(slave_pset);
+#endif
s = splsched();
processor_lock(processor);
#if NCPUS > 1
@@ -92,10 +95,18 @@ void cpu_up(int cpu)
ms = &machine_slot[cpu];
ms->running = TRUE;
machine_info.avail_cpus++;
- pset_add_processor(&default_pset, processor);
+#if MACH_HOST
+ if (cpu != 0)
+ pset_add_processor(slave_pset, processor);
+ else
+#endif
+ pset_add_processor(&default_pset, processor);
processor->state = PROCESSOR_RUNNING;
processor_unlock(processor);
splx(s);
+#if MACH_HOST
+ pset_unlock(slave_pset);
+#endif
pset_unlock(&default_pset);
}