Hi Taru,

> When spawning more threads the rm-session from the env needs to be
> upgraded in various places. This can occur when spawning new threads and
> even in thread.start().
> 
> Thus one needs a way to make the rm-session in env upgradeable from the
> outside.

there is already a bit of support for such upgrades in place. Please
have a look at 'base/include/base/platform_env.h'. The class behind
'env()->rm_session()' is actually an 'Expanding_rm_session_client',
which is meant to transparently upgrade the session quota as needed.
Right now, the implementation covers only the 'attach' function though.
For accommodating your concern, we should cover all functions that
implicitly consume session quota. In your actual case, this would be
'add_client'.

> A simple way to fix would be to define a
> class Upgradeable_rm_session : public Rm_session {
>       void upgrade(const char *);
> };

The 'Platform_env::Expanding_rm_session' class looks actually quite
similar. Could you have look to see how it fits your needs?

> And make some private inheritance into protected inheritance 
> i.e. Rpc_client into
> template <typename RPC_INTERFACE>
> struct Rpc_client : *protected* Capability<RPC_INTERFACE>, RPC_INTERFACE
> ...

Oh, you have just turned a public inheritance into a protected one. ;-)
If a 'struct' inherits a base class with no 'private/protected/public'
keyword, 'public' is default.

Cheers
Norman

-- 
Dr.-Ing. Norman Feske
Genode Labs

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

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

------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://ad.doubleclick.net/clk;258768047;13503038;j?
http://info.appdynamics.com/FreeJavaPerformanceDownload.html
_______________________________________________
Genode-main mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/genode-main

Reply via email to