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 -- [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/UO2RYRITB6GJVWB45CKFZYBFLTKAOK5B/
