L4Re Operating System Framework
Interface and Usage Documentation
Loading...
Searching...
No Matches
L4::Rcv_endpoint Class Reference

Interface for kernel objects that allow to receive IPC from them. More...

#include <rcv_endpoint>

+ Inheritance diagram for L4::Rcv_endpoint:
+ Collaboration diagram for L4::Rcv_endpoint:

Public Member Functions

l4_msgtag_t bind_thread (Ipc::Cap< Thread > t, l4_umword_t label)
 Bind a thread to an IPC receive endpoint.
 
- Public Member Functions inherited from L4::Kobject
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

- Protected Types inherited from L4::Kobject_t< Rcv_endpoint, Kobject, L4_PROTO_KOBJECT, Type_info::Demand_t< 1 > >
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.
 
- Protected Member Functions inherited from L4::Kobject_t< Rcv_endpoint, Kobject, L4_PROTO_KOBJECT, Type_info::Demand_t< 1 > >
L4::Cap< Classc () const noexcept
 Get the capability to ourselves.
 
- Protected Member Functions inherited from L4::Kobject
l4_cap_idx_t cap () const noexcept
 Return capability selector.
 
- Static Protected Member Functions inherited from L4::Kobject_t< Rcv_endpoint, Kobject, L4_PROTO_KOBJECT, Type_info::Demand_t< 1 > >
static void __check_protocols__ () noexcept
 Helper to check for protocol conflicts.
 

Detailed Description

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 allow to bind a thread that shall receive IPC from these object via bind_thread().

Definition at line 40 of file rcv_endpoint.

Member Function Documentation

◆ bind_thread()

l4_msgtag_t L4::Rcv_endpoint::bind_thread ( Ipc::Cap< Thread t,
l4_umword_t  label 
)

Bind a thread to an IPC receive endpoint.

Parameters
tThread object that shall be bound to this receive endpoint.
labelLabel to assign to this receive endpoint. The two least significant bits should usually be set to zero.
Returns
Syscall return tag containing one of the following return codes.
Return values
L4_EOKOperation successful.
-L4_EINVALt is not a thread object or other arguments were malformed.
-L4_EPERMNo L4_CAP_FPAGE_S right on t or the capability used to invoke this operation.
Precondition
If this operation is invoked using an IPC gate capability without the L4_FPAGE_C_IPCGATE_SVR right, the kernel will not perform the operation. Instead, the underlying IPC message will be forwarded to the thread bound to the IPC gate, blocking the caller if no thread is bound yet.

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.


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