| Channels | 
 | This summarizes brainstorming ideas around different types of channels, and  | 
 | will eventually contain the design of different types of channels.  | 
 |  | 
 | Protection and semantics of the message | 
 | - Immutability of messages after sending | 
 | 	- writes allowed (full trust) | 
 | 	- read only | 
 | 	- hand-off (enforce through PL or pagetable?) | 
 | - Support for a twoway channel | 
 | 	- just two one-way channels | 
 |  | 
 | - variability of the size in the channel | 
 | 	- Request and Response size are different, so maybe we should handle them differently? | 
 | 	Constant size: embed in the ring buffer?  | 
 | 	Variable size: Splitting request and data (fixed size ring buffer with pointers into a data page) | 
 | - size of the msg | 
 | 	- large -> remapping | 
 | 	- small -> in buffer/ copy semantics | 
 |  | 
 | - Ack required for one way channel? | 
 |  | 
 | - Kernel one of the end point? syscall/sysevent | 
 | 	- diff trust model etc | 
 |  | 
 | - Access control and Naming | 
 | 	- related but distinct | 
 | 	- Xenstore like/ hierarchical namespace | 
 | 	- single entity knowing all channels? or managed by individual partitions? | 
 | 	- create a channel to a service, what is the interface for that? | 
 |  | 
 | 	Access control:  | 
 | 	- check at load time | 
 | 	- Singularity style manifests for diff. applications | 
 |  | 
 | - Multi-producer / Multi-consumer | 
 | 	- Trust between the producers and trust between consumers | 
 | 	- typically no trust between address spaces/ partitions, and full trust within? | 
 |  | 
 | 	- per core channel vs. per address space channel | 
 |  | 
 | - blocking semantics (block, fail, retry) | 
 | - what to do when the queue is full? admission policy for channels? | 
 |  | 
 |  | 
 |  |