// During a system call, generate a specific processor trap - // as if the user code's INT 0x30 instruction had caused it - // and reflect the trap to the parent process as with other traps. static void gcc_noreturn systrap(trapframe *utf, int trapno, int err) { utf->trapno = trapno; utf->err = err; proc_ret(utf, 0); }
static void do_ret(trapframe *tf, uint32_t cmd) { proc *curr = proc_cur(); // cprintf("node %d return: home: %d\n", net_node, RRNODE(curr->home)); // This is not this node's home if(RRNODE(curr->home) != net_node) { // cprintf("sys_ret: %p returning home to %d\n", curr, RRNODE(curr->home)); // spinlock_release(&curr->lock); net_migrate(tf, RRNODE(curr->home), 0); } proc_ret(tf, 1); }
static void gcc_noreturn do_ret(trapframe *tf) { //cprintf("RET proc %x eip %x esp %x\n", proc_cur(), tf->eip, tf->esp); proc_ret(tf, 1); }