egos-2k+ syscall workflow --- sys_send/recv (syscall.c) | ^ +-> trap (syscall.c) [ret] | USER SPACE | -----[trap]-------------------------------------------------|---- | KERNEL | +-> trap_entry (kernel.s) [mret] [switch to kernel stack] [switch to user stack] [save context to stack] [restore context] | | +-> kernel_entry (kernel.c) [ret] [context: stack=>PCB] [context: PCB=>stack] | | ... (intr_entry? excp_entry?) | | | +-> proc_try_syscall (ipc.c) [ret] | | +-> proc_try_send/recv (ipc.c) | +-> sys_yield (scheduler.c) [ret] | | +------>[schedule next proc]----+