a00155.html 6.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
  3. <title>uIP 1.0: Local continuations</title>
  4. <link href="doxygen.css" rel="stylesheet" type="text/css">
  5. <link href="tabs.css" rel="stylesheet" type="text/css">
  6. </head><body>
  7. <!-- Generated by Doxygen 1.4.6 -->
  8. <div class="tabs">
  9. <ul>
  10. <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
  11. <li><a href="modules.html"><span>Modules</span></a></li>
  12. <li><a href="classes.html"><span>Data&nbsp;Structures</span></a></li>
  13. <li><a href="files.html"><span>Files</span></a></li>
  14. <li><a href="examples.html"><span>Examples</span></a></li>
  15. </ul></div>
  16. <h1>Local continuations<br>
  17. <small>
  18. [<a class="el" href="a00142.html">Protothreads</a>]</small>
  19. </h1><hr><a name="_details"></a><h2>Detailed Description</h2>
  20. Local continuations form the basis for implementing protothreads.
  21. <p>
  22. A local continuation can be <em>set</em> in a specific function to capture the state of the function. After a local continuation has been set can be <em>resumed</em> in order to restore the state of the function at the point where the local continuation was set.
  23. <p>
  24. <table border="0" cellpadding="0" cellspacing="0">
  25. <tr><td></td></tr>
  26. <tr><td colspan="2"><br><h2>Files</h2></td></tr>
  27. <tr><td class="memItemLeft" nowrap align="right" valign="top">file &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00125.html">lc.h</a></td></tr>
  28. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Local continuations. <br></td></tr>
  29. <p>
  30. <tr><td class="memItemLeft" nowrap align="right" valign="top">file &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00124.html">lc-switch.h</a></td></tr>
  31. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Implementation of local continuations based on switch() statment. <br></td></tr>
  32. <p>
  33. <tr><td class="memItemLeft" nowrap align="right" valign="top">file &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00123.html">lc-addrlabels.h</a></td></tr>
  34. <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Implementation of local continuations based on the "Labels as values" feature of gcc. <br></td></tr>
  35. <p>
  36. <tr><td colspan="2"><br><h2>Defines</h2></td></tr>
  37. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g44311ecc30759ca38b4069182247bdae"></a><!-- doxytag: member="lc::__LC_SWTICH_H__" ref="g44311ecc30759ca38b4069182247bdae" args="" -->
  38. #define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00155.html#g44311ecc30759ca38b4069182247bdae">__LC_SWTICH_H__</a></td></tr>
  39. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g2c1bb4fa6d7a6ff951a41c73fc721109"></a><!-- doxytag: member="lc::LC_INIT" ref="g2c1bb4fa6d7a6ff951a41c73fc721109" args="(s)" -->
  40. #define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00155.html#g2c1bb4fa6d7a6ff951a41c73fc721109">LC_INIT</a>(s)&nbsp;&nbsp;&nbsp;s = 0;</td></tr>
  41. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g1ec8b8f4710dce1fa7fb87d3a31541ae"></a><!-- doxytag: member="lc::LC_RESUME" ref="g1ec8b8f4710dce1fa7fb87d3a31541ae" args="(s)" -->
  42. #define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00155.html#g1ec8b8f4710dce1fa7fb87d3a31541ae">LC_RESUME</a>(s)&nbsp;&nbsp;&nbsp;switch(s) { case 0:</td></tr>
  43. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gd8eec328a4868d767f0c00c8d1c6cfc1"></a><!-- doxytag: member="lc::LC_SET" ref="gd8eec328a4868d767f0c00c8d1c6cfc1" args="(s)" -->
  44. #define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00155.html#gd8eec328a4868d767f0c00c8d1c6cfc1">LC_SET</a>(s)&nbsp;&nbsp;&nbsp;s = __LINE__; case __LINE__:</td></tr>
  45. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gca51ceb2f5d855dfde55bcedf8d3b92d"></a><!-- doxytag: member="lc::LC_END" ref="gca51ceb2f5d855dfde55bcedf8d3b92d" args="(s)" -->
  46. #define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00155.html#gca51ceb2f5d855dfde55bcedf8d3b92d">LC_END</a>(s)&nbsp;&nbsp;&nbsp;}</td></tr>
  47. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g2c1bb4fa6d7a6ff951a41c73fc721109"></a><!-- doxytag: member="lc::LC_INIT" ref="g2c1bb4fa6d7a6ff951a41c73fc721109" args="(s)" -->
  48. #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>
  49. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g1ec8b8f4710dce1fa7fb87d3a31541ae"></a><!-- doxytag: member="lc::LC_RESUME" ref="g1ec8b8f4710dce1fa7fb87d3a31541ae" args="(s)" -->
  50. #define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00155.html#g1ec8b8f4710dce1fa7fb87d3a31541ae">LC_RESUME</a>(s)</td></tr>
  51. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gd8eec328a4868d767f0c00c8d1c6cfc1"></a><!-- doxytag: member="lc::LC_SET" ref="gd8eec328a4868d767f0c00c8d1c6cfc1" args="(s)" -->
  52. #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>
  53. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="gca51ceb2f5d855dfde55bcedf8d3b92d"></a><!-- doxytag: member="lc::LC_END" ref="gca51ceb2f5d855dfde55bcedf8d3b92d" args="(s)" -->
  54. #define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00155.html#gca51ceb2f5d855dfde55bcedf8d3b92d">LC_END</a>(s)</td></tr>
  55. <tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
  56. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g3983e0c026396d5c4506779d770007ba"></a><!-- doxytag: member="lc::lc_t" ref="g3983e0c026396d5c4506779d770007ba" args="" -->
  57. typedef unsigned short&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00155.html#g3983e0c026396d5c4506779d770007ba">lc_t</a></td></tr>
  58. <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="g2bdc4b7b4038454a79f1b2a94a6d2a98"></a><!-- doxytag: member="lc::lc_t" ref="g2bdc4b7b4038454a79f1b2a94a6d2a98" args="" -->
  59. typedef void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00155.html#g2bdc4b7b4038454a79f1b2a94a6d2a98">lc_t</a></td></tr>
  60. </table>
  61. <hr size="1"><address style="align: right;"><small>Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by&nbsp;
  62. <a href="http://www.doxygen.org/index.html">
  63. <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6 </small></address>
  64. </body>
  65. </html>