xref: /nrf52832-nimble/rt-thread/components/net/uip/doc/html/a00123.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/lc-addrlabels.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/lc-addrlabels.h File Reference</h1><hr><a name="_details"></a><h2>Detailed Description</h2>
22*10465441SEvalZeroImplementation of local continuations based on the "Labels as values" feature of gcc.
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*10465441SEvalZeroThis implementation of local continuations is based on a special feature of the GCC C compiler called "labels as values". This feature allows assigning pointers with the address of the code corresponding to a particular C label.<p>
26*10465441SEvalZeroFor more information, see the GCC documentation: <a href="http://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html">http://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html</a><p>
27*10465441SEvalZeroThanks to dividuum for finding the nice local scope label implementation.
28*10465441SEvalZero<p>
29*10465441SEvalZeroDefinition in file <a class="el" href="a00189.html">lc-addrlabels.h</a>.
30*10465441SEvalZero<p>
31*10465441SEvalZero
32*10465441SEvalZero<p>
33*10465441SEvalZero<a href="a00189.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
34*10465441SEvalZero<tr><td></td></tr>
35*10465441SEvalZero<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
36*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g2c1bb4fa6d7a6ff951a41c73fc721109"></a><!-- doxytag: member="lc-addrlabels.h::LC_INIT" ref="g2c1bb4fa6d7a6ff951a41c73fc721109" args="(s)" -->
37*10465441SEvalZero#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00155.html#g2c1bb4fa6d7a6ff951a41c73fc721109">LC_INIT</a>(s)&nbsp;&nbsp;&nbsp;s = NULL</td></tr>
38*10465441SEvalZero
39*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g1ec8b8f4710dce1fa7fb87d3a31541ae"></a><!-- doxytag: member="lc-addrlabels.h::LC_RESUME" ref="g1ec8b8f4710dce1fa7fb87d3a31541ae" args="(s)" -->
40*10465441SEvalZero#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00155.html#g1ec8b8f4710dce1fa7fb87d3a31541ae">LC_RESUME</a>(s)</td></tr>
41*10465441SEvalZero
42*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gd8eec328a4868d767f0c00c8d1c6cfc1"></a><!-- doxytag: member="lc-addrlabels.h::LC_SET" ref="gd8eec328a4868d767f0c00c8d1c6cfc1" args="(s)" -->
43*10465441SEvalZero#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00155.html#gd8eec328a4868d767f0c00c8d1c6cfc1">LC_SET</a>(s)&nbsp;&nbsp;&nbsp;do { ({ __label__ resume; resume: (s) = &amp;&amp;resume; }); }while(0)</td></tr>
44*10465441SEvalZero
45*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gca51ceb2f5d855dfde55bcedf8d3b92d"></a><!-- doxytag: member="lc-addrlabels.h::LC_END" ref="gca51ceb2f5d855dfde55bcedf8d3b92d" args="(s)" -->
46*10465441SEvalZero#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00155.html#gca51ceb2f5d855dfde55bcedf8d3b92d">LC_END</a>(s)</td></tr>
47*10465441SEvalZero
48*10465441SEvalZero<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
49*10465441SEvalZero<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g2bdc4b7b4038454a79f1b2a94a6d2a98"></a><!-- doxytag: member="lc-addrlabels.h::lc_t" ref="g2bdc4b7b4038454a79f1b2a94a6d2a98" args="" -->
50*10465441SEvalZerotypedef void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00155.html#g2bdc4b7b4038454a79f1b2a94a6d2a98">lc_t</a></td></tr>
51*10465441SEvalZero
52*10465441SEvalZero</table>
53*10465441SEvalZero<hr size="1"><address style="align: right;"><small>Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by&nbsp;
54*10465441SEvalZero<a href="http://www.doxygen.org/index.html">
55*10465441SEvalZero<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6 </small></address>
56*10465441SEvalZero</body>
57*10465441SEvalZero</html>
58