Vhex-kernel/src/kernel/scheduler/syscall/sys_fork.c

43 lines
1.0 KiB
C
Raw Normal View History

/*#include <kernel/process.h>
2019-12-29 16:39:30 +01:00
pid_t sys_fork(void)
{
extern struct process *process_current;
struct process *process_new;
pid_t process_new_pid;
// Check error
if (process_current == NULL)
return (-1);
2019-12-29 16:39:30 +01:00
// Get the new process slot.
new_pid = process_alloc(&process_new);
if (new_pid != 0)
return (-1);
2019-12-29 16:39:30 +01:00
// Try to create user stack
process_new->memory.stack.size.user = process_current->;
process_new->memory.stack.user = (uint32_t)pm_alloc(process_new->memory.stack.size.user);
if (process_new->memory.stack.user == 0x00000000)
{
process_free(process_new);
2019-12-29 16:39:30 +01:00
return (-1);
}
// Try to create kernel stack
process_new->memory.stack.size.kernel = process_current->memory.stack.size.kernel;
process_new->memory.stack.kernel = (uint32_t)pm_alloc(process_new->memory.stack.size.kernel);
if (process_new->memory.stack.kernel == 0x00000000)
{
pm_free(process_new->memory.stack.user);
process_free(process_new);
return (-1);
}
//TODO: dump stack data
//TODO: dump code data
//TODO: Initialize context.
2019-12-29 16:39:30 +01:00
return (-1);
}*/