Scheduler: clear user tasks' registers

This commit is contained in:
apio 2022-10-12 17:12:06 +02:00
parent 136c0b3ae9
commit 25a460e3c6

View File

@ -91,6 +91,7 @@ void Scheduler::add_user_task(void* task)
{
Task* new_task = new Task;
ASSERT(new_task);
memset(&new_task->regs, 0, sizeof(Context));
new_task->user_task = true;
new_task->id = free_tid++;
new_task->regs.rip = (uint64_t)task;
@ -120,6 +121,7 @@ void Scheduler::load_user_task(const char* filename)
kinfoln("Loading user task: %s", filename);
Task* new_task = new Task;
ASSERT(new_task);
memset(&new_task->regs, 0, sizeof(Context));
new_task->id = free_tid++;
ELFImage* image = ELFLoader::load_elf_from_filesystem(filename);
if (!image)
@ -154,6 +156,7 @@ void Scheduler::load_user_task(const char* filename)
void Scheduler::reset_task(Task* task, ELFImage* new_image)
{
memset(&task->regs, 0, sizeof(Context));
task->state = task->Running;
task->regs.rip = new_image->entry;
task->image = new_image;