This interface poses a problem for virtualization. One of the goals
of Viengoos is that all interfaces be virtualizable. This has (so
far) included the ability to fully virtualize kernel objects.
Virtualizing an object is done by way of a message buffer, on which
the same interface is implemented as the object that is being
virtualized.
This means that to virtualize a cappage, it must also be possible to
virtualize cappage indexing. Imagine that to find the source message
buffer in the above msg_buf_enqueue invocation includes traversing a
virtualized cappage. That is, after translating some bits of the
address, the kernel encounters a message buffer. This means that
instead of a kernel-implemented cappage, a message buffer is
encountered while traversing the address space. Instead of failing,
the kernel should conceptually index the message buffer. This means
sending it an index message with the residual address.