From 388b3fa1bd8af8c5df6aef8447ffd2a8b2cb9300 Mon Sep 17 00:00:00 2001 From: Marvin Borner Date: Thu, 14 Jan 2021 00:18:44 +0100 Subject: Added kernel idle process --- kernel/features/load.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) (limited to 'kernel/features/load.c') diff --git a/kernel/features/load.c b/kernel/features/load.c index f7fc1a5..743c009 100644 --- a/kernel/features/load.c +++ b/kernel/features/load.c @@ -1,28 +1,30 @@ // MIT License, Copyright (c) 2020 Marvin Borner -#include -#include -#include #include #include #include -#include #include +void proc_load(struct proc *proc, void *data) +{ + u32 stack = (u32)malloc(0x2000) + 0x1000; + + proc->regs.ebp = (u32)stack; + proc->regs.useresp = (u32)stack; + proc->regs.eip = (u32)data; +} + int bin_load(char *path, struct proc *proc) { // TODO: Remove hardcoded filesize struct stat s = { 0 }; vfs_stat(path, &s); char *data = malloc(s.size); - vfs_read(path, data, 0, s.size); - - u32 stack = (u32)malloc(0x2000) + 0x1000; + if (!vfs_read(path, data, 0, s.size)) + return 0; - proc->regs.ebp = (u32)stack; - proc->regs.useresp = (u32)stack; - proc->regs.eip = (u32)data; strcpy(proc->name, path); + proc_load(proc, data); - return data ? 0 : 1; + return 1; } -- cgit v1.2.3