From 065f42adc9af7fc4adc391bb6961460010c30d08 Mon Sep 17 00:00:00 2001 From: Miquel Sabaté Solà Date: Tue, 3 Dec 2024 07:59:01 +0100 Subject: Remove stack pointer for each process MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Since 6132623dbf30 ("Share the same stack everywhere") the same stack is used everywhere. Hence, it's rather pointless for each task to have a pointer to a stack which is the same and that is never read. Signed-off-by: Miquel Sabaté Solà --- kernel/main.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) (limited to 'kernel/main.c') diff --git a/kernel/main.c b/kernel/main.c index 5a11816..a2e4d13 100644 --- a/kernel/main.c +++ b/kernel/main.c @@ -5,22 +5,23 @@ #include #include -// Stack to be used by our processes. "Blasphemy!" I hear you say. "How dare you -// use the same stack for kernel and user space?" It's not like this is some -// sort of utopian system in which everyone shares everything, but since this -// stupidly simple kernel does not even bother to implement paging nor any other -// memory protection of any kind, it's not like separating stacks for each -// process and kernel space would make much of a difference. Hence, let's keep -// it simple and have the same stack everwhere. +// Stack to be used by our processes, which is initialized in head.S. +// "Blasphemy!" I hear you say. "How dare you use the same stack for kernel and +// user space?" It's not like this is some sort of utopian system in which +// everyone shares everything, but since this stupidly simple kernel does not +// even bother to implement paging nor any other memory protection of any kind, +// it's not like separating stacks for each process and kernel space would make +// much of a difference. Hence, let's keep it simple and have the same stack +// everwhere. uint64_t stack[STACK_SIZE / sizeof(uint64_t)]; // Initialize the list of structs by providing a fixed stack address and empty // values everywhere else. struct task_struct tasks[4] = { - [TASK_INIT] = { .stack = stack, .name = "init", .entry_addr = nullptr, }, - [TASK_FIZZ] = { .stack = stack, .name = "fizz", .entry_addr = nullptr, }, - [TASK_BUZZ] = { .stack = stack, .name = "buzz", .entry_addr = nullptr, }, - [TASK_FIZZBUZZ] = { .stack = stack, .name = "fizzbuzz", .entry_addr = nullptr, }, + [TASK_INIT] = { .name = "init", .entry_addr = nullptr, }, + [TASK_FIZZ] = { .name = "fizz", .entry_addr = nullptr, }, + [TASK_BUZZ] = { .name = "buzz", .entry_addr = nullptr, }, + [TASK_FIZZBUZZ] = { .name = "fizzbuzz", .entry_addr = nullptr, }, }; // Defined in fbos/init.h. -- cgit v1.2.3