From f57519397b2c5b8aec0fa4cf9d9950276876df59 Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Fri, 8 Jan 2021 13:31:24 +0100 Subject: [PATCH] Remove Pd_session::Native_pd definition from API This type can be a forward declaration in the public API because its definition is required only in kernel-specific code. Fixes #3979 --- repos/base-hw/include/hw_native_pd/client.h | 6 +++--- repos/base-hw/include/hw_native_pd/hw_native_pd.h | 5 +---- repos/base-hw/src/core/native_pd_component.h | 4 ++-- repos/base-linux/src/core/include/native_pd_component.h | 2 +- repos/base-linux/src/include/linux_native_pd/client.h | 4 ++-- .../src/include/linux_native_pd/linux_native_pd.h | 7 +------ repos/base-linux/src/lib/base/child_process.cc | 3 +-- repos/base-nova/include/nova_native_pd/client.h | 4 ++-- repos/base-nova/include/nova_native_pd/nova_native_pd.h | 4 +--- repos/base-nova/src/core/include/native_pd_component.h | 2 +- repos/base/include/pd_session/pd_session.h | 2 +- 11 files changed, 16 insertions(+), 27 deletions(-) diff --git a/repos/base-hw/include/hw_native_pd/client.h b/repos/base-hw/include/hw_native_pd/client.h index 1ac118f550..06089c05f2 100644 --- a/repos/base-hw/include/hw_native_pd/client.h +++ b/repos/base-hw/include/hw_native_pd/client.h @@ -20,10 +20,10 @@ namespace Genode { struct Hw_native_pd_client; } -struct Genode::Hw_native_pd_client : Rpc_client +struct Genode::Hw_native_pd_client : Rpc_client { - explicit Hw_native_pd_client(Capability cap) - : Rpc_client(static_cap_cast(cap)) { } + explicit Hw_native_pd_client(Capability cap) + : Rpc_client(cap) { } void upgrade_cap_slab() override { call(); } diff --git a/repos/base-hw/include/hw_native_pd/hw_native_pd.h b/repos/base-hw/include/hw_native_pd/hw_native_pd.h index 845c45fd3f..922504ab9b 100644 --- a/repos/base-hw/include/hw_native_pd/hw_native_pd.h +++ b/repos/base-hw/include/hw_native_pd/hw_native_pd.h @@ -17,10 +17,7 @@ #include #include -namespace Genode { struct Hw_native_pd; } - - -struct Genode::Hw_native_pd : Pd_session::Native_pd +struct Genode::Pd_session::Native_pd : Interface { virtual void upgrade_cap_slab() = 0; diff --git a/repos/base-hw/src/core/native_pd_component.h b/repos/base-hw/src/core/native_pd_component.h index d03d033f4c..36589cd75a 100644 --- a/repos/base-hw/src/core/native_pd_component.h +++ b/repos/base-hw/src/core/native_pd_component.h @@ -28,7 +28,7 @@ namespace Genode { } -class Genode::Native_pd_component : public Rpc_object +class Genode::Native_pd_component : public Rpc_object { private: @@ -36,7 +36,7 @@ class Genode::Native_pd_component : public Rpc_object public: - Native_pd_component(Pd_session_component &pd, char const *args); + Native_pd_component(Pd_session_component &, char const *args); ~Native_pd_component(); diff --git a/repos/base-linux/src/core/include/native_pd_component.h b/repos/base-linux/src/core/include/native_pd_component.h index 7da062cae2..654d0187e4 100644 --- a/repos/base-linux/src/core/include/native_pd_component.h +++ b/repos/base-linux/src/core/include/native_pd_component.h @@ -24,7 +24,7 @@ namespace Genode { } -class Genode::Native_pd_component : public Rpc_object { private: diff --git a/repos/base-linux/src/include/linux_native_pd/client.h b/repos/base-linux/src/include/linux_native_pd/client.h index 79ad406d48..ee6d47b828 100644 --- a/repos/base-linux/src/include/linux_native_pd/client.h +++ b/repos/base-linux/src/include/linux_native_pd/client.h @@ -20,10 +20,10 @@ namespace Genode { struct Linux_native_pd_client; } -struct Genode::Linux_native_pd_client : Rpc_client +struct Genode::Linux_native_pd_client : Rpc_client { explicit Linux_native_pd_client(Capability cap) - : Rpc_client(static_cap_cast(cap)) { } + : Rpc_client(cap) { } void start(Capability binary) { call(binary); } diff --git a/repos/base-linux/src/include/linux_native_pd/linux_native_pd.h b/repos/base-linux/src/include/linux_native_pd/linux_native_pd.h index 2daa4a40fa..326db8c99e 100644 --- a/repos/base-linux/src/include/linux_native_pd/linux_native_pd.h +++ b/repos/base-linux/src/include/linux_native_pd/linux_native_pd.h @@ -17,13 +17,8 @@ #include #include -namespace Genode { struct Linux_native_pd; } - - -struct Genode::Linux_native_pd : Pd_session::Native_pd +struct Genode::Pd_session::Native_pd : Interface { - void start(Capability binary); - GENODE_RPC(Rpc_start, void, start, Capability); GENODE_RPC_INTERFACE(Rpc_start); }; diff --git a/repos/base-linux/src/lib/base/child_process.cc b/repos/base-linux/src/lib/base/child_process.cc index 6dac3e7650..5f80bc68b9 100644 --- a/repos/base-linux/src/lib/base/child_process.cc +++ b/repos/base-linux/src/lib/base/child_process.cc @@ -82,8 +82,7 @@ Child::Process::Process(Type type, pd.assign_parent(parent_cap); - Linux_native_pd_client - lx_pd(static_cap_cast(pd.native_pd())); + Linux_native_pd_client lx_pd(pd.native_pd()); lx_pd.start(ldso_ds); } diff --git a/repos/base-nova/include/nova_native_pd/client.h b/repos/base-nova/include/nova_native_pd/client.h index c63c6afe44..2f1a2e3475 100644 --- a/repos/base-nova/include/nova_native_pd/client.h +++ b/repos/base-nova/include/nova_native_pd/client.h @@ -20,10 +20,10 @@ namespace Genode { struct Nova_native_pd_client; } -struct Genode::Nova_native_pd_client : Rpc_client +struct Genode::Nova_native_pd_client : Rpc_client { explicit Nova_native_pd_client(Capability cap) - : Rpc_client(static_cap_cast(cap)) { } + : Rpc_client(static_cap_cast(cap)) { } Native_capability alloc_rpc_cap(Native_capability ep, addr_t entry, addr_t mtd) override diff --git a/repos/base-nova/include/nova_native_pd/nova_native_pd.h b/repos/base-nova/include/nova_native_pd/nova_native_pd.h index a1250227f2..e006bf0e45 100644 --- a/repos/base-nova/include/nova_native_pd/nova_native_pd.h +++ b/repos/base-nova/include/nova_native_pd/nova_native_pd.h @@ -17,9 +17,7 @@ #include #include -namespace Genode { struct Nova_native_pd; } - -struct Genode::Nova_native_pd : Pd_session::Native_pd +struct Genode::Pd_session::Native_pd : Interface { /** * Allocate RPC object capability diff --git a/repos/base-nova/src/core/include/native_pd_component.h b/repos/base-nova/src/core/include/native_pd_component.h index d8f31100be..85d351333e 100644 --- a/repos/base-nova/src/core/include/native_pd_component.h +++ b/repos/base-nova/src/core/include/native_pd_component.h @@ -27,7 +27,7 @@ namespace Genode { } -class Genode::Native_pd_component : public Rpc_object +class Genode::Native_pd_component : public Rpc_object { private: diff --git a/repos/base/include/pd_session/pd_session.h b/repos/base/include/pd_session/pd_session.h index f926ea5028..a3e1da8bf9 100644 --- a/repos/base/include/pd_session/pd_session.h +++ b/repos/base/include/pd_session/pd_session.h @@ -291,7 +291,7 @@ struct Genode::Pd_session : Session, Ram_allocator /** * Common base class of kernel-specific PD interfaces */ - struct Native_pd : Interface { }; + struct Native_pd; /** * Return capability to kernel-specific PD operations