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?



