Hi Norman, Thank you for the comprehensive response! It cleared up the misconceptions I had about the RPC inner workings and it was interesting to see how the mechanism evolved over the years.
Best, Rumen ________________________________________ From: Norman Feske via users <[email protected]> Sent: Thursday, April 2, 2026 10:41 AM To: [email protected] Cc: Norman Feske Subject: Re: Async Handling of RPC Entrypoints CAUTION: This email originated from outside the organization. Do not click links or open attachments unless you recognize the sender and know the content is safe. 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 -- [email protected] To unsubscribe send an email to [email protected] Archived at https://lists.genode.org/mailman3/hyperkitty/list/[email protected]/message/Q7CM4HESLSE2RLYKFXMBW63Z45F7XXK4/ _______________________________________________ users mailing list -- [email protected] To unsubscribe send an email to [email protected] Archived at https://lists.genode.org/mailman3/hyperkitty/list/[email protected]/message/TEYB6XZIOCJAOZFWIXNZRVV5LSH32Z7R/
