L4Re - L4 Runtime Environment
L4 Namespace Reference

L4 low-level kernel interface. More...

Namespaces

 Ipc
 IPC related functionality.
 
 Ipc_svr
 Helper classes for L4::Server instantiation.
 
 Typeid
 Definition of interface data-type helpers.
 
 Types
 L4 basic type helpers for C++.
 

Data Structures

class  Alloc_list
 A simple list-based allocator. More...
 
class  Base_exception
 Base class for all exceptions, thrown by the L4Re framework. More...
 
class  Basic_registry
 This registry returns the corresponding server object based on the label of an Ipc_gate. More...
 
class  Bounds_error
 Access out of bounds. More...
 
class  Cap
 C++ interface for capabilities. More...
 
class  Cap_base
 Base class for all kinds of capabilities. More...
 
class  Com_error
 Error conditions during IPC. More...
 
class  Debugger
 C++ debugger interface. More...
 
class  Element_already_exists
 Exception for duplicate element insertions. More...
 
class  Element_not_found
 Exception for a failed lookup (element not found). More...
 
class  Exception_tracer
 Back-trace support for exceptions. More...
 
class  Factory
 C++ Factory interface to create kernel objects. More...
 
class  Icu
 C++ Icu interface. More...
 
class  Invalid_capability
 Indicates that an invalid object was invoked. More...
 
class  Io_pager
 Io_pager interface. More...
 
class  Iommu
 Interface for IO-MMUs used for DMA remapping. More...
 
class  IOModifier
 Modifier class for the IO stream. More...
 
class  Ipc_gate
 The C++ IPC gate interface. More...
 
class  Irq
 C++ Irq interface. More...
 
class  Irq_eoi
 Interface for sending an acknowledge message to an object. More...
 
struct  Irq_handler_object
 Server object base class for handling IRQ messages. More...
 
struct  Irq_mux
 IRQ multiplexer for shared IRQs. More...
 
class  Kobject
 Base class for all kinds of kernel objects and remote objects, referenced by capabilities. More...
 
class  Kobject_2t
 Helper class to create an L4Re interface class that is derived from two base classes (see L4::Kobject_t). More...
 
struct  Kobject_3t
 Helper class to create an L4Re interface class that is derived from three base classes (see L4::Kobject_t). More...
 
struct  Kobject_demand
 Get the combined server-side resource requirements for all type T... More...
 
class  Kobject_t
 Helper class to create an L4Re interface class that is derived from a single base class. More...
 
struct  Kobject_typeid
 Meta object for handling access to type information of Kobjects. More...
 
struct  Kobject_typeid< void >
 Minimalistic ID for void interface. More...
 
struct  Kobject_x
 Generic Kobject inheritance template. More...
 
class  Meta
 Meta interface that shall be implemented by each L4Re object and gives access to the dynamic type information for L4Re objects. More...
 
class  Out_of_memory
 Exception signalling insufficient memory. More...
 
class  Pager
 Pager interface including the Io_pager interface. More...
 
class  Platform_control
 L4 C++ interface for controlling platform-wide properties. More...
 
class  Poll_timeout_kipclock
 A polling timeout based on the L4Re clock. More...
 
struct  Proto_t
 Data type for defining protocol numbers. More...
 
class  Rcv_endpoint
 Interface for kernel objects that allow to receive IPC from them. More...
 
class  Registry_iface
 Abstract interface for object registries. More...
 
class  Runtime_error
 Exception for an abstract runtime error. More...
 
class  Scheduler
 C++ interface of the Scheduler kernel object. More...
 
struct  Semaphore
 Kernel-provided semaphore object. More...
 
class  Server
 Basic server loop for handling client requests. More...
 
class  Server_object
 Abstract server object to be used with L4::Server and L4::Basic_registry. More...
 
struct  Server_object_t
 Base class (template) for server implementing server objects. More...
 
struct  Server_object_x
 Helper class to implement p_dispatch based server objects. More...
 
class  Smart_cap
 Smart capability class. More...
 
class  String
 A null-terminated string container class. More...
 
class  Task
 C++ interface of the Task kernel object. More...
 
class  Thread
 C++ L4 kernel thread interface. More...
 
struct  Triggerable
 Interface that allows an object to be triggered by some source. More...
 
struct  Type_info
 Dynamic Type Information for L4Re Interfaces. More...
 
class  Unknown_error
 Exception for an unknown condition. More...
 
class  Vcon
 C++ L4 Vcon interface. More...
 
class  Vm
 Virtual machine. More...
 

Typedefs

typedef int Opcode
 Data type for RPC opcodes.
 

Enumerations

enum  { PROTO_ANY = 0, PROTO_EMPTY = -19 }
 

Functions

template<typename T >
Type_info const * kobject_typeid ()
 Get the L4::Type_info for the L4Re interface given in T. More...
 
template<typename T , typename F >
Cap< T > cap_dynamic_cast (Cap< F > const &c) throw ()
 dynamic_cast for capabilities. More...
 
template<typename T , typename F >
Cap< T > cap_cast (Cap< F > const &c) throw ()
 static_cast for capabilities. More...
 
template<typename T , typename F >
Cap< T > cap_reinterpret_cast (Cap< F > const &c) throw ()
 reinterpret_cast for capabilities. More...
 
template<typename T , typename F , typename SMART >
Smart_cap< T, SMART > cap_cast (Smart_cap< F, SMART > const &c) throw ()
 static_cast for (smart) capabilities. More...
 
template<typename T , typename F , typename SMART >
Smart_cap< T, SMART > cap_reinterpret_cast (Smart_cap< F, SMART > const &c) throw ()
 reinterpret_cast for (smart) capabilities. More...
 
void throw_ipc_exception (L4::Cap< void > const &o, l4_msgtag_t const &err, l4_utcb_t *utcb)
 Throw an L4 IPC error as exception. More...
 
void throw_ipc_exception (void const *o, l4_msgtag_t const &err, l4_utcb_t *utcb)
 Throw an L4 IPC error as exception. More...
 

Variables

IOModifier const hex
 Modifies the stream to print numbers as hexadecimal values.
 
IOModifier const dec
 Modifies the stream to print numbers as decimal values.
 
BasicOStream cout
 Standard output stream.
 
BasicOStream cerr
 Standard error stream.
 

Detailed Description

L4 low-level kernel interface.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
PROTO_ANY 

Default protocol used by Kobject_t and Kobject_x.

PROTO_EMPTY 

Empty protocol for empty APIs.

Definition at line 55 of file __typeinfo.h.

Function Documentation

◆ cap_cast() [1/2]

template<typename T , typename F , typename SMART >
Smart_cap<T, SMART> L4::cap_cast ( Smart_cap< F, SMART > const &  c)
throw (
)
inline

static_cast for (smart) capabilities.

Template Parameters
TType to cast the capability to.
F(implicit) Type of the passed capability.
SMART(implicit) Class implementing the Smart_cap interface.
Parameters
cCapability to be casted.
Returns
A smart capability with new type T.

Definition at line 203 of file smart_capability.

◆ cap_cast() [2/2]

template<typename T , typename F >
Cap<T> L4::cap_cast ( Cap< F > const &  c)
throw (
)
inline

static_cast for capabilities.

Template Parameters
TThe target type of the capability
FThe source type (and is usually implicitly set)
Parameters
cThe source capability that shall be casted
Returns
A capability typed to the interface T.

The use of this cast operator is similar to the static_cast<>() for C++ pointers. It does the same type checking and adjustments like C++ does on pointers.

Example code:

L4::Cap<L4::Kobject> obj = ... ;
L4::Cap<L4::Icu> icu = L4::cap_cast<L4::Icu>(obj);

Definition at line 377 of file capability.h.

References L4::Cap_base::cap().

+ Here is the call graph for this function:

◆ cap_dynamic_cast()

template<typename T , typename F >
Cap<T> L4::cap_dynamic_cast ( Cap< F > const &  c)
throw (
)
inline

dynamic_cast for capabilities.

Template Parameters
TThe target type of the capability.
FThe source type (is usually implicitly set).
Parameters
cThe source capability that shall be casted.
Return values
Cap<T>Capability of target interface T.
L4_INVALID_CAPc does not support the target interface T or the L4::Meta interface.

The use of this cast operator is similar to the dynamic_cast<>() for C++ pointers. It also induces overhead, because it uses the meta interface (L4::Meta) to do runtime type checking.

Example code:

L4::Cap<L4::Kobject> obj = ... ;
L4::Cap<L4::Icu> icu = L4::cap_dynamic_cast<L4::Icu>(obj);

Definition at line 119 of file capability.

◆ cap_reinterpret_cast() [1/2]

template<typename T , typename F , typename SMART >
Smart_cap<T, SMART> L4::cap_reinterpret_cast ( Smart_cap< F, SMART > const &  c)
throw (
)
inline

reinterpret_cast for (smart) capabilities.

Template Parameters
TType to cast the capability to.
F(implicit) Type of the passed capability.
SMART(implicit) Class implementing the Smart_cap interface.
Parameters
cCapability to be casted.
Returns
A smart capability with new type T.

Definition at line 222 of file smart_capability.

◆ cap_reinterpret_cast() [2/2]

template<typename T , typename F >
Cap<T> L4::cap_reinterpret_cast ( Cap< F > const &  c)
throw (
)
inline

reinterpret_cast for capabilities.

Template Parameters
TThe target type of the capability
FThe source type (and is usually implicitly set)
Parameters
cThe source capability that shall be casted
Returns
A capability typed to the interface T.

The use of this cast operator is similar to the reinterpret_cast<>() for C++ pointers. It does not do any type checking or type adjustment.

Example code:

L4::Cap<L4::Kobject> obj = ... ;
L4::Cap<L4::Icu> icu = L4::cap_reinterpret_cast<L4::Icu>(obj);

Definition at line 408 of file capability.h.

References L4::Cap_base::cap().

+ Here is the call graph for this function:

◆ throw_ipc_exception() [1/2]

void L4::throw_ipc_exception ( L4::Cap< void > const &  o,
l4_msgtag_t const &  err,
l4_utcb_t utcb 
)
inline

Throw an L4 IPC error as exception.

Parameters
oThe client side object, for which the IPC was invoked.
errThe IPC result code (error code).
utcbUTCB to be used for this operation, usually the UTCB of the calling thread.

Definition at line 44 of file ipc_helper.

◆ throw_ipc_exception() [2/2]

void L4::throw_ipc_exception ( void const *  o,
l4_msgtag_t const &  err,
l4_utcb_t utcb 
)
inline

Throw an L4 IPC error as exception.

Parameters
oThe client side object, for which the IPC was invoked.
errThe IPC result code (error code).
utcbUTCB to be used for this operation, usually the UTCB of the calling thread.

Definition at line 61 of file ipc_helper.