diff --git a/repos/base-tukija/src/core/include/native_pd_component.h b/repos/base-tukija/src/core/include/native_pd_component.h index 43e2e4c42b..aac32e064a 100644 --- a/repos/base-tukija/src/core/include/native_pd_component.h +++ b/repos/base-tukija/src/core/include/native_pd_component.h @@ -44,6 +44,7 @@ class Core::Native_pd_component : public Rpc_object */ Native_capability alloc_rpc_cap(Native_capability, addr_t, addr_t) override; void imprint_rpc_cap(Native_capability, unsigned long) override; + Genode::addr_t sel() override; }; #endif /* _CORE__INCLUDE__NATIVE_PD_COMPONENT_H_ */ diff --git a/repos/base-tukija/src/core/include/platform_pd.h b/repos/base-tukija/src/core/include/platform_pd.h index cb4ee59cc7..d6c56b1555 100644 --- a/repos/base-tukija/src/core/include/platform_pd.h +++ b/repos/base-tukija/src/core/include/platform_pd.h @@ -39,8 +39,9 @@ class Core::Platform_pd : public Address_space Platform_pd(Platform_pd const &); Platform_pd &operator = (Platform_pd const &); - public: + friend class Native_pd; + public: bool has_any_threads = false; /** diff --git a/repos/base-tukija/src/core/native_pd_component.cc b/repos/base-tukija/src/core/native_pd_component.cc index 79eb442af8..e8ffb42efb 100644 --- a/repos/base-tukija/src/core/native_pd_component.cc +++ b/repos/base-tukija/src/core/native_pd_component.cc @@ -36,6 +36,10 @@ void Native_pd_component::imprint_rpc_cap(Native_capability cap, unsigned long b imprint_badge(cap.local_name(), badge); } +Genode::addr_t Native_pd_component::sel() +{ + return _pd_session._pd->pd_sel(); +} Native_pd_component::Native_pd_component(Pd_session_component &pd, char const *) : diff --git a/repos/base-tukija/src/core/platform_pd.cc b/repos/base-tukija/src/core/platform_pd.cc index 9274193500..421017d55b 100644 --- a/repos/base-tukija/src/core/platform_pd.cc +++ b/repos/base-tukija/src/core/platform_pd.cc @@ -37,6 +37,8 @@ Platform_pd::Platform_pd(Allocator &, char const *label, signed, bool) return; } + log("Creating PD for <", label, "> with cap selector ", _pd_sel); + /* create task */ enum { KEEP_FREE_PAGES_NOT_AVAILABLE_FOR_UPGRADE = 2, UPPER_LIMIT_PAGES = 32 }; uint8_t res = Tukija::create_pd(_pd_sel, platform_specific().core_pd_sel(), @@ -48,7 +50,6 @@ Platform_pd::Platform_pd(Allocator &, char const *label, signed, bool) error("create_pd returned ", res); } - Platform_pd::~Platform_pd() { if (_pd_sel == Native_thread::INVALID_INDEX)