group__ifapi.html 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
  5. <meta http-equiv="X-UA-Compatible" content="IE=9"/>
  6. <meta name="generator" content="Doxygen 1.8.13"/>
  7. <meta name="viewport" content="width=device-width, initial-scale=1"/>
  8. <title>tpm2-tss: Internals of Feature API</title>
  9. <link href="tabs.css" rel="stylesheet" type="text/css"/>
  10. <script type="text/javascript" src="jquery.js"></script>
  11. <script type="text/javascript" src="dynsections.js"></script>
  12. <link href="navtree.css" rel="stylesheet" type="text/css"/>
  13. <script type="text/javascript" src="resize.js"></script>
  14. <script type="text/javascript" src="navtreedata.js"></script>
  15. <script type="text/javascript" src="navtree.js"></script>
  16. <script type="text/javascript">
  17. $(document).ready(initResizable);
  18. </script>
  19. <link href="doxygen.css" rel="stylesheet" type="text/css" />
  20. </head>
  21. <body>
  22. <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
  23. <div id="titlearea">
  24. <table cellspacing="0" cellpadding="0">
  25. <tbody>
  26. <tr style="height: 56px;">
  27. <td id="projectalign" style="padding-left: 0.5em;">
  28. <div id="projectname">tpm2-tss
  29. &#160;<span id="projectnumber">3.2.0</span>
  30. </div>
  31. <div id="projectbrief">TPM Software stack 2.0 TCG spec compliant implementation</div>
  32. </td>
  33. </tr>
  34. </tbody>
  35. </table>
  36. </div>
  37. <!-- end header part -->
  38. <!-- Generated by Doxygen 1.8.13 -->
  39. <script type="text/javascript" src="menudata.js"></script>
  40. <script type="text/javascript" src="menu.js"></script>
  41. <script type="text/javascript">
  42. $(function() {
  43. initMenu('',false,false,'search.php','Search');
  44. });
  45. </script>
  46. <div id="main-nav"></div>
  47. </div><!-- top -->
  48. <div id="side-nav" class="ui-resizable side-nav-resizable">
  49. <div id="nav-tree">
  50. <div id="nav-tree-contents">
  51. <div id="nav-sync" class="sync"></div>
  52. </div>
  53. </div>
  54. <div id="splitbar" style="-moz-user-select:none;"
  55. class="ui-resizable-handle">
  56. </div>
  57. </div>
  58. <script type="text/javascript">
  59. $(document).ready(function(){initNavTree('group__ifapi.html','');});
  60. </script>
  61. <div id="doc-content">
  62. <div class="header">
  63. <div class="summary">
  64. <a href="#groups">Modules</a> </div>
  65. <div class="headertitle">
  66. <div class="title">Internals of Feature API<div class="ingroups"><a class="el" href="group__fapi.html">Feature API</a></div></div> </div>
  67. </div><!--header-->
  68. <div class="contents">
  69. <table class="memberdecls">
  70. <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="groups"></a>
  71. Modules</h2></td></tr>
  72. <tr class="memitem:group__fapi__crypto"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__fapi__crypto.html">Internal Cryptographic Backend</a></td></tr>
  73. <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
  74. <tr class="memitem:group__ifapi__policy__intantiate"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ifapi__policy__intantiate.html">Policy instantiation module</a></td></tr>
  75. <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
  76. <tr class="memitem:group__ifapi__policy"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ifapi__policy.html">Policy calculation module</a></td></tr>
  77. <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
  78. <tr class="memitem:group__ifapi__policy__callbacks"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ifapi__policy__callbacks.html">Policy callback functions.</a></td></tr>
  79. <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
  80. <tr class="memitem:group__ifapi__policy__execution"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ifapi__policy__execution.html">Policy execution functions.</a></td></tr>
  81. <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
  82. <tr class="memitem:group__ifapi__policy__util__exec"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ifapi__policy__util__exec.html">Policy utilitiy module</a></td></tr>
  83. <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
  84. <tr class="memitem:group__ifapi__helper"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ifapi__helper.html">Helper functions module</a></td></tr>
  85. <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
  86. <tr class="memitem:group__ifapi__utility"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ifapi__utility.html">Utility module</a></td></tr>
  87. <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
  88. <tr class="memitem:group__ifapi__io"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ifapi__io.html">Basic IO module</a></td></tr>
  89. <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
  90. <tr class="memitem:group__ifapi__keystore"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ifapi__keystore.html">Key store module</a></td></tr>
  91. <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
  92. <tr class="memitem:group__ifapi__policy__store"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ifapi__policy__store.html">Policy store module</a></td></tr>
  93. <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
  94. <tr class="memitem:group__ifapi__configuration"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ifapi__configuration.html">Configuration utilities.</a></td></tr>
  95. <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
  96. <tr class="memitem:group__ifapi__eventlog"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ifapi__eventlog.html">Event log utilities.</a></td></tr>
  97. <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
  98. <tr class="memitem:group__ifapi__profile"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ifapi__profile.html">Profile module</a></td></tr>
  99. <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
  100. <tr class="memitem:group__ifapi__serialization"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ifapi__serialization.html">FAPI object serialization module</a></td></tr>
  101. <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
  102. <tr class="memitem:group__ifapi__deserialization"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ifapi__deserialization.html">FAPI object deserialization module</a></td></tr>
  103. <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
  104. <tr class="memitem:group__ifapi__vendor"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__ifapi__vendor.html">Vendor specific module</a></td></tr>
  105. <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
  106. </table>
  107. <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
  108. <p>This module holds internal APIs of the FAPI implementation.</p>
  109. <p>Async programming style:</p>
  110. <p>The tss2-fapi implementation uses an asynchronous programming style internally. This means that whenever a piece of code performs a potentially blocking operation it will instead return TSS2_FAPI_RC_TRY_AGAIN (similarly to ESAPI). Then this function is called again once the Poll returns ok. In order to carry the state of execution information over between the different invocation of the same function, the current state is stored in a state variable and all variables are stored in some kind of context variables. On the next entry to the function the state is evaluated using a swtich() statement and execution is resumed.</p>
  111. <p>In order to understand the functional flow of code in FAPI, one can read the functions continuously over all fallthrough; and statecase(); statements. The statecase statements are the re-entry points of each function. The return_try_again() and FAPI_SYNC() statements are the preempt statements. </p>
  112. </div><!-- contents -->
  113. </div><!-- doc-content -->
  114. <!-- start footer part -->
  115. <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  116. <ul>
  117. <li class="footer">Generated by
  118. <a href="http://www.doxygen.org/index.html">
  119. <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
  120. </ul>
  121. </div>
  122. </body>
  123. </html>