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/

Reply via email to