0: | struct tcb *sndq_end, *wakeup_link, *busy_link, | ||
*int_link; | |||
1: | unsigned long wfor; struct tcb *sndq_start; | ||
unsigned long stack_pointer; udw_t asid; | |||
2: | void *gpt_pointer; unsigned long myself; | ||
unsigned int fine_state, timeout; long recv_desc; | |||
3: | struct tcb *present_next, *child_task; | ||
uhw_t rem_timeslice, timeslice; | |||
ub_t mcp, bpad1, ctsp, tsp; | |||
4: | long wakeup; | ||
struct tcb *soon_wakeup_link, | |||
*late_wakeup_link, *sndq_next; | |||
... | |||
0: | dw_t stack_bottom; | |
udw_t s0_save, *free_asid_list; | ||
tcb_t *wakeup_list; | ||
... | ||
Exception stack as set up by general exception handler (prior to
k_ipc
).
Sender's kernel stack when switching to receiver (end of
deliver
).
exc_tlbs
,
exc_tlbl
.
user page fault ==> invoke pager |
||
window fault ==> look up
receiver's PT & remap |
||
kernel TLB miss on TCB array
==> allocate TCB |
k_ipc
code)