xref: /nrf52832-nimble/rt-thread/components/net/uip/doc/html/a00128.html (revision 104654410c56c573564690304ae786df310c91fc)
1*10465441SEvalZero<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2*10465441SEvalZero<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
3*10465441SEvalZero<title>uIP 1.0: uip/pt.h File Reference</title>
4*10465441SEvalZero<link href="doxygen.css" rel="stylesheet" type="text/css">
5*10465441SEvalZero<link href="tabs.css" rel="stylesheet" type="text/css">
6*10465441SEvalZero</head><body>
7*10465441SEvalZero<!-- Generated by Doxygen 1.4.6 -->
8*10465441SEvalZero<div class="tabs">
9*10465441SEvalZero  <ul>
10*10465441SEvalZero    <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
11*10465441SEvalZero    <li><a href="modules.html"><span>Modules</span></a></li>
12*10465441SEvalZero    <li><a href="classes.html"><span>Data&nbsp;Structures</span></a></li>
13*10465441SEvalZero    <li id="current"><a href="files.html"><span>Files</span></a></li>
14*10465441SEvalZero    <li><a href="examples.html"><span>Examples</span></a></li>
15*10465441SEvalZero  </ul></div>
16*10465441SEvalZero<div class="tabs">
17*10465441SEvalZero  <ul>
18*10465441SEvalZero    <li><a href="files.html"><span>File&nbsp;List</span></a></li>
19*10465441SEvalZero    <li><a href="globals.html"><span>Globals</span></a></li>
20*10465441SEvalZero  </ul></div>
21*10465441SEvalZero<h1>uip/pt.h File Reference</h1><hr><a name="_details"></a><h2>Detailed Description</h2>
22*10465441SEvalZeroProtothreads implementation.
23*10465441SEvalZero<p>
24*10465441SEvalZero<dl compact><dt><b>Author:</b></dt><dd>Adam Dunkels &lt;<a href="mailto:[email protected]">[email protected]</a>&gt; </dd></dl>
25*10465441SEvalZero
26*10465441SEvalZero<p>
27*10465441SEvalZeroDefinition in file <a class="el" href="a00194.html">pt.h</a>.
28*10465441SEvalZero<p>
29*10465441SEvalZero<code>#include &quot;<a class="el" href="a00191.html">lc.h</a>&quot;</code><br>
30*10465441SEvalZero
31*10465441SEvalZero<p>
32*10465441SEvalZero<a href="a00194.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
33*10465441SEvalZero<tr><td></td></tr>
34*10465441SEvalZero<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
35*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00084.html">pt</a></td></tr>
36*10465441SEvalZero
37*10465441SEvalZero<tr><td colspan="2"><br><h2>Initialization</h2></td></tr>
38*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#ge6bae7dc0225468c8a5ac269df549892">PT_INIT</a>(<a class="el" href="a00084.html">pt</a>)</td></tr>
39*10465441SEvalZero
40*10465441SEvalZero<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize a protothread.  <a href="a00142.html#ge6bae7dc0225468c8a5ac269df549892"></a><br></td></tr>
41*10465441SEvalZero<tr><td colspan="2"><br><h2>Declaration and definition</h2></td></tr>
42*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#g3d4c8bd4aada659eb34f5d2ffd3e7901">PT_THREAD</a>(name_args)</td></tr>
43*10465441SEvalZero
44*10465441SEvalZero<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Declaration of a protothread.  <a href="a00142.html#g3d4c8bd4aada659eb34f5d2ffd3e7901"></a><br></td></tr>
45*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#g2ffbb9e554e08a343ae2f9de4bedfdfc">PT_BEGIN</a>(<a class="el" href="a00084.html">pt</a>)</td></tr>
46*10465441SEvalZero
47*10465441SEvalZero<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Declare the start of a protothread inside the C function implementing the protothread.  <a href="a00142.html#g2ffbb9e554e08a343ae2f9de4bedfdfc"></a><br></td></tr>
48*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#g7b04a0035bef29d905496c23bae066d2">PT_END</a>(<a class="el" href="a00084.html">pt</a>)</td></tr>
49*10465441SEvalZero
50*10465441SEvalZero<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Declare the end of a protothread.  <a href="a00142.html#g7b04a0035bef29d905496c23bae066d2"></a><br></td></tr>
51*10465441SEvalZero<tr><td colspan="2"><br><h2>Blocked wait</h2></td></tr>
52*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#g99e43010ec61327164466aa2d902de45">PT_WAIT_UNTIL</a>(<a class="el" href="a00084.html">pt</a>, condition)</td></tr>
53*10465441SEvalZero
54*10465441SEvalZero<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Block and wait until condition is true.  <a href="a00142.html#g99e43010ec61327164466aa2d902de45"></a><br></td></tr>
55*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#gad14bbbf092b90aa0a5a4f9169504a8d">PT_WAIT_WHILE</a>(<a class="el" href="a00084.html">pt</a>, cond)</td></tr>
56*10465441SEvalZero
57*10465441SEvalZero<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Block and wait while condition is true.  <a href="a00142.html#gad14bbbf092b90aa0a5a4f9169504a8d"></a><br></td></tr>
58*10465441SEvalZero<tr><td colspan="2"><br><h2>Hierarchical protothreads</h2></td></tr>
59*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#g2f8f70c30b9ee08a103fbd69a4365c4c">PT_WAIT_THREAD</a>(<a class="el" href="a00084.html">pt</a>, thread)</td></tr>
60*10465441SEvalZero
61*10465441SEvalZero<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Block and wait until a child protothread completes.  <a href="a00142.html#g2f8f70c30b9ee08a103fbd69a4365c4c"></a><br></td></tr>
62*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#g9e97a0b4d5cc7764d8e19758f5da53ae">PT_SPAWN</a>(<a class="el" href="a00084.html">pt</a>, child, thread)</td></tr>
63*10465441SEvalZero
64*10465441SEvalZero<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Spawn a child protothread and wait until it exits.  <a href="a00142.html#g9e97a0b4d5cc7764d8e19758f5da53ae"></a><br></td></tr>
65*10465441SEvalZero<tr><td colspan="2"><br><h2>Exiting and restarting</h2></td></tr>
66*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#gcd3ac045f0a4ae63412e3b3d8780e8ab">PT_RESTART</a>(<a class="el" href="a00084.html">pt</a>)</td></tr>
67*10465441SEvalZero
68*10465441SEvalZero<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Restart the protothread.  <a href="a00142.html#gcd3ac045f0a4ae63412e3b3d8780e8ab"></a><br></td></tr>
69*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#g905451249dca72ce0385bf2a9ff178ee">PT_EXIT</a>(<a class="el" href="a00084.html">pt</a>)</td></tr>
70*10465441SEvalZero
71*10465441SEvalZero<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Exit the protothread.  <a href="a00142.html#g905451249dca72ce0385bf2a9ff178ee"></a><br></td></tr>
72*10465441SEvalZero<tr><td colspan="2"><br><h2>Calling a protothread</h2></td></tr>
73*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#gfa82b860a64b67d25ab3abc21811896f">PT_SCHEDULE</a>(f)</td></tr>
74*10465441SEvalZero
75*10465441SEvalZero<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Schedule a protothread.  <a href="a00142.html#gfa82b860a64b67d25ab3abc21811896f"></a><br></td></tr>
76*10465441SEvalZero<tr><td colspan="2"><br><h2>Yielding from a protothread</h2></td></tr>
77*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#g155cba6121323726d02c00284428fed6">PT_YIELD</a>(<a class="el" href="a00084.html">pt</a>)</td></tr>
78*10465441SEvalZero
79*10465441SEvalZero<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Yield from the current protothread.  <a href="a00142.html#g155cba6121323726d02c00284428fed6"></a><br></td></tr>
80*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#ge3c821e3a388615528efda9d23c7d115">PT_YIELD_UNTIL</a>(<a class="el" href="a00084.html">pt</a>, cond)</td></tr>
81*10465441SEvalZero
82*10465441SEvalZero<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Yield from the protothread until a condition occurs.  <a href="a00142.html#ge3c821e3a388615528efda9d23c7d115"></a><br></td></tr>
83*10465441SEvalZero<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
84*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g7b5319b5b65761a845fcd1500fde4cdc"></a><!-- doxytag: member="pt.h::PT_WAITING" ref="g7b5319b5b65761a845fcd1500fde4cdc" args="" -->
85*10465441SEvalZero#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#g7b5319b5b65761a845fcd1500fde4cdc">PT_WAITING</a>&nbsp;&nbsp;&nbsp;0</td></tr>
86*10465441SEvalZero
87*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gcfae9053e5c107a1aed6b228c917d2ea"></a><!-- doxytag: member="pt.h::PT_EXITED" ref="gcfae9053e5c107a1aed6b228c917d2ea" args="" -->
88*10465441SEvalZero#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#gcfae9053e5c107a1aed6b228c917d2ea">PT_EXITED</a>&nbsp;&nbsp;&nbsp;1</td></tr>
89*10465441SEvalZero
90*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g9ff1e8936a8a26bff54c05f8a989b93b"></a><!-- doxytag: member="pt.h::PT_ENDED" ref="g9ff1e8936a8a26bff54c05f8a989b93b" args="" -->
91*10465441SEvalZero#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#g9ff1e8936a8a26bff54c05f8a989b93b">PT_ENDED</a>&nbsp;&nbsp;&nbsp;2</td></tr>
92*10465441SEvalZero
93*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ge469332907e0617d72d5e2dd4297119d"></a><!-- doxytag: member="pt.h::PT_YIELDED" ref="ge469332907e0617d72d5e2dd4297119d" args="" -->
94*10465441SEvalZero#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00142.html#ge469332907e0617d72d5e2dd4297119d">PT_YIELDED</a>&nbsp;&nbsp;&nbsp;3</td></tr>
95*10465441SEvalZero
96*10465441SEvalZero</table>
97*10465441SEvalZero<hr size="1"><address style="align: right;"><small>Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by&nbsp;
98*10465441SEvalZero<a href="http://www.doxygen.org/index.html">
99*10465441SEvalZero<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6 </small></address>
100*10465441SEvalZero</body>
101*10465441SEvalZero</html>
102