2 This summarizes brainstorming ideas around different types of channels, and
3 will eventually contain the design of different types of channels.
5 Protection and semantics of the message
6 - Immutability of messages after sending
7 - writes allowed (full trust)
9 - hand-off (enforce through PL or pagetable?)
10 - Support for a twoway channel
11 - just two one-way channels
13 - variability of the size in the channel
14 - Request and Response size are different, so maybe we should handle them differently?
15 Constant size: embed in the ring buffer?
16 Variable size: Splitting request and data (fixed size ring buffer with pointers into a data page)
19 - small -> in buffer/ copy semantics
21 - Ack required for one way channel?
23 - Kernel one of the end point? syscall/sysevent
24 - diff trust model etc
26 - Access control and Naming
27 - related but distinct
28 - Xenstore like/ hierarchical namespace
29 - single entity knowing all channels? or managed by individual partitions?
30 - create a channel to a service, what is the interface for that?
34 - Singularity style manifests for diff. applications
36 - Multi-producer / Multi-consumer
37 - Trust between the producers and trust between consumers
38 - typically no trust between address spaces/ partitions, and full trust within?
40 - per core channel vs. per address space channel
42 - blocking semantics (block, fail, retry)
43 - what to do when the queue is full? admission policy for channels?