> On 24 Sep 2016, at 19:30 , Matt Rice <ratm...@gmail.com> wrote:
> 
> Couldn't at the expense of an extra notification send, use a
> notification where the receiver of the notification then should call
> the then do a non-blocking reply.  I didn't see reply being
> non-blocking described in the manual so please correct me if i am
> wrong.
> 
> This only works one party is willing to block correct, and there is no
> way to short circuit the call if an incoming message
> could be delivered to the call'ing process before the call can be completed?
> Although it would seem to take some amount of gymnastics to balance
> sending and receiving...
> 
> so if really neither are willing to wait there is always
> notifications+shared memory?

Typically it makes sense to block on the receive:
- a client (using Call()) typically needs the server response to continue, and 
thus blocking makes sense
- a server (using ReplyRecv()) does that because it has nothing else to do 
after serving one request than wait for the next. Any I/O completion would be 
signalled via a Notification that is bound to the server and delivered by the 
request endpoint

Also, the server doesn’t care whether the client got the message, if it didn’t 
then it’s the client’s fault. Hence using NBReplyRecv() is generally the most 
appropriate operation for the server.

If you want to be completely asynchronous, then a Notification-based protocol 
is the way to go. This would be the approach of choice if client and server are 
running on different cores.

Gernot
_______________________________________________
Devel mailing list
Devel@sel4.systems
https://sel4.systems/lists/listinfo/devel

Reply via email to