summaryrefslogtreecommitdiff
path: root/kern
diff options
context:
space:
mode:
authorDamien Zammit <damien@zamaudio.com>2023-09-25 00:24:25 +0000
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2023-09-25 10:21:29 +0200
commitb3921098e2807d6225d277986bc8063b6a271e88 (patch)
tree93aa20fdb9f5ef3055069dd913afd0ad09d4ca23 /kern
parentbe0abe4c2361f2c7db5a52b0900e298083fefe40 (diff)
percpu: active_stack with gs
Message-Id: <20230925002417.467022-1-damien@zamaudio.com>
Diffstat (limited to 'kern')
-rw-r--r--kern/startup.c2
-rw-r--r--kern/thread.c4
-rw-r--r--kern/thread.h5
3 files changed, 3 insertions, 8 deletions
diff --git a/kern/startup.c b/kern/startup.c
index 177232fc..e72cf6f4 100644
--- a/kern/startup.c
+++ b/kern/startup.c
@@ -301,7 +301,7 @@ void cpu_launch_first_thread(thread_t th)
PMAP_ACTIVATE_KERNEL(mycpu);
percpu_assign(active_thread, th);
- active_stacks[mycpu] = th->kernel_stack;
+ percpu_assign(active_stack, th->kernel_stack);
thread_lock(th);
th->state &= ~TH_UNINT;
thread_unlock(th);
diff --git a/kern/thread.c b/kern/thread.c
index c397de84..38287581 100644
--- a/kern/thread.c
+++ b/kern/thread.c
@@ -69,8 +69,6 @@
#include <machine/pcb.h>
#include <machine/thread.h> /* for MACHINE_STACK */
-vm_offset_t active_stacks[NCPUS];
-
struct kmem_cache thread_cache;
struct kmem_cache thread_stack_cache;
@@ -2572,7 +2570,7 @@ kern_return_t processor_set_stack_usage(
for (cpu = 0; cpu < smp_get_numcpus(); cpu++)
if (percpu_array[cpu].active_thread == thread) {
- stack = active_stacks[cpu];
+ stack = percpu_array[cpu].active_stack;
break;
}
}
diff --git a/kern/thread.h b/kern/thread.h
index 144160d5..7bfe2e89 100644
--- a/kern/thread.h
+++ b/kern/thread.h
@@ -268,9 +268,6 @@ typedef struct thread *thread_t;
typedef mach_port_t *thread_array_t;
#endif /* _KERN_KERN_TYPES_H_ */
-
-extern vm_offset_t active_stacks[NCPUS]; /* active kernel stacks */
-
#ifdef KERNEL
/*
* User routines
@@ -417,7 +414,7 @@ extern void thread_unfreeze(
#define current_thread() (percpu_get(thread_t, active_thread))
#endif /* CURRENT_THREAD */
-#define current_stack() (active_stacks[cpu_number()])
+#define current_stack() (percpu_get(vm_offset_t, active_stack))
#define current_task() (current_thread()->task)
#define current_space() (current_task()->itk_space)