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
This commit is contained in:
Norman Feske 2021-01-08 13:31:24 +01:00
parent 5ca3847c89
commit f57519397b
11 changed files with 16 additions and 27 deletions

View File

@ -20,10 +20,10 @@
namespace Genode { struct Hw_native_pd_client; } namespace Genode { struct Hw_native_pd_client; }
struct Genode::Hw_native_pd_client : Rpc_client<Hw_native_pd> struct Genode::Hw_native_pd_client : Rpc_client<Pd_session::Native_pd>
{ {
explicit Hw_native_pd_client(Capability<Native_pd> cap) explicit Hw_native_pd_client(Capability<Pd_session::Native_pd> cap)
: Rpc_client<Hw_native_pd>(static_cap_cast<Hw_native_pd>(cap)) { } : Rpc_client<Pd_session::Native_pd>(cap) { }
void upgrade_cap_slab() override { void upgrade_cap_slab() override {
call<Rpc_upgrade_cap_slab>(); } call<Rpc_upgrade_cap_slab>(); }

View File

@ -17,10 +17,7 @@
#include <base/rpc.h> #include <base/rpc.h>
#include <pd_session/pd_session.h> #include <pd_session/pd_session.h>
namespace Genode { struct Hw_native_pd; } struct Genode::Pd_session::Native_pd : Interface
struct Genode::Hw_native_pd : Pd_session::Native_pd
{ {
virtual void upgrade_cap_slab() = 0; virtual void upgrade_cap_slab() = 0;

View File

@ -28,7 +28,7 @@ namespace Genode {
} }
class Genode::Native_pd_component : public Rpc_object<Hw_native_pd> class Genode::Native_pd_component : public Rpc_object<Pd_session::Native_pd>
{ {
private: private:
@ -36,7 +36,7 @@ class Genode::Native_pd_component : public Rpc_object<Hw_native_pd>
public: public:
Native_pd_component(Pd_session_component &pd, char const *args); Native_pd_component(Pd_session_component &, char const *args);
~Native_pd_component(); ~Native_pd_component();

View File

@ -24,7 +24,7 @@ namespace Genode {
} }
class Genode::Native_pd_component : public Rpc_object<Linux_native_pd, class Genode::Native_pd_component : public Rpc_object<Pd_session::Native_pd,
Native_pd_component> Native_pd_component>
{ {
private: private:

View File

@ -20,10 +20,10 @@
namespace Genode { struct Linux_native_pd_client; } namespace Genode { struct Linux_native_pd_client; }
struct Genode::Linux_native_pd_client : Rpc_client<Linux_native_pd> struct Genode::Linux_native_pd_client : Rpc_client<Pd_session::Native_pd>
{ {
explicit Linux_native_pd_client(Capability<Native_pd> cap) explicit Linux_native_pd_client(Capability<Native_pd> cap)
: Rpc_client<Linux_native_pd>(static_cap_cast<Linux_native_pd>(cap)) { } : Rpc_client<Pd_session::Native_pd>(cap) { }
void start(Capability<Dataspace> binary) { void start(Capability<Dataspace> binary) {
call<Rpc_start>(binary); } call<Rpc_start>(binary); }

View File

@ -17,13 +17,8 @@
#include <pd_session/pd_session.h> #include <pd_session/pd_session.h>
#include <dataspace/dataspace.h> #include <dataspace/dataspace.h>
namespace Genode { struct Linux_native_pd; } struct Genode::Pd_session::Native_pd : Interface
struct Genode::Linux_native_pd : Pd_session::Native_pd
{ {
void start(Capability<Dataspace> binary);
GENODE_RPC(Rpc_start, void, start, Capability<Dataspace>); GENODE_RPC(Rpc_start, void, start, Capability<Dataspace>);
GENODE_RPC_INTERFACE(Rpc_start); GENODE_RPC_INTERFACE(Rpc_start);
}; };

View File

@ -82,8 +82,7 @@ Child::Process::Process(Type type,
pd.assign_parent(parent_cap); pd.assign_parent(parent_cap);
Linux_native_pd_client Linux_native_pd_client lx_pd(pd.native_pd());
lx_pd(static_cap_cast<Linux_native_pd>(pd.native_pd()));
lx_pd.start(ldso_ds); lx_pd.start(ldso_ds);
} }

View File

@ -20,10 +20,10 @@
namespace Genode { struct Nova_native_pd_client; } namespace Genode { struct Nova_native_pd_client; }
struct Genode::Nova_native_pd_client : Rpc_client<Nova_native_pd> struct Genode::Nova_native_pd_client : Rpc_client<Pd_session::Native_pd>
{ {
explicit Nova_native_pd_client(Capability<Native_pd> cap) explicit Nova_native_pd_client(Capability<Native_pd> cap)
: Rpc_client<Nova_native_pd>(static_cap_cast<Nova_native_pd>(cap)) { } : Rpc_client<Pd_session::Native_pd>(static_cap_cast<Pd_session::Native_pd>(cap)) { }
Native_capability alloc_rpc_cap(Native_capability ep, Native_capability alloc_rpc_cap(Native_capability ep,
addr_t entry, addr_t mtd) override addr_t entry, addr_t mtd) override

View File

@ -17,9 +17,7 @@
#include <base/rpc.h> #include <base/rpc.h>
#include <pd_session/pd_session.h> #include <pd_session/pd_session.h>
namespace Genode { struct Nova_native_pd; } struct Genode::Pd_session::Native_pd : Interface
struct Genode::Nova_native_pd : Pd_session::Native_pd
{ {
/** /**
* Allocate RPC object capability * Allocate RPC object capability

View File

@ -27,7 +27,7 @@ namespace Genode {
} }
class Genode::Native_pd_component : public Rpc_object<Nova_native_pd> class Genode::Native_pd_component : public Rpc_object<Pd_session::Native_pd>
{ {
private: private:

View File

@ -291,7 +291,7 @@ struct Genode::Pd_session : Session, Ram_allocator
/** /**
* Common base class of kernel-specific PD interfaces * Common base class of kernel-specific PD interfaces
*/ */
struct Native_pd : Interface { }; struct Native_pd;
/** /**
* Return capability to kernel-specific PD operations * Return capability to kernel-specific PD operations