297 lines
26 KiB
HTML
297 lines
26 KiB
HTML
<!-- HTML header for doxygen 1.9.1-->
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
|
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
|
<meta name="generator" content="Doxygen 1.15.0"/>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
<title>L4Re Operating System Framework: L4::Rcv_endpoint Class Reference</title>
|
|
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="jquery.js"></script>
|
|
<script type="text/javascript" src="dynsections.js"></script>
|
|
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="navtreedata.js"></script>
|
|
<script type="text/javascript" src="navtree.js"></script>
|
|
<script type="text/javascript" src="cookie.js"></script>
|
|
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="search/searchdata.js"></script>
|
|
<script type="text/javascript" src="search/search.js"></script>
|
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
|
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
|
|
<link href="l4re-awesome.css" rel="stylesheet" type="text/css"/>
|
|
</head>
|
|
<body>
|
|
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
|
<div id="titlearea">
|
|
<table cellspacing="0" cellpadding="0">
|
|
<tbody>
|
|
<tr style="height: 56px;">
|
|
<td id="projectlogo"><img alt="Logo" src="L4Re_rgb_logo_quer_hg_h55.png"/></td>
|
|
<td id="projectalign" style="padding-left: 0.5em;">
|
|
<div id="projectname">L4Re Operating System Framework
|
|
</div>
|
|
<div id="projectbrief">Interface and Usage Documentation</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<!-- end header part -->
|
|
<!-- Generated by Doxygen 1.15.0 -->
|
|
<script type="text/javascript">
|
|
var searchBox = new SearchBox("searchBox", "search/",'.html');
|
|
</script>
|
|
<script type="text/javascript">
|
|
$(function() { codefold.init(); });
|
|
</script>
|
|
<script type="text/javascript" src="menudata.js"></script>
|
|
<script type="text/javascript" src="menu.js"></script>
|
|
<script type="text/javascript">
|
|
$(function() {
|
|
initMenu('',true,false,'search.php','Search',true);
|
|
$(function() { init_search(); });
|
|
});
|
|
</script>
|
|
<div id="main-nav"></div>
|
|
</div><!-- top -->
|
|
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
|
<div id="nav-tree">
|
|
<div id="nav-tree-contents">
|
|
<div id="nav-sync" class="sync"></div>
|
|
</div>
|
|
</div>
|
|
<div id="splitbar" style="-moz-user-select:none;"
|
|
class="ui-resizable-handle">
|
|
</div>
|
|
</div>
|
|
<script type="text/javascript">
|
|
$(function(){initNavTree('classL4_1_1Rcv__endpoint.html','',''); });
|
|
</script>
|
|
<div id="container">
|
|
<div id="doc-content">
|
|
<!-- window showing the filter options -->
|
|
<div id="MSearchSelectWindow"
|
|
onmouseover="return searchBox.OnSearchSelectShow()"
|
|
onmouseout="return searchBox.OnSearchSelectHide()"
|
|
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
|
</div>
|
|
|
|
<!-- iframe showing the search results (closed by default) -->
|
|
<div id="MSearchResultsWindow">
|
|
<div id="MSearchResults">
|
|
<div class="SRPage">
|
|
<div id="SRIndex">
|
|
<div id="SRResults"></div>
|
|
<div class="SRStatus" id="Loading">Loading...</div>
|
|
<div class="SRStatus" id="Searching">Searching...</div>
|
|
<div class="SRStatus" id="NoMatches">No Matches</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="header">
|
|
<div class="headertitle"><div class="title">L4::Rcv_endpoint Class Reference</div></div>
|
|
</div><!--header-->
|
|
<div class="contents">
|
|
|
|
<p>Interface for kernel objects that allow to receive IPC from them.
|
|
<a href="#details">More...</a></p>
|
|
|
|
<p><code>#include <<a class="el" href="rcv__endpoint_source.html">rcv_endpoint</a>></code></p>
|
|
<div id="dynsection-0" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Inheritance diagram for L4::Rcv_endpoint:</div>
|
|
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
|
|
</div>
|
|
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
|
|
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="classL4_1_1Rcv__endpoint__inherit__graph.svg" width="459" height="859"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
|
|
</div>
|
|
<div id="dynsection-1" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Collaboration diagram for L4::Rcv_endpoint:</div>
|
|
<div id="dynsection-1-summary" class="dynsummary" style="display:block;">
|
|
</div>
|
|
<div id="dynsection-1-content" class="dyncontent" style="display:none;">
|
|
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="classL4_1_1Rcv__endpoint__coll__graph.svg" width="399" height="486"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
|
|
</div>
|
|
<table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 id="header-pub-methods" class="groupheader"><a id="pub-methods" name="pub-methods"></a>
|
|
Public Member Functions</h2></td></tr>
|
|
<tr class="memitem:a44d288dd670226f6845b5bd8c973b15e" id="r_a44d288dd670226f6845b5bd8c973b15e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structl4__msgtag__t.html">l4_msgtag_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="#a44d288dd670226f6845b5bd8c973b15e">bind_thread</a> (<a class="el" href="classL4_1_1Ipc_1_1Cap.html">Ipc::Cap</a>< <a class="el" href="classL4_1_1Thread.html">Thread</a> > t, <a class="el" href="group__l4__basic__types.html#ga1c2c4b333f75b1d05b59855910f2b9cb">l4_umword_t</a> label)</td></tr>
|
|
<tr class="memdesc:a44d288dd670226f6845b5bd8c973b15e"><td class="mdescLeft"> </td><td class="mdescRight">Bind the IPC receive endpoint to a thread. <br /></td></tr>
|
|
<tr class="memitem:a704d82925cec6c9827a9bfcfb062859a" id="r_a704d82925cec6c9827a9bfcfb062859a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structl4__msgtag__t.html">l4_msgtag_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="#a704d82925cec6c9827a9bfcfb062859a">bind_snd_destination</a> (<a class="el" href="classL4_1_1Cap.html">Cap</a>< Snd_destination > snd_dst, <a class="el" href="group__l4__basic__types.html#ga1c2c4b333f75b1d05b59855910f2b9cb">l4_umword_t</a> label)</td></tr>
|
|
<tr class="memdesc:a704d82925cec6c9827a9bfcfb062859a"><td class="mdescLeft"> </td><td class="mdescRight">Bind a send destination (a thread or thread group) to an IPC receive endpoint. <br /></td></tr>
|
|
<tr class="inherit_header pub_methods_classL4_1_1Kobject"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_methods_classL4_1_1Kobject')"><span class="dynarrow"><span class="arrowhead closed"></span></span>Public Member Functions inherited from <a class="el" href="classL4_1_1Kobject.html">L4::Kobject</a></td></tr>
|
|
<tr class="memitem:a9fe009599de49f1af438ff49998faec0 inherit pub_methods_classL4_1_1Kobject" id="r_a9fe009599de49f1af438ff49998faec0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structl4__msgtag__t.html">l4_msgtag_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classL4_1_1Kobject.html#a9fe009599de49f1af438ff49998faec0">dec_refcnt</a> (<a class="el" href="group__l4__basic__types.html#ga51d9492e7700d70ed35838154ca9b279">l4_mword_t</a> diff, <a class="el" href="group__l4__utcb__api.html#ga89be8a86d11c1d532b636cc2df1330fb">l4_utcb_t</a> *utcb=<a class="el" href="group__l4__utcb__api.html#gadc099b4a59e1d99638c72c11a8c8b644">l4_utcb</a>())</td></tr>
|
|
<tr class="memdesc:a9fe009599de49f1af438ff49998faec0 inherit pub_methods_classL4_1_1Kobject"><td class="mdescLeft"> </td><td class="mdescRight">Decrement the in kernel reference counter for the object. <br /></td></tr>
|
|
</table><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 id="header-inherited" class="groupheader"><a id="inherited" name="inherited"></a>
|
|
Additional Inherited Members</h2></td></tr>
|
|
<tr class="inherit_header pro_types_classL4_1_1Kobject__t"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_types_classL4_1_1Kobject__t')"><span class="dynarrow"><span class="arrowhead closed"></span></span>Protected Types inherited from <a class="el" href="classL4_1_1Kobject__t.html">L4::Kobject_t< Rcv_endpoint, Kobject, L4_PROTO_KOBJECT, Type_info::Demand_t< 1 > ></a></td></tr>
|
|
<tr class="memitem:af7df35ba5bf68ef5993e605a6b62328a inherit pro_types_classL4_1_1Kobject__t" id="r_af7df35ba5bf68ef5993e605a6b62328a"><td class="memItemLeft" align="right" valign="top">
|
|
typedef <a class="el" href="classL4_1_1Rcv__endpoint.html">Rcv_endpoint</a> </td><td class="memItemRight" valign="bottom"><b>Class</b></td></tr>
|
|
<tr class="memdesc:af7df35ba5bf68ef5993e605a6b62328a inherit pro_types_classL4_1_1Kobject__t"><td class="mdescLeft"> </td><td class="mdescRight">The target interface type (inheriting from <a class="el" href="classL4_1_1Kobject__t.html" title="Helper class to create an L4Re interface class that is derived from a single base class.">Kobject_t</a>). <br /></td></tr>
|
|
<tr class="memitem:a0d83157994565e9c01f10006bdda2efa inherit pro_types_classL4_1_1Kobject__t" id="r_a0d83157994565e9c01f10006bdda2efa"><td class="memItemLeft" align="right" valign="top">
|
|
typedef Typeid::Iface< PROTO, <a class="el" href="classL4_1_1Rcv__endpoint.html">Rcv_endpoint</a> > </td><td class="memItemRight" valign="bottom"><b>__Iface</b></td></tr>
|
|
<tr class="memdesc:a0d83157994565e9c01f10006bdda2efa inherit pro_types_classL4_1_1Kobject__t"><td class="mdescLeft"> </td><td class="mdescRight">The interface description for the derived class. <br /></td></tr>
|
|
<tr class="memitem:afc2feec2f4a15e85286aabfa15c53e06 inherit pro_types_classL4_1_1Kobject__t" id="r_afc2feec2f4a15e85286aabfa15c53e06"><td class="memItemLeft" align="right" valign="top">
|
|
typedef Typeid::Merge_list< Typeid::Iface_list< <a class="el" href="classL4_1_1Kobject__t.html#a0d83157994565e9c01f10006bdda2efa">__Iface</a> >, typename Kobject::__Iface_list > </td><td class="memItemRight" valign="bottom"><b>__Iface_list</b></td></tr>
|
|
<tr class="memdesc:afc2feec2f4a15e85286aabfa15c53e06 inherit pro_types_classL4_1_1Kobject__t"><td class="mdescLeft"> </td><td class="mdescRight">The list of all RPC interfaces provided directly or through inheritance. <br /></td></tr>
|
|
<tr class="inherit_header pro_methods_classL4_1_1Kobject__t"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_methods_classL4_1_1Kobject__t')"><span class="dynarrow"><span class="arrowhead closed"></span></span>Protected Member Functions inherited from <a class="el" href="classL4_1_1Kobject__t.html">L4::Kobject_t< Rcv_endpoint, Kobject, L4_PROTO_KOBJECT, Type_info::Demand_t< 1 > ></a></td></tr>
|
|
<tr class="memitem:a3d80fec7e057d575ec4b393437f05f8a inherit pro_methods_classL4_1_1Kobject__t" id="r_a3d80fec7e057d575ec4b393437f05f8a"><td class="memItemLeft" align="right" valign="top">
|
|
<a class="el" href="classL4_1_1Cap.html">L4::Cap</a>< <a class="el" href="classL4_1_1Kobject__t.html#af7df35ba5bf68ef5993e605a6b62328a">Class</a> > </td><td class="memItemRight" valign="bottom"><b>c</b> () const noexcept</td></tr>
|
|
<tr class="memdesc:a3d80fec7e057d575ec4b393437f05f8a inherit pro_methods_classL4_1_1Kobject__t"><td class="mdescLeft"> </td><td class="mdescRight">Get the capability to ourselves. <br /></td></tr>
|
|
<tr class="inherit_header pro_methods_classL4_1_1Kobject"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_methods_classL4_1_1Kobject')"><span class="dynarrow"><span class="arrowhead closed"></span></span>Protected Member Functions inherited from <a class="el" href="classL4_1_1Kobject.html">L4::Kobject</a></td></tr>
|
|
<tr class="memitem:a4f2117ae76762f4084e6a1adb915863c inherit pro_methods_classL4_1_1Kobject" id="r_a4f2117ae76762f4084e6a1adb915863c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__l4__cap__api.html#ga1445e923ce73029130d569d6e69a4dd8">l4_cap_idx_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classL4_1_1Kobject.html#a4f2117ae76762f4084e6a1adb915863c">cap</a> () const noexcept</td></tr>
|
|
<tr class="memdesc:a4f2117ae76762f4084e6a1adb915863c inherit pro_methods_classL4_1_1Kobject"><td class="mdescLeft"> </td><td class="mdescRight">Return capability selector. <br /></td></tr>
|
|
<tr class="inherit_header pro_static_methods_classL4_1_1Kobject__t"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_static_methods_classL4_1_1Kobject__t')"><span class="dynarrow"><span class="arrowhead closed"></span></span>Static Protected Member Functions inherited from <a class="el" href="classL4_1_1Kobject__t.html">L4::Kobject_t< Rcv_endpoint, Kobject, L4_PROTO_KOBJECT, Type_info::Demand_t< 1 > ></a></td></tr>
|
|
<tr class="memitem:a7433b8eed587278821dd496864f75363 inherit pro_static_methods_classL4_1_1Kobject__t" id="r_a7433b8eed587278821dd496864f75363"><td class="memItemLeft" align="right" valign="top">
|
|
static void </td><td class="memItemRight" valign="bottom"><b>__check_protocols__</b> () noexcept</td></tr>
|
|
<tr class="memdesc:a7433b8eed587278821dd496864f75363 inherit pro_static_methods_classL4_1_1Kobject__t"><td class="mdescLeft"> </td><td class="mdescRight">Helper to check for protocol conflicts. <br /></td></tr>
|
|
</table>
|
|
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
|
|
<div class="textblock"><p>Interface for kernel objects that allow to receive IPC from them. </p>
|
|
<p>Such an object is for example an <a class="el" href="classL4_1_1Ipc__gate.html" title="The C++ IPC gate interface, see IPC-Gate API for the C interface.">Ipc_gate</a> (with server rights) or an <a class="el" href="classL4_1_1Irq.html" title="C++ Irq interface, see IRQs for the C interface.">Irq</a>. Those objects can be bound to a thread that shall receive IPC from these objects via <a class="el" href="#a44d288dd670226f6845b5bd8c973b15e" title="Bind the IPC receive endpoint to a thread.">bind_thread()</a> or <a class="el" href="#a704d82925cec6c9827a9bfcfb062859a" title="Bind a send destination (a thread or thread group) to an IPC receive endpoint.">bind_snd_destination()</a>. </p>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="rcv__endpoint_source.html#l00030">30</a> of file <a class="el" href="rcv__endpoint_source.html">rcv_endpoint</a>.</p>
|
|
</div><a name="doc-func-members" id="doc-func-members"></a><h2 id="header-doc-func-members" class="groupheader">Member Function Documentation</h2>
|
|
<a id="a704d82925cec6c9827a9bfcfb062859a" name="a704d82925cec6c9827a9bfcfb062859a"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a704d82925cec6c9827a9bfcfb062859a">◆ </a></span>bind_snd_destination()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="mlabels">
|
|
<tr>
|
|
<td class="mlabels-left">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="structl4__msgtag__t.html">l4_msgtag_t</a> L4::Rcv_endpoint::bind_snd_destination </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="classL4_1_1Cap.html">Cap</a>< Snd_destination ></td> <td class="paramname"><span class="paramname"><em>snd_dst</em></span>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"><a class="el" href="group__l4__basic__types.html#ga1c2c4b333f75b1d05b59855910f2b9cb">l4_umword_t</a></td> <td class="paramname"><span class="paramname"><em>label</em></span> )</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td class="mlabels-right">
|
|
<span class="mlabels"><span class="mlabel inline">inline</span></span> </td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Bind a send destination (a thread or thread group) to an IPC receive endpoint. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">snd_dst</td><td>Snd_destination object (a thread or thread group) that shall be bound to this receive endpoint. See <a class="el" href="#a44d288dd670226f6845b5bd8c973b15e" title="Bind the IPC receive endpoint to a thread.">bind_thread()</a> and <a class="el" href="#a704d82925cec6c9827a9bfcfb062859a" title="Bind a send destination (a thread or thread group) to an IPC receive endpoint.">bind_snd_destination()</a> for binding a thread or thread group object. </td></tr>
|
|
<tr><td class="paramname">label</td><td>Label to assign to <span class="tt">this</span> receive endpoint. For IPC gates, the two least significant bits must be set to zero.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>Syscall return tag containing one of the following return codes.</dd></dl>
|
|
<dl class="retval"><dt>Return values</dt><dd>
|
|
<table class="retval">
|
|
<tr><td class="paramname">L4_EOK</td><td>Operation successful. </td></tr>
|
|
<tr><td class="paramname">-L4_EINVAL</td><td><span class="tt">snd_dst</span> is not a thread or thread group object or other arguments were malformed. </td></tr>
|
|
<tr><td class="paramname">-L4_EPERM</td><td>No <a class="el" href="group__l4__fpage__api.html#ggaee60789a48cab2782f5a368237591b39acb2b2e95f6be245f64937ac48a068066" title="Interface specific 'S' right for capability flexpages.">L4_CAP_FPAGE_S</a> right on <span class="tt">snd_dst</span> or the capability used to invoke this operation.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section pre"><dt>Precondition</dt><dd>If this operation is invoked using an IPC gate capability without the <a class="el" href="group__l4__msgitem__api.html#ggad142e99a533af52d358f9940fa00966aa8436980325edd409d8aa71e1ef567bc4" title="The receiver may invoke IPC-gate-specific functions on the capability, e.g.">L4_FPAGE_C_IPCGATE_SVR</a> 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 or thread group is bound yet.</dd></dl>
|
|
<p>The specified <span class="tt">label</span> 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 <a class="el" href="classL4_1_1Thread.html#a9bcade7e8db8d775cc1f2a2a6225c845" title="Apply sender modification rules.">L4::Thread::modify_senders()</a> is used to change these labels. </p>
|
|
|
|
<p class="definition">Definition at line <a class="el" href="rcv__endpoint_source.html#l00101">101</a> of file <a class="el" href="rcv__endpoint_source.html">rcv_endpoint</a>.</p>
|
|
|
|
<p class="reference">References <a class="el" href="capability_8h_source.html#l00049">L4::Cap_base::cap()</a>, <a class="el" href="kobject_source.html#l00069">L4::Kobject::cap()</a>, and <a class="el" href="rcv__endpoint_8h_source.html#l00138">l4_rcv_ep_bind_snd_destination()</a>.</p>
|
|
<div id="dynsection-2" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Here is the call graph for this function:</div>
|
|
<div id="dynsection-2-summary" class="dynsummary" style="display:block;">
|
|
</div>
|
|
<div id="dynsection-2-content" class="dyncontent" style="display:none;">
|
|
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="classL4_1_1Rcv__endpoint_a704d82925cec6c9827a9bfcfb062859a_cgraph.svg" width="495" height="151"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="a44d288dd670226f6845b5bd8c973b15e" name="a44d288dd670226f6845b5bd8c973b15e"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#a44d288dd670226f6845b5bd8c973b15e">◆ </a></span>bind_thread()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="structl4__msgtag__t.html">l4_msgtag_t</a> L4::Rcv_endpoint::bind_thread </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="classL4_1_1Ipc_1_1Cap.html">Ipc::Cap</a>< <a class="el" href="classL4_1_1Thread.html">Thread</a> ></td> <td class="paramname"><span class="paramname"><em>t</em></span>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"><a class="el" href="group__l4__basic__types.html#ga1c2c4b333f75b1d05b59855910f2b9cb">l4_umword_t</a></td> <td class="paramname"><span class="paramname"><em>label</em></span> )</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Bind the IPC receive endpoint to a thread. </p>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">t</td><td><a class="el" href="classL4_1_1Thread.html" title="C++ L4 kernel thread interface, see Thread for the C interface.">Thread</a> object this receive endpoint shall be bound to. </td></tr>
|
|
<tr><td class="paramname">label</td><td>Label to assign to <span class="tt">this</span> receive endpoint. For IPC gates, the two least significant bits must be set to zero.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section return"><dt>Returns</dt><dd>Syscall return tag containing one of the following return codes.</dd></dl>
|
|
<dl class="retval"><dt>Return values</dt><dd>
|
|
<table class="retval">
|
|
<tr><td class="paramname">L4_EOK</td><td>Operation successful. </td></tr>
|
|
<tr><td class="paramname">-L4_EINVAL</td><td><span class="tt">t</span> is not a thread object or other arguments were malformed. </td></tr>
|
|
<tr><td class="paramname">-L4_EPERM</td><td>Insufficient permissions; see precondition.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section pre"><dt>Precondition</dt><dd>The invoked capability and the capability <span class="tt">t</span> both must have the permission <a class="el" href="group__l4__fpage__api.html#ggaee60789a48cab2782f5a368237591b39acb2b2e95f6be245f64937ac48a068066" title="Interface specific 'S' right for capability flexpages.">L4_CAP_FPAGE_S</a>.</dd></dl>
|
|
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000006">Deprecated</a></b></dt><dd>Use <a class="el" href="#a704d82925cec6c9827a9bfcfb062859a" title="Bind a send destination (a thread or thread group) to an IPC receive endpoint.">bind_snd_destination()</a> instead.</dd></dl>
|
|
<dl class="section pre"><dt>Precondition</dt><dd>If this operation is invoked using an IPC gate capability without the <a class="el" href="group__l4__msgitem__api.html#ggad142e99a533af52d358f9940fa00966aa8436980325edd409d8aa71e1ef567bc4" title="The receiver may invoke IPC-gate-specific functions on the capability, e.g.">L4_FPAGE_C_IPCGATE_SVR</a> right, the kernel will not perform the operation. Instead, the underlying IPC message will be forwarded to the thread the IPC gate is bound to, blocking the caller if the IPC gate was not bound yet.</dd></dl>
|
|
<p>The specified <span class="tt">label</span> 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 <a class="el" href="classL4_1_1Thread.html#a9bcade7e8db8d775cc1f2a2a6225c845" title="Apply sender modification rules.">L4::Thread::modify_senders()</a> is used to change these labels. </p>
|
|
|
|
<p class="reference">References <a class="el" href="#a44d288dd670226f6845b5bd8c973b15e">bind_thread()</a>.</p>
|
|
|
|
<p class="reference">Referenced by <a class="el" href="#a44d288dd670226f6845b5bd8c973b15e">bind_thread()</a>.</p>
|
|
<div id="dynsection-3" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Here is the call graph for this function:</div>
|
|
<div id="dynsection-3-summary" class="dynsummary" style="display:block;">
|
|
</div>
|
|
<div id="dynsection-3-content" class="dyncontent" style="display:none;">
|
|
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="classL4_1_1Rcv__endpoint_a44d288dd670226f6845b5bd8c973b15e_cgraph.svg" width="180" height="75"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
|
|
</div>
|
|
<div id="dynsection-4" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Here is the caller graph for this function:</div>
|
|
<div id="dynsection-4-summary" class="dynsummary" style="display:block;">
|
|
</div>
|
|
<div id="dynsection-4-content" class="dyncontent" style="display:none;">
|
|
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="classL4_1_1Rcv__endpoint_a44d288dd670226f6845b5bd8c973b15e_icgraph.svg" width="180" height="75"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
<hr/>The documentation for this class was generated from the following file:<ul>
|
|
<li>l4/sys/<a class="el" href="rcv__endpoint_source.html">rcv_endpoint</a></li>
|
|
</ul>
|
|
</div><!-- contents -->
|
|
</div><!-- doc-content -->
|
|
<div id="page-nav" class="page-nav-panel">
|
|
<div id="page-nav-resize-handle"></div>
|
|
<div id="page-nav-tree">
|
|
<div id="page-nav-contents">
|
|
</div><!-- page-nav-contents -->
|
|
</div><!-- page-nav-tree -->
|
|
</div><!-- page-nav -->
|
|
</div><!-- container -->
|
|
<!-- HTML footer for doxygen 1.9.1-->
|
|
<!-- start footer part -->
|
|
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
|
<ul>
|
|
<li class="navelem"><a href="namespaceL4.html">L4</a></li><li class="navelem"><a href="classL4_1_1Rcv__endpoint.html">Rcv_endpoint</a></li>
|
|
<li class="footer">Generated on <span class="timestamp"></span> for L4Re Operating System Framework by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.15.0 </li>
|
|
</ul>
|
|
</div>
|
|
</body>
|
|
</html>
|