31#include <l4/sys/cxx/ipc_epiface>
32#include <l4/sys/cxx/ipc_server_loop>
33#include <l4/cxx/type_traits>
76 return ios.prepare_ipc(r);
90template<
typename IFACE,
typename BASE = L4::Server_
object>
111 {
return L4::Util::handle_meta_request<IFACE>(ios); }
124 template<
typename THIS>
153template<
typename Derived,
typename IFACE,
typename BASE = L4::Server_
object>
L4::Cap related definitions.
C++ interface for capabilities.
Input/Output stream for IPC [un]marshalling.
Abstract server object to be used with L4::Server and L4::Basic_registry.
virtual int dispatch(unsigned long rights, Ipc::Iostream &ios)=0
The abstract handler for client requests to the object.
l4_msgtag_t dispatch(l4_msgtag_t tag, unsigned rights, l4_utcb_t *utcb) override
The abstract handler for client requests to the object.
unsigned long l4_umword_t
Unsigned machine word.
struct l4_utcb_t l4_utcb_t
Opaque type for the UTCB.
L4 low-level kernel interface.
Base class for interface implementations.
Stored_cap obj_cap() const
Get the capability to the kernel object belonging to this object.
Server object base class for handling IRQ messages.
static int proto_dispatch(THIS *self, long proto, A1 a1, A2 &a2)
Protocol based server-side dispatch function.
T::__Kobject_typeid::Demand Demand
Data type expressing the static demand of receive buffers in a server.
Base class (template) for server implementing server objects.
static int proto_dispatch(THIS *self, l4_umword_t rights, L4::Ipc::Iostream &ios)
Implementation of protocol-based dispatch for this server object.
int dispatch_meta_request(L4::Ipc::Iostream &ios)
Implementation of the meta protocol based on IFACE.
IFACE Interface
Data type of the IPC interface definition.
BASE::Demand get_buffer_demand() const override
Helper class to implement p_dispatch based server objects.
int dispatch(l4_umword_t r, L4::Ipc::Iostream &ios)
Implementation forwarding to p_dispatch().
Message tag data structure.
long label() const L4_NOTHROW
Get the protocol value.
Type information server template.