|
| struct | Type_info |
| | Dynamic Type Information for L4Re Interfaces. 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...
|
| class | Kobject_t |
| | Helper class to create an L4Re interface class that is derived from a single base class. 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...
|
| struct | Proto_t |
| | Data type for defining protocol numbers. More...
|
| struct | Kobject_x |
| | Generic Kobject inheritance template. More...
|
| class | Vm |
| | Virtual machine host address space. More...
|
| class | Arm_smccc |
| | Wrapper for function calls that follow the ARM SMC/HVC calling convention. More...
|
| class | Cap |
| | C++ interface for capabilities. More...
|
| class | Cap_base |
| | Base class for all kinds of capabilities. More...
|
| struct | Epiface |
| | Base class for interface implementations. More...
|
| struct | Epiface_t0 |
| | Epiface mixin for generic Kobject-based interfaces. More...
|
| struct | Irqep_t |
| | Epiface implementation for interrupt handlers. More...
|
| class | Registry_iface |
| | Abstract interface for object registries. More...
|
| struct | Epiface_t |
| | Epiface implementation for Kobject-based interface implementations. More...
|
| class | Basic_registry |
| | This registry returns the corresponding server object based on the label of an Ipc_gate. More...
|
| class | Server |
| | Basic server loop for handling client requests. More...
|
| class | Debugger |
| | C++ kernel debugger API. More...
|
| class | Exception |
| | Exception interface. More...
|
| class | Factory |
| | C++ Factory interface, see Factory for the C interface. More...
|
| class | Iommu |
| | Interface for IO-MMUs used for DMA remapping. More...
|
| class | Ipc_gate |
| | The C++ IPC gate interface, see IPC-Gate API for the C interface. More...
|
| class | Irq_eoi |
| | Interface for sending an unmask message to an object. More...
|
| struct | Triggerable |
| | Interface that allows an object to be triggered by some source. More...
|
| class | Irq |
| | C++ Irq interface, see IRQs for the C interface. More...
|
| class | Icu |
| | C++ Icu interface, see Interrupt controller for the C interface. More...
|
| class | Kobject |
| | Base class for all kinds of kernel objects and remote objects, referenced by capabilities. 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...
|
| | Io_pager interface. More...
|
| | Pager interface including the Io_pager interface. More...
|
| class | Platform_control |
| | L4 C++ interface for controlling platform-wide properties, see Platform Control C API for the C interface. More...
|
| class | Rcv_endpoint |
| | Interface for kernel objects that allow to receive IPC from them. More...
|
| class | Scheduler |
| | C++ interface of the Scheduler kernel object, see Scheduler for the C interface. More...
|
| struct | Semaphore |
| | C++ Kernel-provided semaphore interface, see Kernel-provided semaphore for the C interface. More...
|
| class | Smart_cap |
| | Smart capability class. More...
|
| class | Task |
| | C++ interface of the Task kernel object, see Task for the C interface. More...
|
| class | Thread |
| | C++ L4 kernel thread interface, see Thread for the C interface. More...
|
| class | Thread_group |
| | C++ L4 kernel thread group interface, see Thread groups for the C interface. More...
|
| class | Vcon |
| | C++ L4 Vcon interface, see Virtual Console for the C interface. More...
|
| class | Poll_timeout_kipclock |
| | A polling timeout based on the L4Re clock. More...
|
| class | Alloc_list |
| | A simple list-based allocator. More...
|
| class | IOModifier |
| | Modifier class for the IO stream. More...
|
| class | Exception_tracer |
| | Back-trace support for exceptions. More...
|
| class | Base_exception |
| | Base class for all exceptions, thrown by the L4Re framework. More...
|
| class | Runtime_error |
| | Exception for an abstract runtime error. More...
|
| class | Out_of_memory |
| | Exception signalling insufficient memory. More...
|
| class | Element_already_exists |
| | Exception for duplicate element insertions. More...
|
| class | Unknown_error |
| | Exception for an unknown condition. More...
|
| class | Element_not_found |
| | Exception for a failed lookup (element not found). More...
|
| class | Invalid_capability |
| | Indicates that an invalid object was invoked. More...
|
| class | Com_error |
| | Error conditions during IPC. More...
|
| class | Bounds_error |
| | Access out of bounds. 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...
|
| struct | Irq_handler_object |
| | Server object base class for handling IRQ messages. More...
|
| class | Lock_guard |
| | Basic lock guard implementation that prevents forgotten unlocks on exit paths from a method or a block of code. More...
|
| class | String |
| | A null-terminated string container class. More...
|
| class | Poll_timeout_counter |
| | Evaluate an expression for a maximum number of times. More...
|
| class | Uart_apb |
| | Driver for the Advanced Peripheral Bus (APB) UART from the Cortex-M System Design Kit (CMSDK). More...
|
| class | Uart |
| | Uart driver abstraction. More...
|
|
| template<typename T> |
| Type_info const * | kobject_typeid () noexcept |
| | Get the L4::Type_info for the L4Re interface given in T.
|
| template<typename T, typename F> |
| Cap< T > | cap_dynamic_cast (Cap< F > const &c) noexcept |
| | dynamic_cast for capabilities.
|
| template<typename T, typename F> |
| Cap< T > | cap_cast (Cap< F > const &c) noexcept |
| | static_cast for capabilities.
|
| template<typename T, typename F> |
| Cap< T > | cap_reinterpret_cast (Cap< F > const &c) noexcept |
| | reinterpret_cast for capabilities.
|
| template<typename T> |
| constexpr T | trunc_order (T val, unsigned char order) |
| | Round a value down so the given number of lsb is zero.
|
| template<typename T> |
| constexpr T | round_order (T val, unsigned char order) |
| | Round a value up so the given number of lsb is zero.
|
| template<typename T, typename F, typename SMART> |
| Smart_cap< T, SMART > | cap_cast (Smart_cap< F, SMART > const &c) noexcept |
| | static_cast for (smart) capabilities.
|
| template<typename T, typename F, typename SMART> |
| Smart_cap< T, SMART > | cap_reinterpret_cast (Smart_cap< F, SMART > const &c) noexcept |
| | reinterpret_cast for (smart) capabilities.
|
| 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.
|
| void | throw_ipc_exception (void const *o, l4_msgtag_t const &err, l4_utcb_t *utcb) |
| | Throw an L4 IPC error as exception.
|
L4 low-level kernel interface.
template<typename T, typename F>
| Cap< T > L4::cap_cast |
( |
Cap< F > const & | c | ) |
|
|
inlinenoexcept |
static_cast for capabilities.
- Template Parameters
-
| T | The target type of the capability |
| F | The source type (and is usually implicitly set) |
- Parameters
-
| c | The 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 416 of file capability.h.
Referenced by L4Re::Cap_alloc::alloc(), L4Re::Util::_Cap_alloc::alloc(), L4Re::Util::Counting_cap_alloc< COUNTERTYPE, Dbg >::alloc(), L4virtio::Svr::Virtio_gpio< Request_handler, Epiface >::device_notify_irq(), L4virtio::Svr::Virtio_i2c< Request_handler, Epiface >::device_notify_irq(), L4virtio::Svr::Virtio_rng< Rnd_state, Epiface >::device_notify_irq(), Block_device::Scheduler_base< DEV >::get_cost(), L4::Epiface_t0< RPC_IFACE, BASE >::obj_cap(), L4::Irqep_t< Derived, BASE, bool >::obj_cap(), and L4::Ipc_svr::Server_iface::rcv_cap().
template<typename T, typename F>
| Cap< T > L4::cap_dynamic_cast |
( |
Cap< F > const & | c | ) |
|
|
inlinenoexcept |
dynamic_cast for capabilities.
- Template Parameters
-
| T | The target type of the capability. |
| F | The source type (is usually implicitly set). |
- Parameters
-
| c | The source capability that shall be casted. |
- Return values
-
| Cap<T> | Capability of target interface T. |
| L4_INVALID_CAP | c 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 116 of file capability.
References cap_reinterpret_cast(), L4::Cap_base::Invalid, kobject_typeid(), and l4_error().