diff --git a/repos/base-nova/src/lib/base/rpc_entrypoint.cc b/repos/base-nova/src/lib/base/rpc_entrypoint.cc index 3407f0d2bb..72e1a105ea 100644 --- a/repos/base-nova/src/lib/base/rpc_entrypoint.cc +++ b/repos/base-nova/src/lib/base/rpc_entrypoint.cc @@ -87,13 +87,6 @@ void Rpc_entrypoint::_dissolve(Rpc_object_base *obj) if (utcb == reinterpret_cast(this->utcb())) return; - /* - * Required outside of core. E.g. launchpad needs it to forcefully kill - * a client which blocks on a session opening request where the service - * is not up yet. - */ - cancel_blocking(); - /* activate entrypoint now - otherwise cleanup call will block forever */ _delay_start.unlock(); diff --git a/repos/base/include/base/rpc_server.h b/repos/base/include/base/rpc_server.h index e314ae6a00..e827e58e13 100644 --- a/repos/base/include/base/rpc_server.h +++ b/repos/base/include/base/rpc_server.h @@ -442,6 +442,13 @@ class Genode::Rpc_entrypoint : Thread, public Object_pool * This method is solely needed on Linux. */ bool is_myself() const; + + /** + * Required outside of core. E.g. launchpad needs it to forcefully kill + * a client which blocks on a session opening request where the service + * is not up yet. + */ + void cancel_blocking() { Thread::cancel_blocking(); } }; #endif /* _INCLUDE__BASE__RPC_SERVER_H_ */ diff --git a/repos/demo/include/launchpad/launchpad.h b/repos/demo/include/launchpad/launchpad.h index 1d1762bd83..77c128c9d5 100644 --- a/repos/demo/include/launchpad/launchpad.h +++ b/repos/demo/include/launchpad/launchpad.h @@ -206,6 +206,12 @@ class Launchpad_child : public Genode::List::Element _entrypoint.activate(); } + /** + * Required to forcefully kill client which blocks on a session + * opening quest where the service is not up yet. + */ + void cancel_blocking() { _entrypoint.cancel_blocking(); } + Genode::Rom_session_capability rom_session_cap() { return _rom; } Genode::Ram_session_capability ram_session_cap() { return _ram; } Genode::Cpu_session_capability cpu_session_cap() { return _cpu; } diff --git a/repos/demo/src/lib/launchpad/launchpad.cc b/repos/demo/src/lib/launchpad/launchpad.cc index d0246f5b30..1a101109d2 100644 --- a/repos/demo/src/lib/launchpad/launchpad.cc +++ b/repos/demo/src/lib/launchpad/launchpad.cc @@ -394,7 +394,7 @@ class Child_destructor_thread : Thread_deprecated<2*4096> * bit to proceed and reset the watchdog counter to give * the next blocking operation a chance to execute. */ - cancel_blocking(); + child->cancel_blocking(); _watchdog_cnt = 0; } }