Loading...
Searching...
No Matches
L4::Cap< T > Class Template Reference

C++ interface for capabilities. More...

`#include <capability.h>`

Inheritance diagram for L4::Cap< T >:
Collaboration diagram for L4::Cap< T >:

## Public Member Functions

template<typename O>
| Cap (Cap< O > const &o) noexcept
| Create a copy from o, supporting implicit type casting.
| Cap (Cap_type cap) noexcept
| Constructor to create an invalid capability selector.
| Cap (l4_default_caps_t cap) noexcept
| Initialize capability with one of the default capability selectors.
| Cap (l4_cap_idx_t idx=L4_INVALID_CAP) noexcept
| Initialize capability, defaults to the invalid capability selector.
| Cap (No_init_type) noexcept
| Create an uninitialized cap selector.
Cap | move (Cap const &src) const
| Move a capability to this cap slot.
Cap | copy (Cap const &src) const
| Copy a capability to this cap slot.
T * | operator-> () const noexcept
| Member access of a T.
Public Member Functions inherited from L4::Cap_base
l4_cap_idx_t | cap () const noexcept
| Return capability selector.
bool | is_valid () const noexcept
| Test whether the capability is a valid capability index (i.e., not L4_INVALID_CAP).
int | invalid_cap_error () const noexcept
| Return the transported error code in an invalid capability index.
l4_fpage_t | fpage (unsigned rights=L4_CAP_FPAGE_RWS) const noexcept
| Return flexpage for the capability.
l4_umword_t | snd_base (unsigned grant=L4_MAP_ITEM_MAP, l4_cap_idx_t base=L4_INVALID_CAP) const noexcept
| Return send base.
bool | operator== (Cap_base const &o) const noexcept
| Test if two capabilities are equal.
bool | operator!= (Cap_base const &o) const noexcept
| Test if two capabilities are not equal.
l4_msgtag_t | validate (l4_utcb_t *u=l4_utcb()) const noexcept
| Check whether a capability is present (refers to an object).
l4_msgtag_t | validate (Cap< Task > task, l4_utcb_t *u=l4_utcb()) const noexcept
| Check whether a capability is present (refers to an object).
void | invalidate () noexcept
| Set this capability to invalid (L4_INVALID_CAP).

## Static Public Member Functions

template<typename From>
static void | check_convertible_from () noexcept
| Perform the type conversion that needs to compile in order for a capability of type From to be convertible to one of type T.
template<typename From>
static void | check_castable_from () noexcept
| Perform the type conversion that needs to compile in order for a capability of type From te be castable (via the correct cap_cast) to one of type T.

## Friends

class | L4::Kobject

## Additional Inherited Members

Public Types inherited from L4::Cap_base
enum | No_init_type { No_init }
| Special value for uninitialized capability objects. More...
enum | Cap_type { Invalid = L4_INVALID_CAP }
| Invalid capability type. More...
Protected Member Functions inherited from L4::Cap_base
| Cap_base (l4_cap_idx_t c) noexcept
| Generate a capability from its C representation.
| Cap_base (Cap_type cap) noexcept
| Constructor to create an invalid capability.
| Cap_base (l4_default_caps_t cap) noexcept
| Initialize capability with one of the default capabilities.
| Cap_base () noexcept
| Create an uninitialized instance.
void | move (Cap_base const &src) const
| Replace this capability with the contents of src.
void | copy (Cap_base const &src) const
| Copy a capability.
Protected Attributes inherited from L4::Cap_base
l4_cap_idx_t | _c
| The C representation of a capability selector.

## Detailed Description

template<typename T>
class L4::Cap< T >

C++ interface for capabilities.

Template Parameters

  T | Type of the object the capability points to.

The C++ version of a capability is comparable to a pointer, in fact it is a kind of smart pointer for our kernel objects and the objects derived from the kernel objects (L4::Kobject).

Add

    #include <l4/sys/capability>

to your code to use the capability interface.

Examples
  examples/clntsrv/src/client.cc, examples/libs/l4re/c++/mem_alloc/ma+rm.cc, examples/libs/l4re/c++/shared_ds/ds_clnt.cc, examples/libs/l4re/c++/shared_ds/ds_srv.cc, examples/libs/l4re/streammap/client.cc, and examples/sys/migrate/thread_migrate.cc.

Definition at line 223 of file capability.h.

## Constructor & Destructor Documentation

## Cap() [1/4]

template<typename T>
template<typename O>

L4::Cap< T >::Cap | ( | Cap< O > const & | o | ) |

inlinenoexcept

Create a copy from o, supporting implicit type casting.

Parameters

  o | The source selector that shall be copied (and casted).

Definition at line 275 of file capability.h.

## Cap() [2/4]

template<typename T>

L4::Cap< T >::Cap | ( | Cap_type | cap | ) |

inlinenoexcept

Constructor to create an invalid capability selector.

Parameters

  cap | Capability selector.

Definition at line 282 of file capability.h.

## Cap() [3/4]

template<typename T>

L4::Cap< T >::Cap | ( | l4_default_caps_t | cap | ) |

inlinenoexcept

Initialize capability with one of the default capability selectors.

Parameters

  cap | Capability selector.

Definition at line 288 of file capability.h.

## Cap() [4/4]

template<typename T>

L4::Cap< T >::Cap | ( | l4_cap_idx_t | idx = L4_INVALID_CAP | ) |

inlineexplicitnoexcept

Initialize capability, defaults to the invalid capability selector.

Parameters

  idx | Capability selector.

Definition at line 294 of file capability.h.

## Member Function Documentation

## check_castable_from()

template<typename T>
template<typename From>

void L4::Cap< T >::check_castable_from | ( |  | ) |

inlinestaticnoexcept

Perform the type conversion that needs to compile in order for a capability of type From te be castable (via the correct cap_cast) to one of type T.

Template Parameters

  From | Type to convert from

Definition at line 264 of file capability.h.

## check_convertible_from()

template<typename T>
template<typename From>

void L4::Cap< T >::check_convertible_from | ( |  | ) |

inlinestaticnoexcept

Perform the type conversion that needs to compile in order for a capability of type From to be convertible to one of type T.

Template Parameters

  From | Type to convert from

Definition at line 251 of file capability.h.

## copy()

template<typename T>

Cap L4::Cap< T >::copy | ( | Cap< T > const & | src | ) | const

inline

Copy a capability to this cap slot.

Parameters

  src | the source capability slot.

Definition at line 317 of file capability.h.

## move()

template<typename T>

Cap L4::Cap< T >::move | ( | Cap< T > const & | src | ) | const

inline

Move a capability to this cap slot.

Parameters

  src | the source capability slot.

After this operation the source slot is no longer valid.

Definition at line 307 of file capability.h.

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

- l4/sys/cxx/capability.h