L4Re Operating System Framework
Interface and Usage Documentation
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
L4Re::Util::Registry_server< LOOP_HOOKS > Class Template Reference

A server loop object which has a Object_registry included. More...

#include <object_registry>

+ Inheritance diagram for L4Re::Util::Registry_server< LOOP_HOOKS >:
+ Collaboration diagram for L4Re::Util::Registry_server< LOOP_HOOKS >:

Public Member Functions

 Registry_server ()
 Create a new server loop object for the main thread of the task.
 
 Registry_server (l4_utcb_t *, L4::Cap< L4::Thread > server, L4::Cap< L4::Factory > factory)
 Create a new server loop object for an arbitrary thread and factory.
 
 Registry_server (L4::Cap< L4::Thread > server, L4::Cap< L4::Factory > factory)
 Create a new server loop object for an arbitrary thread and factory.
 
Object_registry const * registry () const
 Return registry of this server loop.
 
Object_registryregistry ()
 Return registry of this server loop.
 
void L4_NORETURN loop (l4_utcb_t *utcb=l4_utcb())
 Start the server loop.
 
template<typename Printer >
void L4_NORETURN loop_dbg (Printer printer, l4_utcb_t *utcb=l4_utcb())
 Start the server loop with error printing.
 
- Public Member Functions inherited from L4::Server< LOOP_HOOKS >
 Server (l4_utcb_t *)
 Initializes the server loop.
 
 Server ()
 Initializes the server loop.
 
template<typename DISPATCH >
L4_NORETURN void internal_loop (DISPATCH dispatch, l4_utcb_t *)
 The server loop.
 
template<typename R >
L4_NORETURN void loop_noexc (R r, l4_utcb_t *u=l4_utcb())
 Server loop without exception handling.
 
template<typename EXC , typename R >
L4_NORETURN void loop (R r, l4_utcb_t *u=l4_utcb())
 Server loop with internal exception handling.
 
template<typename EXC , typename R , typename Printer >
L4_NORETURN void loop_dbg (R r, Printer p, l4_utcb_t *u=l4_utcb())
 Server loop with internal exception handling including message printing.
 
- Public Member Functions inherited from L4::Ipc_svr::Br_manager_no_buffers
int alloc_buffer_demand (Demand const &demand) override
 Tells the server to allocate buffers for the given demand.
 
L4::Cap< void > get_rcv_cap (int) const override
 Returns L4::Cap<void>::Invalid, we have no buffer management.
 
int realloc_rcv_cap (int) override
 Returns -L4_ENOMEM, we have no buffer management.
 
int add_timeout (Timeout *, l4_kernel_clock_t) override
 Returns -L4_ENOSYS, we have no timeout queue.
 
int remove_timeout (Timeout *) override
 Returns -L4_ENOSYS, we have no timeout queue.
 
- Public Member Functions inherited from L4::Ipc_svr::Server_iface
 Server_iface ()
 Make a server interface.
 
template<typename T >
L4::Cap< T > rcv_cap (int index) const
 Get given receive buffer as typed capability.
 
L4::Cap< void > rcv_cap (int index) const
 Get receive cap with the given index as generic (void) type.
 

Additional Inherited Members

- Public Types inherited from L4::Ipc_svr::Server_iface
typedef L4::Type_info::Demand Demand
 Data type expressing server-side demand for receive buffers.
 
- Protected Member Functions inherited from L4::Server< LOOP_HOOKS >
l4_msgtag_t reply_n_wait (l4_msgtag_t reply, l4_umword_t *p, l4_utcb_t *)
 Internal implementation for reply and wait.
 
- Protected Member Functions inherited from L4::Ipc_svr::Br_manager_no_buffers
unsigned first_free_br () const
 Returns 1 as first free buffer.
 
void setup_wait (l4_utcb_t *utcb, L4::Ipc_svr::Reply_mode)
 Setup wait function for the server loop (Server<>).
 

Detailed Description

template<typename LOOP_HOOKS = L4::Ipc_svr::Default_loop_hooks>
class L4Re::Util::Registry_server< LOOP_HOOKS >

A server loop object which has a Object_registry included.

Examples
examples/clntsrv/src/server.cc, examples/libs/l4re/c++/shared_ds/ds_srv.cc, and examples/libs/l4re/streammap/server.cc.

Definition at line 296 of file object_registry.

Constructor & Destructor Documentation

◆ Registry_server() [1/3]

template<typename LOOP_HOOKS = L4::Ipc_svr::Default_loop_hooks>
L4Re::Util::Registry_server< LOOP_HOOKS >::Registry_server ( )
inline

Create a new server loop object for the main thread of the task.

Precondition
Must be called from the main thread or behaviour is undefined.

Definition at line 308 of file object_registry.

◆ Registry_server() [2/3]

template<typename LOOP_HOOKS = L4::Ipc_svr::Default_loop_hooks>
L4Re::Util::Registry_server< LOOP_HOOKS >::Registry_server ( l4_utcb_t ,
L4::Cap< L4::Thread server,
L4::Cap< L4::Factory factory 
)
inline

Create a new server loop object for an arbitrary thread and factory.

Parameters
serverCapability to thread running the server loop.
factoryCapability to factory object used to create new IPC gates.
Deprecated:
Note that this variant of the constructor is deprecated, please do not supply the UTCB pointer, it's not used.

Definition at line 320 of file object_registry.

◆ Registry_server() [3/3]

template<typename LOOP_HOOKS = L4::Ipc_svr::Default_loop_hooks>
L4Re::Util::Registry_server< LOOP_HOOKS >::Registry_server ( L4::Cap< L4::Thread server,
L4::Cap< L4::Factory factory 
)
inline

Create a new server loop object for an arbitrary thread and factory.

Parameters
serverCapability to thread running the server loop.
factoryCapability to factory object used to create new IPC gates.

Definition at line 331 of file object_registry.

Member Function Documentation

◆ loop()

template<typename LOOP_HOOKS = L4::Ipc_svr::Default_loop_hooks>
void L4_NORETURN L4Re::Util::Registry_server< LOOP_HOOKS >::loop ( l4_utcb_t utcb = l4_utcb())
inline

Start the server loop.

Parameters
utcbThe UTCB of the thread running the server loop, defaults to l4_utcb().
Examples
examples/clntsrv/src/server.cc, and examples/libs/l4re/streammap/server.cc.

Definition at line 347 of file object_registry.

◆ loop_dbg()

template<typename LOOP_HOOKS = L4::Ipc_svr::Default_loop_hooks>
template<typename Printer >
void L4_NORETURN L4Re::Util::Registry_server< LOOP_HOOKS >::loop_dbg ( Printer  printer,
l4_utcb_t utcb = l4_utcb() 
)
inline

Start the server loop with error printing.

Template Parameters
PrinterThe printer type.
Parameters
printerThe printer object on which printf() is called.
utcbThe UTCB of the thread running the server loop, defaults to l4_utcb().

Definition at line 359 of file object_registry.


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