(Revision 1 - 29 November 2000)
overview This is the second section that processes fpage mappings. It processes the sender's fpages setting up mappings so that these VA ranges in the sender's 1 TB user space point to the appropriate parts of the receiver's fpage in the receiver's 1 TB user space. vm_map is called to do virtually all of the work.
| 35-37 | if there is a receive fpage, then go through the save
registers two at a time looking for send fpage pairs - there can be
up to 4 send fpage pairs (send fpages are in pairs, the one at the high order address is the fpage and the one at the low order address is the "hot spot") |
| 38-44 | if the high order save register contains a send fpage call vm_map, passing it the source and destination tcbs, the send fpage pairs and the receive fpage (i.e., the address in XKSSEG that has been mapped to the receiver's fpage) vm_map does the mapping (see Professor Heiser's API slides 21- 25). The end result of this is that address ranges in the sender's user 1 TB address space are mapped to corresponding ranges in the receiver's user 1 TB address space. On return a bit is set in r (considered as a structure this time) to indicate the mapping has been made. |
| 45-51 | else, if there are no more send fpages, clear recv_fpage and goto line 52 |
| 52-57 | this code is intended to handle the case where there is a receive fpage and more than four send fpages, i.e., there are fpages in the memory buffer - it's not implemented in the current L4/MIPS |
| 58 | end of mappings started on line16 if the send descriptor indicated there were send fpages |