![]() |
L4Re Operating System Framework
Interface and Usage Documentation
|
Interface for kernel objects that allow to receive IPC from them. More...
#include <rcv_endpoint>
Public Member Functions | |
l4_msgtag_t | bind_thread (Ipc::Cap< Thread > t, l4_umword_t label) |
Bind the IPC receive endpoint to a thread. | |
l4_msgtag_t | bind_snd_destination (Cap< Snd_destination > snd_dst, l4_umword_t label) |
Bind a send destination (a thread or thread group) to an IPC receive endpoint. | |
![]() | |
l4_msgtag_t | dec_refcnt (l4_mword_t diff, l4_utcb_t *utcb=l4_utcb()) |
Decrement the in kernel reference counter for the object. | |
Additional Inherited Members | |
![]() | |
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 Base::__Iface_list > | __Iface_list |
The list of all RPC interfaces provided directly or through inheritance. | |
![]() | |
L4::Cap< Class > | c () const noexcept |
Get the capability to ourselves. | |
![]() | |
l4_cap_idx_t | cap () const noexcept |
Return capability selector. | |
![]() | |
static void | __check_protocols__ () noexcept |
Helper to check for protocol conflicts. | |
Interface for kernel objects that allow to receive IPC from them.
Such an object is for example an Ipc_gate (with server rights) or an Irq. Those objects can be bound to a thread that shall receive IPC from these objects via bind_thread() or bind_snd_destination().
Definition at line 30 of file rcv_endpoint.
|
inline |
Bind a send destination (a thread or thread group) to an IPC receive endpoint.
snd_dst | Snd_destination object (a thread or thread group) that shall be bound to this receive endpoint. See bind_thread() and bind_snd_destination() for binding a thread or thread group object. |
label | Label to assign to this receive endpoint. For IPC gates, the two least significant bits must be set to zero. |
L4_EOK | Operation successful. |
-L4_EINVAL | snd_dst is not a thread or thread group object or other arguments were malformed. |
-L4_EPERM | No L4_CAP_FPAGE_S right on snd_dst or the capability used to invoke this operation. |
The specified label
is passed to the receiver of the incoming IPC. It is possible to re-bind a receive endpoint to the same or a different thread or thread group. In this case, IPC already in flight will be delivered with the old label to the previously bound thread or thread group unless L4::Thread::modify_senders() is used to change these labels.
Definition at line 101 of file rcv_endpoint.
References L4::Cap_base::cap(), and l4_rcv_ep_bind_snd_destination().
l4_msgtag_t L4::Rcv_endpoint::bind_thread | ( | Ipc::Cap< Thread > | t, |
l4_umword_t | label | ||
) |
Bind the IPC receive endpoint to a thread.
t | Thread object this receive endpoint shall be bound to. |
label | Label to assign to this receive endpoint. For IPC gates, the two least significant bits must be set to zero. |
L4_EOK | Operation successful. |
-L4_EINVAL | t is not a thread object or other arguments were malformed. |
-L4_EPERM | Insufficient permissions; see precondition. |
t
both must have the permission L4_CAP_FPAGE_S.The specified label
is passed to the receiver of the incoming IPC. It is possible to re-bind a receive endpoint to the same or a different thread. In this case, IPC already in flight will be delivered with the old label to the previously bound thread unless L4::Thread::modify_senders() is used to change these labels.