[coyotos-dev] Exploitation of PATTs
Jonathan S. Shapiro
shap at eros-os.org
Fri Jan 21 15:06:20 EST 2005
A strange thought occurred to me at some point last night.
One of the things we would like to be able to do in certain applications
is something like "page flipping", where process A can send a page that
process B will populate. The idea being to avoid copying the data during
This was possible in EROS/KeyKOS, but inconvenient because it required
traversing the mapping structures explicitly.
Since Coyotos has an explicit capability address space, and since both
cap and data spaces are defined by the PATT structure, it is possible to
arrange things to that
1. The page capability received during IPC goes into some slot of some
leaf PATT in the receiver C-space.
2. The self-same leaf PATT is *also* a leaf PATT in data space.
3. In consequence the receive has effectively updated the address map
with no need for further traversals.
This can, of course, be generalized to transfer of capabilities for
arbitrary size memory units at suitable powers of two; I simply wanted
to capture the illustration.
Being able to alias the PATTs in this way is really quite powerful. This
is the motivating case for something I was trying to motivate on the L4
list: that C-space and D-space should have the same kind of metadata.
More information about the coyotos-dev