L4Re - L4 Runtime Environment
|
The C++ IPC gate interface. More...
Public Member Functions | |
l4_msgtag_t | bind_thread (Ipc::Cap< Thread > t, l4_umword_t label) |
Bind a thread to an IPC gate. More... | |
l4_msgtag_t | get_infos (l4_umword_t *label) |
Get information about the IPC-gate. 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 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_idx_t | cap () const throw () |
Return capability selector. More... | |
![]() | |
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 transfered 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::bind_thread | ( | Ipc::Cap< Thread > | t, |
l4_umword_t | label | ||
) |
Bind a thread to an IPC gate.
t | Thread object that shall be bound to this IPC gate. |
label | Label to assign to this IPC gate. The two least significant bits should usually be set to zero. |
L4_EOK | Operation successful. |
-L4_EINVAL | t is not a thread object or other arguments were malformed. |
-L4_EPERM | t is missing L4_CAP_FPAGE_S right. |
Referenced by L4Re::Util::Object_registry::Object_registry().
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. |