From e4f28625e3f1c0158b7b192f080a46201962f595 Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Wed, 6 Jun 2012 17:24:07 +0200 Subject: [PATCH] Construct process member as late as possible When creating a 'Child' object with an already active entrypoint, session requests may arrive as soon as the '_process' is created. We have to make sure that at least all parts of the 'Child' object needed for serving 'session' requests are constructed. This is particularly important for the '_policy' member. --- base/include/base/child.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/base/include/base/child.h b/base/include/base/child.h index 95d11029e9..fe66b57ed8 100644 --- a/base/include/base/child.h +++ b/base/include/base/child.h @@ -287,16 +287,14 @@ namespace Genode { Rpc_entrypoint *_entrypoint; Parent_capability _parent_cap; - Process _process; + /* child policy */ + Child_policy *_policy; /* sessions opened by the child */ Lock _lock; /* protect list manipulation */ Object_pool _session_pool; List _session_list; - /* child policy */ - Child_policy *_policy; - /* server role */ Server _server; @@ -305,6 +303,8 @@ namespace Genode { */ char _args[Parent::Session_args::MAX_SIZE]; + Process _process; + /** * Attach session information to a child * @@ -379,9 +379,9 @@ namespace Genode { _heap(&_ram_session_client, env()->rm_session()), _entrypoint(entrypoint), _parent_cap(_entrypoint->manage(this)), - _process(elf_ds, ram, cpu, rm, _parent_cap, policy->name(), 0), _policy(policy), - _server(ram) + _server(ram), + _process(elf_ds, ram, cpu, rm, _parent_cap, policy->name(), 0) { } /**