[Zion] Return freed kernel stacks to pool.

This commit is contained in:
Drew Galbraith 2023-11-24 16:04:40 -08:00
parent 8fb5b7c03c
commit d1ace374b6
2 changed files with 11 additions and 3 deletions

View file

@ -15,6 +15,9 @@ void KernelStackManager::SetupInterruptStack() {
}
uint64_t KernelStackManager::AllocateKernelStack() {
if (!free_stacks_.empty()) {
return free_stacks_.PopFront();
}
next_stack_addr_ += kKernelStackOffset;
if (next_stack_addr_ >= kKernelStackEnd) {
panic("No more kernel stack space");
@ -24,6 +27,9 @@ uint64_t KernelStackManager::AllocateKernelStack() {
}
void KernelStackManager::FreeKernelStack(uint64_t stack_base) {
freed_stack_cnt_++;
dbgln("Freed kernel stacks using {} KiB", freed_stack_cnt_ * 12);
// TODO: Validate this value.
if ((stack_base & 0x3FF8) != 0x3FF8) {
dbgln("Odd kernel stack free {x}", stack_base);
}
free_stacks_.PushFront(stack_base);
}