mirror of
https://github.com/justinian/jsix.git
synced 2025-12-10 08:24:32 -08:00
Improve syscalls for new task switching
There are a lot of under the hood changes here: - Move syscalls to be a dispatch table, defined by syscalls.inc - Don't need a full process state (push_all) in syscalls now - In push_all, define REGS instead of using offsets - Save TWO stack pointers as well as current saved stack pointer in TCB: - rsp0 is the base of the kernel stack for interrupts - rsp3 is the saved user stack from cpu_data - Update syscall numbers in nulldrv - Some asm-debugging enhancements to the gdb script - fork() still not working
This commit is contained in:
@@ -35,11 +35,7 @@ process::fork(cpu_state *regs)
|
||||
kernel_stack, child->kernel_stack, child->rsp);
|
||||
|
||||
child->setup_kernel_stack();
|
||||
task_fork(child); // Both parent and child will return from this
|
||||
|
||||
if (bsp_cpu_data.tcb->pid == child->pid) {
|
||||
return 0;
|
||||
}
|
||||
task_fork(child);
|
||||
|
||||
return child->pid;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user