L4Re - L4 Runtime Environment
|
The C++ IPC gate interface. More...
Public Member Functions | |
l4_msgtag_t | get_infos (l4_umword_t *label) |
Get information about the IPC-gate. More... | |
![]() | |
l4_msgtag_t | bind_thread (Ipc::Opt< Ipc::Cap< Thread > > t, l4_umword_t label) |
Bind a thread to an IPC receive endpoint. More... | |
![]() | |
l4_msgtag_t | dec_refcnt (l4_mword_t diff, l4_utcb_t *utcb=l4_utcb()) |
Decrement the in kernel reference counter for the object. More... | |
Additional Inherited Members | |
![]() | |
typedef Ipc_gate | Class |
The target interface type (inheriting from Kobject_t) | |
typedef Typeid::Iface< PROTO, Ipc_gate > | __Iface |
The interface description for the derived class. | |
typedef Typeid::Merge_list< Typeid::Iface_list< __Iface >, typename Rcv_endpoint ::__Iface_list > | __Iface_list |
The list of all RPC interfaces provided directly or through inheritance. | |
![]() | |
typedef Rcv_endpoint | Class |
The target interface type (inheriting from Kobject_t) | |
typedef Typeid::Iface< PROTO, Rcv_endpoint > | __Iface |
The interface description for the derived class. | |
typedef Typeid::Merge_list< Typeid::Iface_list< __Iface >, typename Kobject ::__Iface_list > | __Iface_list |
The list of all RPC interfaces provided directly or through inheritance. | |
![]() | |
L4::Cap< Class > | c () const |
Get the capability to ourselves. | |
![]() | |
L4::Cap< Class > | c () const |
Get the capability to ourselves. | |
![]() | |
l4_cap_idx_t | cap () const throw () |
Return capability selector. More... | |
![]() | |
static void | __check_protocols__ () |
Helper to check for protocol conflicts. | |
![]() | |
static void | __check_protocols__ () |
Helper to check for protocol conflicts. | |
The C++ IPC gate interface.
IPC gates are used to create secure communication channels between protection domains. An IPC gate can be created using the L4::Factory interface. L4::Ipc_gate::bind_thread() binds an L4::Thread as the receiver of all messages to an IPC gate.
The bind_thread() call allows to assign each IPC gate a kernel protected, machine-word sized payload called a label. It securely identifies the gate. The two least significant bits of the label are ORed with the L4_CAP_FPAGE_S and L4_CAP_FPAGE_W bits stored in the capability when transferred to the receiver. This means the label should usually have its two least significant bits set to zero. The label is only visible in the L4::Task which is running the thread the IPC gate was bound to and cannot be altered by the sender.
For the C interface refer to the C IPC-Gate API.
l4_msgtag_t L4::Ipc_gate::get_infos | ( | l4_umword_t * | label | ) |
Get information about the IPC-gate.
[out] | label | The label of the IPC gate is returned here. |