L4Re - L4 Runtime Environment
L4::Server_object_x< Derived, IFACE, BASE > Struct Template Reference

Helper class to implement p_dispatch based server objects. More...

+ Inheritance diagram for L4::Server_object_x< Derived, IFACE, BASE >:
+ Collaboration diagram for L4::Server_object_x< Derived, IFACE, BASE >:

Public Member Functions

int dispatch (l4_umword_t r, L4::Ipc::Iostream &ios)
 Implementation forwarding to p_dispatch().
 
- Public Member Functions inherited from L4::Server_object
l4_msgtag_t dispatch (l4_msgtag_t tag, unsigned rights, l4_utcb_t *utcb)
 The abstract handler for client requests to the object. More...
 
- Public Member Functions inherited from L4::Epiface
 Epiface ()
 Make a server object.
 
virtual Demand get_buffer_demand () const =0
 Get the server-side receive buffer demand for this object. More...
 
virtual ~Epiface ()=0
 Destroy the object.
 
Stored_cap obj_cap () const
 Get the capability to the kernel object belonging to this object. More...
 
Server_ifaceserver_iface () const
 Get pointer to server interface at which the object is currently registered. More...
 
int set_server (Server_iface *srv, Cap< void > cap, bool managed=false)
 Set server registration info for the object. More...
 
void set_obj_cap (Cap< void > const &cap)
 Deprecated server registration function.
 
- Public Member Functions inherited from L4::Server_object_t< IFACE, BASE >
BASE::Demand get_buffer_demand () const
 
int dispatch_meta_request (L4::Ipc::Iostream &ios)
 Implementation of the meta protocol based on IFACE. More...
 

Additional Inherited Members

- Public Types inherited from L4::Epiface
typedef Ipc_svr::Server_iface Server_iface
 Type for abstract server interface.
 
typedef Ipc_svr::Server_iface::Demand Demand
 Type for server-side receive buffer demand.
 
- Public Types inherited from L4::Server_object_t< IFACE, BASE >
typedef IFACE Interface
 Data type of the IPC interface definition.
 
- Static Public Member Functions inherited from L4::Server_object_t< IFACE, BASE >
template<typename THIS >
static int proto_dispatch (THIS *self, l4_umword_t rights, L4::Ipc::Iostream &ios)
 Implementation of protocol-based dispatch for this server object. More...
 

Detailed Description

template<typename Derived, typename IFACE, typename BASE = L4::Server_object>
struct L4::Server_object_x< Derived, IFACE, BASE >

Helper class to implement p_dispatch based server objects.

Template Parameters
DerivedThe data type of your server object class.
IFACEThe data type providing the interface definition for the object.
BASEOptional data-type of the base server object (usually L4::Server_object)

This class implements the standard dispatch() function of L4::Server_object and forwards incoming messages to a set of overloaded p_dispatch() functions. There must be a p_dispatch() function in Derived for each interface provided by IFACE with the signature

int p_dispatch(Iface *, unsigned rights, L4::Ipc::Iostream &)

that is called for messages with protocol == Iface::Protocol.

Example signature for L4Re::Dataspace is:

int p_dispatch(L4Re::Dataspace *, unsigned, L4::Ipc::Iostream &)

Definition at line 154 of file ipc_server.


The documentation for this struct was generated from the following file: