diff --git a/base/include/base/child.h b/base/include/base/child.h index 8eba59b2d7..94531e1c33 100644 --- a/base/include/base/child.h +++ b/base/include/base/child.h @@ -265,6 +265,7 @@ namespace Genode { void upgrade(Session_capability, Upgrade_args const &); void close(Session_capability); void exit(int); + Thread_capability main_thread_cap() const; }; } diff --git a/base/include/base/process.h b/base/include/base/process.h index 200787529c..39e5ef1fe7 100644 --- a/base/include/base/process.h +++ b/base/include/base/process.h @@ -86,6 +86,8 @@ namespace Genode { } Pd_session_capability pd_session_cap() const { return _pd.cap(); } + + Thread_capability main_thread_cap() const { return _thread0_cap; } }; } diff --git a/base/include/parent/client.h b/base/include/parent/client.h index 2c87de15af..752542a71d 100644 --- a/base/include/parent/client.h +++ b/base/include/parent/client.h @@ -37,6 +37,9 @@ namespace Genode { call(to_session, args); } void close(Session_capability session) { call(session); } + + Thread_capability main_thread_cap() const { + return call(); } }; } diff --git a/base/include/parent/parent.h b/base/include/parent/parent.h index 374b37b5fc..30160df926 100644 --- a/base/include/parent/parent.h +++ b/base/include/parent/parent.h @@ -17,6 +17,7 @@ #include #include #include +#include #include #include @@ -128,6 +129,10 @@ namespace Genode { */ virtual void close(Session_capability session) = 0; + /** + * Provide thread_cap of main thread + */ + virtual Thread_capability main_thread_cap() const = 0; /********************* ** RPC declaration ** @@ -143,9 +148,10 @@ namespace Genode { GENODE_TYPE_LIST(Quota_exceeded), Session_capability, Upgrade_args const &); GENODE_RPC(Rpc_close, void, close, Session_capability); + GENODE_RPC(Rpc_main_thread, Thread_capability, main_thread_cap); GENODE_RPC_INTERFACE(Rpc_exit, Rpc_announce, Rpc_session, Rpc_upgrade, - Rpc_close); + Rpc_close, Rpc_main_thread); }; } diff --git a/base/src/core/include/core_parent.h b/base/src/core/include/core_parent.h index 562fe6dbda..74601dbc9a 100644 --- a/base/src/core/include/core_parent.h +++ b/base/src/core/include/core_parent.h @@ -53,8 +53,16 @@ namespace Genode { throw Quota_exceeded(); } - void close(Session_capability) { - PDBG("implement me, please"); } + void close(Session_capability) + { + PDBG("implement me, please"); + } + + Thread_capability main_thread_cap() const + { + PDBG("implement me, please"); + return Thread_capability(); + } }; }