Hi Demi,

Any time you perform an seL4_Call operation on an endpoint and block waiting 
for a reply you are trusting that endpoint in a variety of ways. You trust that 
the messages will eventually get a reply and allow you to resume. You also 
trust that the message will eventually be received.

If you want to perform an seL4_Call on an untrusted endpoint you will require a 
monitor thread that can handle a timeout and reset the calling thread if it is 
still blocked.

In general, you want to avoid using endpoints where you can't trust that the 
message will be received and replied to in a timely manner. Asynchronous 
notifications do not suffer from this trust requirement so it is recommended 
that communication between mutually distrusting servers use shared memory and 
notifications. The client should seL4_Signal the server to notify a message has 
been sent via the shared memory and the server should signal in response to 
notify the client the message has been handled and the reply is in the shared 
memory.

The problem of setting up a connection, sending the reply badged notification 
object to the server, acquiring a send notification object from the server, and 
mapping the shared memory would require either the connection being statically 
configured at process creation or dynamically configured by some mutually 
trusted shared component.

Cheers,
Curtis
_______________________________________________
Devel mailing list
[email protected]
https://sel4.systems/lists/listinfo/devel

Reply via email to