add: zombify task

This commit is contained in:
2025-02-07 11:28:22 +01:00
parent a9ed5947a8
commit 3766464c47
3 changed files with 24 additions and 12 deletions

View File

@ -63,23 +63,34 @@ void exec_fn(void (*fn)(void))
new_task->eip = (u32 *)fn;
}
void zombify_task(struct task *task)
{
cli(); // Technically useless
free_pages(task->heap, 4096);
free_pages(task->esp0, STACK_SIZE);
task->esp0 = NULL;
task->heap = NULL;
toris();
}
void remove_task(struct task *task)
{
cli();
struct task *left = task->prev;
struct task *right = task->next;
if (task->child)
if (task->child) {
remove_task(task->child);
task->child = NULL;
}
if (task->heap)
free_pages(task->heap, 4096);
if (task->esp0)
free_pages(task->esp0, STACK_SIZE);
task->heap = NULL;
task->esp0 = NULL;
if (task->status != ZOMBIE) {
left->next = right;
right->prev = left;
vfree(task);
}
left->next = right;
right->prev = left;
vfree(task);
toris();
}
struct task *copy_task(const struct task *task)
@ -104,5 +115,5 @@ void exit_task(void)
current_task->status = STOPPED;
}
toris();
asm volatile("jmp scheduler");
scheduler();
}