akaros/Documentation/channels.txt
<<
>>
Prefs
   1Channels
   2This summarizes brainstorming ideas around different types of channels, and 
   3will eventually contain the design of different types of channels. 
   4
   5Protection and semantics of the message
   6- Immutability of messages after sending
   7        - writes allowed (full trust)
   8        - read only
   9        - hand-off (enforce through PL or pagetable?)
  10- Support for a twoway channel
  11        - just two one-way channels
  12
  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)
  17- size of the msg
  18        - large -> remapping
  19        - small -> in buffer/ copy semantics
  20
  21- Ack required for one way channel?
  22
  23- Kernel one of the end point? syscall/sysevent
  24        - diff trust model etc
  25
  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?
  31
  32        Access control: 
  33        - check at load time
  34        - Singularity style manifests for diff. applications
  35
  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?
  39
  40        - per core channel vs. per address space channel
  41
  42- blocking semantics (block, fail, retry)
  43- what to do when the queue is full? admission policy for channels?
  44
  45
  46
  47