diff options
author | Richard Braun <rbraun@sceen.net> | 2017-09-07 20:59:07 +0200 |
---|---|---|
committer | Richard Braun <rbraun@sceen.net> | 2017-09-07 20:59:07 +0200 |
commit | 888853dc07f1cdb9701f3612dea7828cc96b84cc (patch) | |
tree | b255b28e240c2ccc9c43c10b8429766d8548fa53 /kern | |
parent | 4febbe1c657c026a33bdb16b51a0f317217b8d5a (diff) |
Use accessors when referring to global kernel objects
The kernel_map/kernel_pmap/kernel_task/etc... names were reused as they
were in the Mach source code. They've been a (mostly harmless) long-standing
violation of the coding rules.
Diffstat (limited to 'kern')
-rw-r--r-- | kern/task.c | 12 | ||||
-rw-r--r-- | kern/task.h | 11 | ||||
-rw-r--r-- | kern/thread.c | 6 |
3 files changed, 17 insertions, 12 deletions
diff --git a/kern/task.c b/kern/task.c index 16210560..35220d3e 100644 --- a/kern/task.c +++ b/kern/task.c @@ -28,7 +28,6 @@ #include <kern/spinlock.h> #include <kern/task.h> #include <kern/thread.h> -#include <vm/vm_kmem.h> #include <vm/vm_map.h> #ifdef __LP64__ @@ -37,11 +36,7 @@ #define TASK_INFO_ADDR_FMT "%08lx" #endif /* __LP64__ */ -/* - * Kernel task and storage. - */ -static struct task kernel_task_store; -struct task *kernel_task __read_mostly = &kernel_task_store; +struct task task_kernel_task; /* * Cache for allocated tasks. @@ -117,10 +112,13 @@ INIT_OP_DEFINE(task_setup_shell, static int __init task_setup(void) { + struct task *kernel_task; + + kernel_task = task_get_kernel_task(); kmem_cache_init(&task_cache, "task", sizeof(struct task), 0, NULL, 0); list_init(&task_list); spinlock_init(&task_list_lock); - task_init(kernel_task, "x15", kernel_map); + task_init(kernel_task, "x15", vm_map_get_kernel_map()); list_insert_head(&task_list, &kernel_task->node); return 0; } diff --git a/kern/task.h b/kern/task.h index 149ff49d..4573979e 100644 --- a/kern/task.h +++ b/kern/task.h @@ -43,10 +43,13 @@ struct task { char name[TASK_NAME_SIZE]; }; -/* - * The kernel task. - */ -extern struct task *kernel_task; +static inline struct task * +task_get_kernel_task(void) +{ + extern struct task task_kernel_task; + + return &task_kernel_task; +} static inline void task_ref(struct task *task) diff --git a/kern/thread.c b/kern/thread.c index 64df1941..f9c22742 100644 --- a/kern/thread.c +++ b/kern/thread.c @@ -116,6 +116,7 @@ #include <machine/page.h> #include <machine/pmap.h> #include <machine/tcb.h> +#include <vm/vm_kmem.h> #include <vm/vm_map.h> /* @@ -1693,7 +1694,7 @@ thread_init_booter(unsigned int cpu) thread_set_user_priority(booter, 0); thread_reset_real_priority(booter); memset(booter->tsd, 0, sizeof(booter->tsd)); - booter->task = kernel_task; + booter->task = task_get_kernel_task(); snprintf(booter->name, sizeof(booter->name), THREAD_KERNEL_PREFIX "thread_boot/%u", cpu); } @@ -1887,11 +1888,14 @@ thread_alloc_stack(void) { __unused struct vm_page *first_page, *last_page; phys_addr_t first_pa, last_pa; + struct pmap *kernel_pmap; size_t stack_size; uintptr_t va; void *mem; __unused int error; + kernel_pmap = pmap_get_kernel_pmap(); + stack_size = vm_page_round(TCB_STACK_SIZE); mem = vm_kmem_alloc((PAGE_SIZE * 2) + stack_size); |