Is there a formal distinction between a blocking RPC and a non-blocking one, other than the expected time that will be taken?

On Thu, Apr 2, 2026, at 1:41 AM, Norman Feske via users wrote:
Hello Rumen,

On 2026-03-31 23:33, Rumen Mitov via users wrote:
> During FOSDEM, one of the discussions touched on the components'
> handling of incoming RPC calls. Currently this is done in a synchronous
> manner because (if I remember correctly) it was simply easier to
> implement it that way as opposed to handling it asynchronously.
> What would be some of the challenges in handling this asynchronously?

This was implemented in very early versions of Genode [1]. A few traces 
of these days still slumber in the (private-API) interface [2]. Those 
bits are needed on the original L4 kernels to implement asynchronous 
notification as a service in Genode's core.

[1] 
https://genode.org/documentation/release-notes/10.02#Out-of-order_RPC_replies
[2] 
https://github.com/genodelabs/genode/blob/master/repos/base/include/base/rpc_server.h#L461

However, the out-of-order handling of RPCs is a can of worms, which is 
nicely illustrated by [3].

[3] https://genode.org/documentation/release-notes/10.02#Challenges

Eventually, we realized that we had needed out-of-order RPCs merely to 
accommodate the notion of *blocking* RPC calls. E.g., the timer's msleep 
used to be implemented that way. Once we identified blocking RPCs as an 
anti-pattern, we changed the RPC interfaces to become non-blocking by 
combining synchronous (but non-blocking) RPC with asynchronous 
notifications [4]. SO for the timer, there is now way to set an alarm 
(RPC), a way to take a look at the current time (RPC), and a way to 
receive an alarm (asynchronous notification).

[4] 
https://genode.org/documentation/release-notes/13.02#Timer_interface_turned_into_asynchronous_mode_of_operation

You may also find [5] worth reading to get a feel for the evolution of 
Genode's current design.

[5] 
https://genode.org/documentation/release-notes/16.11#Asynchronous_parent-child_interactions

Today, you should no longer find any blocking RPC throughout Genode. 
Hence, we can nicely define the need for out-of-order RPCs away.

Some problems are best solved by not having them. ;-)

Should the motivation behind your question be unrelated to the problem 
of blocking RPCs, I'd very much appreciate to learn more about your 
ambition for stepping away from synchronous RPC.

Cheers
Norman

-- 
Dr.-Ing. Norman Feske
Genode Labs

https://www.genode-labs.com · https://genode.org

Genode Labs GmbH · Amtsgericht Dresden · HRB 28424 · Sitz Dresden
Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth

_______________________________________________
users mailing list -- users@lists.genode.org
To unsubscribe send an email to users-leave@lists.genode.org
Archived at https://lists.genode.org/mailman3/hyperkitty/list/users@lists.genode.org/message/Q7CM4HESLSE2RLYKFXMBW63Z45F7XXK4/