<!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.8.16"/> <meta name="viewport" content="width=device-width, initial-scale=1"/> <title>UbixOS V2: C:/Dev/git/UbixOS/sys/net/core/mem.c File 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="resize.js"></script> <script type="text/javascript" src="navtreedata.js"></script> <script type="text/javascript" src="navtree.js"></script> <script type="text/javascript"> /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ $(document).ready(initResizable); /* @license-end */</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" /> </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="projectalign" style="padding-left: 0.5em;"> <div id="projectname">UbixOS V2  <span id="projectnumber">2.0</span> </div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.16 --> <script type="text/javascript"> /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ var searchBox = new SearchBox("searchBox", "search",false,'Search'); /* @license-end */ </script> <script type="text/javascript" src="menudata.js"></script> <script type="text/javascript" src="menu.js"></script> <script type="text/javascript"> /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ $(function() { initMenu('',true,false,'search.php','Search'); $(document).ready(function() { init_search(); }); }); /* @license-end */</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"> /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ $(document).ready(function(){initNavTree('mem_8c.html','');}); /* @license-end */ </script> <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"> <iframe src="javascript:void(0)" frameborder="0" name="MSearchResults" id="MSearchResults"> </iframe> </div> <div class="header"> <div class="summary"> <a href="#nested-classes">Data Structures</a> | <a href="#define-members">Macros</a> | <a href="#func-members">Functions</a> </div> <div class="headertitle"> <div class="title">mem.c File Reference</div> </div> </div><!--header--> <div class="contents"> <div class="textblock"><code>#include "<a class="el" href="opt_8h_source.html">net/opt.h</a>"</code><br /> <code>#include "<a class="el" href="mem_8h_source.html">net/mem.h</a>"</code><br /> <code>#include "<a class="el" href="def_8h_source.html">net/def.h</a>"</code><br /> <code>#include "<a class="el" href="sys_8h_source.html">net/sys.h</a>"</code><br /> <code>#include "<a class="el" href="stats_8h_source.html">net/stats.h</a>"</code><br /> <code>#include "<a class="el" href="err_8h_source.html">net/err.h</a>"</code><br /> <code>#include <<a class="el" href="string_8h_source.html">string.h</a>></code><br /> </div><div class="textblock"><div class="dynheader"> Include dependency graph for mem.c:</div> <div class="dyncontent"> <div class="center"><img src="mem_8c__incl.png" border="0" usemap="#C_1_2Dev_2git_2UbixOS_2sys_2net_2core_2mem_8c" alt=""/></div> </div> </div> <p><a href="mem_8c_source.html">Go to the source code of this file.</a></p> <table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> Data Structures</h2></td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structmem.html">mem</a></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a> Macros</h2></td></tr> <tr class="memitem:a016a07ea84e1d75386765b90015b6698"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="mem_8c.html#a016a07ea84e1d75386765b90015b6698">LWIP_MEM_ALLOC_DECL_PROTECT</a>()</td></tr> <tr class="separator:a016a07ea84e1d75386765b90015b6698"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a3c644ac3ac94ed977bb165eeb6ff741a"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="mem_8c.html#a3c644ac3ac94ed977bb165eeb6ff741a">LWIP_MEM_ALLOC_PROTECT</a>()</td></tr> <tr class="separator:a3c644ac3ac94ed977bb165eeb6ff741a"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:af0643ce3aa197952517914e1d644150a"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="mem_8c.html#af0643ce3aa197952517914e1d644150a">LWIP_MEM_ALLOC_UNPROTECT</a>()</td></tr> <tr class="separator:af0643ce3aa197952517914e1d644150a"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a581c4edded02d92caf7a938c801a618e"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="mem_8c.html#a581c4edded02d92caf7a938c801a618e">LWIP_MEM_FREE_DECL_PROTECT</a>()</td></tr> <tr class="separator:a581c4edded02d92caf7a938c801a618e"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aef413072690259b59ce27e49df19e307"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="mem_8c.html#aef413072690259b59ce27e49df19e307">LWIP_MEM_FREE_PROTECT</a>()   <a class="el" href="group__sys__mutex.html#ga4d4eb9afe5965fa2661dd54ff55d616a">sys_mutex_lock</a>(&mem_mutex)</td></tr> <tr class="separator:aef413072690259b59ce27e49df19e307"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aa8a24c0593943bb1e64c1243dddfae50"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="mem_8c.html#aa8a24c0593943bb1e64c1243dddfae50">LWIP_MEM_FREE_UNPROTECT</a>()   <a class="el" href="group__sys__mutex.html#ga5568f68898fe9d5735f9ce2f665624fb">sys_mutex_unlock</a>(&mem_mutex)</td></tr> <tr class="separator:aa8a24c0593943bb1e64c1243dddfae50"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a4fa8ffb4c7a8b4c0404ad4278cc801d0"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="mem_8c.html#a4fa8ffb4c7a8b4c0404ad4278cc801d0">LWIP_RAM_HEAP_POINTER</a>   ram_heap</td></tr> <tr class="separator:a4fa8ffb4c7a8b4c0404ad4278cc801d0"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a78ed2097d5d3e2ca4599b2ca3d91493a"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="mem_8c.html#a78ed2097d5d3e2ca4599b2ca3d91493a">MEM_SIZE_ALIGNED</a>   <a class="el" href="group__compiler__abstraction.html#gaef204be511fd32f681b55abc08e9ae18">LWIP_MEM_ALIGN_SIZE</a>(<a class="el" href="group__lwip__opts__mem.html#ga2dcf8c45f945dd0c4301a94700f2112c">MEM_SIZE</a>)</td></tr> <tr class="separator:a78ed2097d5d3e2ca4599b2ca3d91493a"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a278694c2333c9826f21ddd2c2d220f66"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="mem_8c.html#a278694c2333c9826f21ddd2c2d220f66">MIN_SIZE</a>   12</td></tr> <tr class="separator:a278694c2333c9826f21ddd2c2d220f66"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a97c704b85f71b6e61b0098b4a0a743cd"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="mem_8c.html#a97c704b85f71b6e61b0098b4a0a743cd">MIN_SIZE_ALIGNED</a>   <a class="el" href="group__compiler__abstraction.html#gaef204be511fd32f681b55abc08e9ae18">LWIP_MEM_ALIGN_SIZE</a>(<a class="el" href="mem_8c.html#a278694c2333c9826f21ddd2c2d220f66">MIN_SIZE</a>)</td></tr> <tr class="separator:a97c704b85f71b6e61b0098b4a0a743cd"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ade9cedd48e9a482120e29c010352ee5c"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="mem_8c.html#ade9cedd48e9a482120e29c010352ee5c">SIZEOF_STRUCT_MEM</a>   <a class="el" href="group__compiler__abstraction.html#gaef204be511fd32f681b55abc08e9ae18">LWIP_MEM_ALIGN_SIZE</a>(sizeof(struct <a class="el" href="structmem.html">mem</a>))</td></tr> <tr class="separator:ade9cedd48e9a482120e29c010352ee5c"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> Functions</h2></td></tr> <tr class="memitem:aa33f9b7cf221a9cde8fa715a51d3bfc7"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="mem_8c.html#aa33f9b7cf221a9cde8fa715a51d3bfc7">LWIP_DECLARE_MEMORY_ALIGNED</a> (ram_heap, <a class="el" href="group__compiler__abstraction.html#gaef204be511fd32f681b55abc08e9ae18">LWIP_MEM_ALIGN_SIZE</a>(<a class="el" href="group__lwip__opts__mem.html#ga2dcf8c45f945dd0c4301a94700f2112c">MEM_SIZE</a>)+(2U *<a class="el" href="group__compiler__abstraction.html#gaef204be511fd32f681b55abc08e9ae18">LWIP_MEM_ALIGN_SIZE</a>(sizeof(struct <a class="el" href="structmem.html">mem</a>))))</td></tr> <tr class="separator:aa33f9b7cf221a9cde8fa715a51d3bfc7"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ab0bdc525971701883f2065e7fb257a24"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="mem_8c.html#ab0bdc525971701883f2065e7fb257a24">mem_calloc</a> (<a class="el" href="mem_8h.html#a49bff6e5dd4cb95fe6dc0670962bbf54">mem_size_t</a> count, <a class="el" href="mem_8h.html#a49bff6e5dd4cb95fe6dc0670962bbf54">mem_size_t</a> size)</td></tr> <tr class="separator:ab0bdc525971701883f2065e7fb257a24"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a65169147c44e9db60d997819af9b455c"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="mem_8c.html#a65169147c44e9db60d997819af9b455c">mem_free</a> (void *rmem)</td></tr> <tr class="separator:a65169147c44e9db60d997819af9b455c"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a44a136e3b70c36abb6f8dc060c778113"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="mem_8c.html#a44a136e3b70c36abb6f8dc060c778113">mem_init</a> (void)</td></tr> <tr class="separator:a44a136e3b70c36abb6f8dc060c778113"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a932aa40d85b14cb7331625e012d12335"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="mem_8c.html#a932aa40d85b14cb7331625e012d12335">mem_malloc</a> (<a class="el" href="mem_8h.html#a49bff6e5dd4cb95fe6dc0670962bbf54">mem_size_t</a> size)</td></tr> <tr class="separator:a932aa40d85b14cb7331625e012d12335"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a2f0214c1c0d4acf856fb3ec76818a5a9"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="mem_8c.html#a2f0214c1c0d4acf856fb3ec76818a5a9">mem_trim</a> (void *rmem, <a class="el" href="mem_8h.html#a49bff6e5dd4cb95fe6dc0670962bbf54">mem_size_t</a> newsize)</td></tr> <tr class="separator:a2f0214c1c0d4acf856fb3ec76818a5a9"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <div class="textblock"><p>Dynamic memory manager</p> <p>This is a lightweight replacement for the standard C library malloc().</p> <p>If you want to use the standard C library malloc() instead, define MEM_LIBC_MALLOC to 1 in your <a class="el" href="lwipopts_8h.html">lwipopts.h</a></p> <p>To let <a class="el" href="mem_8c.html#a932aa40d85b14cb7331625e012d12335">mem_malloc()</a> use pools (prevents fragmentation and is much faster than a heap but might waste some memory), define MEM_USE_POOLS to 1, define MEMP_USE_CUSTOM_POOLS to 1 and create a file "lwippools.h" that includes a list of pools like this (more pools can be added between _START and _END):</p> <p>Define three pools with sizes 256, 512, and 1512 bytes LWIP_MALLOC_MEMPOOL_START <a class="el" href="memp__std_8h.html#a2a2ee070ed2e841bdf67f9379780e03d">LWIP_MALLOC_MEMPOOL(20, 256)</a> <a class="el" href="memp__std_8h.html#a2a2ee070ed2e841bdf67f9379780e03d">LWIP_MALLOC_MEMPOOL(10, 512)</a> <a class="el" href="memp__std_8h.html#a2a2ee070ed2e841bdf67f9379780e03d">LWIP_MALLOC_MEMPOOL(5, 1512)</a> LWIP_MALLOC_MEMPOOL_END </p> <p class="definition">Definition in file <a class="el" href="mem_8c_source.html">mem.c</a>.</p> </div><h2 class="groupheader">Macro Definition Documentation</h2> <a id="a016a07ea84e1d75386765b90015b6698"></a> <h2 class="memtitle"><span class="permalink"><a href="#a016a07ea84e1d75386765b90015b6698">◆ </a></span>LWIP_MEM_ALLOC_DECL_PROTECT</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define LWIP_MEM_ALLOC_DECL_PROTECT</td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p class="definition">Definition at line <a class="el" href="mem_8c_source.html#l00325">325</a> of file <a class="el" href="mem_8c_source.html">mem.c</a>.</p> </div> </div> <a id="a3c644ac3ac94ed977bb165eeb6ff741a"></a> <h2 class="memtitle"><span class="permalink"><a href="#a3c644ac3ac94ed977bb165eeb6ff741a">◆ </a></span>LWIP_MEM_ALLOC_PROTECT</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define LWIP_MEM_ALLOC_PROTECT</td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p class="definition">Definition at line <a class="el" href="mem_8c_source.html#l00326">326</a> of file <a class="el" href="mem_8c_source.html">mem.c</a>.</p> </div> </div> <a id="af0643ce3aa197952517914e1d644150a"></a> <h2 class="memtitle"><span class="permalink"><a href="#af0643ce3aa197952517914e1d644150a">◆ </a></span>LWIP_MEM_ALLOC_UNPROTECT</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define LWIP_MEM_ALLOC_UNPROTECT</td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p class="definition">Definition at line <a class="el" href="mem_8c_source.html#l00327">327</a> of file <a class="el" href="mem_8c_source.html">mem.c</a>.</p> </div> </div> <a id="a581c4edded02d92caf7a938c801a618e"></a> <h2 class="memtitle"><span class="permalink"><a href="#a581c4edded02d92caf7a938c801a618e">◆ </a></span>LWIP_MEM_FREE_DECL_PROTECT</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define LWIP_MEM_FREE_DECL_PROTECT</td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p class="definition">Definition at line <a class="el" href="mem_8c_source.html#l00321">321</a> of file <a class="el" href="mem_8c_source.html">mem.c</a>.</p> </div> </div> <a id="aef413072690259b59ce27e49df19e307"></a> <h2 class="memtitle"><span class="permalink"><a href="#aef413072690259b59ce27e49df19e307">◆ </a></span>LWIP_MEM_FREE_PROTECT</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define LWIP_MEM_FREE_PROTECT</td> <td>(</td> <td class="paramname"></td><td>)</td> <td>   <a class="el" href="group__sys__mutex.html#ga4d4eb9afe5965fa2661dd54ff55d616a">sys_mutex_lock</a>(&mem_mutex)</td> </tr> </table> </div><div class="memdoc"> <p class="definition">Definition at line <a class="el" href="mem_8c_source.html#l00322">322</a> of file <a class="el" href="mem_8c_source.html">mem.c</a>.</p> </div> </div> <a id="aa8a24c0593943bb1e64c1243dddfae50"></a> <h2 class="memtitle"><span class="permalink"><a href="#aa8a24c0593943bb1e64c1243dddfae50">◆ </a></span>LWIP_MEM_FREE_UNPROTECT</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define LWIP_MEM_FREE_UNPROTECT</td> <td>(</td> <td class="paramname"></td><td>)</td> <td>   <a class="el" href="group__sys__mutex.html#ga5568f68898fe9d5735f9ce2f665624fb">sys_mutex_unlock</a>(&mem_mutex)</td> </tr> </table> </div><div class="memdoc"> <p class="definition">Definition at line <a class="el" href="mem_8c_source.html#l00323">323</a> of file <a class="el" href="mem_8c_source.html">mem.c</a>.</p> </div> </div> <a id="a4fa8ffb4c7a8b4c0404ad4278cc801d0"></a> <h2 class="memtitle"><span class="permalink"><a href="#a4fa8ffb4c7a8b4c0404ad4278cc801d0">◆ </a></span>LWIP_RAM_HEAP_POINTER</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define LWIP_RAM_HEAP_POINTER   ram_heap</td> </tr> </table> </div><div class="memdoc"> <p class="definition">Definition at line <a class="el" href="mem_8c_source.html#l00291">291</a> of file <a class="el" href="mem_8c_source.html">mem.c</a>.</p> </div> </div> <a id="a78ed2097d5d3e2ca4599b2ca3d91493a"></a> <h2 class="memtitle"><span class="permalink"><a href="#a78ed2097d5d3e2ca4599b2ca3d91493a">◆ </a></span>MEM_SIZE_ALIGNED</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define MEM_SIZE_ALIGNED   <a class="el" href="group__compiler__abstraction.html#gaef204be511fd32f681b55abc08e9ae18">LWIP_MEM_ALIGN_SIZE</a>(<a class="el" href="group__lwip__opts__mem.html#ga2dcf8c45f945dd0c4301a94700f2112c">MEM_SIZE</a>)</td> </tr> </table> </div><div class="memdoc"> <p class="definition">Definition at line <a class="el" href="mem_8c_source.html#l00282">282</a> of file <a class="el" href="mem_8c_source.html">mem.c</a>.</p> </div> </div> <a id="a278694c2333c9826f21ddd2c2d220f66"></a> <h2 class="memtitle"><span class="permalink"><a href="#a278694c2333c9826f21ddd2c2d220f66">◆ </a></span>MIN_SIZE</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define MIN_SIZE   12</td> </tr> </table> </div><div class="memdoc"> <p>All allocated blocks will be MIN_SIZE bytes big, at least! MIN_SIZE can be overridden to suit your needs. Smaller values save space, larger values could prevent too small blocks to fragment the RAM too much. </p> <p class="definition">Definition at line <a class="el" href="mem_8c_source.html#l00277">277</a> of file <a class="el" href="mem_8c_source.html">mem.c</a>.</p> </div> </div> <a id="a97c704b85f71b6e61b0098b4a0a743cd"></a> <h2 class="memtitle"><span class="permalink"><a href="#a97c704b85f71b6e61b0098b4a0a743cd">◆ </a></span>MIN_SIZE_ALIGNED</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define MIN_SIZE_ALIGNED   <a class="el" href="group__compiler__abstraction.html#gaef204be511fd32f681b55abc08e9ae18">LWIP_MEM_ALIGN_SIZE</a>(<a class="el" href="mem_8c.html#a278694c2333c9826f21ddd2c2d220f66">MIN_SIZE</a>)</td> </tr> </table> </div><div class="memdoc"> <p class="definition">Definition at line <a class="el" href="mem_8c_source.html#l00280">280</a> of file <a class="el" href="mem_8c_source.html">mem.c</a>.</p> </div> </div> <a id="ade9cedd48e9a482120e29c010352ee5c"></a> <h2 class="memtitle"><span class="permalink"><a href="#ade9cedd48e9a482120e29c010352ee5c">◆ </a></span>SIZEOF_STRUCT_MEM</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define SIZEOF_STRUCT_MEM   <a class="el" href="group__compiler__abstraction.html#gaef204be511fd32f681b55abc08e9ae18">LWIP_MEM_ALIGN_SIZE</a>(sizeof(struct <a class="el" href="structmem.html">mem</a>))</td> </tr> </table> </div><div class="memdoc"> <p class="definition">Definition at line <a class="el" href="mem_8c_source.html#l00281">281</a> of file <a class="el" href="mem_8c_source.html">mem.c</a>.</p> </div> </div> <h2 class="groupheader">Function Documentation</h2> <a id="aa33f9b7cf221a9cde8fa715a51d3bfc7"></a> <h2 class="memtitle"><span class="permalink"><a href="#aa33f9b7cf221a9cde8fa715a51d3bfc7">◆ </a></span>LWIP_DECLARE_MEMORY_ALIGNED()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">LWIP_DECLARE_MEMORY_ALIGNED </td> <td>(</td> <td class="paramtype">ram_heap </td> <td class="paramname">, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group__compiler__abstraction.html#gaef204be511fd32f681b55abc08e9ae18">LWIP_MEM_ALIGN_SIZE</a>(<a class="el" href="group__lwip__opts__mem.html#ga2dcf8c45f945dd0c4301a94700f2112c">MEM_SIZE</a>)+(2U *<a class="el" href="group__compiler__abstraction.html#gaef204be511fd32f681b55abc08e9ae18">LWIP_MEM_ALIGN_SIZE</a>(sizeof(struct <a class="el" href="structmem.html">mem</a>))) </td> <td class="paramname"> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>If you want to relocate the heap to external memory, simply define LWIP_RAM_HEAP_POINTER as a void-pointer to that location. If so, make sure the memory at that location is big enough (see below on how that space is calculated). the heap. we need one struct mem at the end and some room for alignment </p> </div> </div> <a id="ab0bdc525971701883f2065e7fb257a24"></a> <h2 class="memtitle"><span class="permalink"><a href="#ab0bdc525971701883f2065e7fb257a24">◆ </a></span>mem_calloc()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void* mem_calloc </td> <td>(</td> <td class="paramtype"><a class="el" href="mem_8h.html#a49bff6e5dd4cb95fe6dc0670962bbf54">mem_size_t</a> </td> <td class="paramname"><em>count</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="mem_8h.html#a49bff6e5dd4cb95fe6dc0670962bbf54">mem_size_t</a> </td> <td class="paramname"><em>size</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Contiguously allocates enough space for count objects that are size bytes of memory each and returns a pointer to the allocated memory.</p> <p>The allocated memory is filled with bytes of value zero.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">count</td><td>number of objects to allocate </td></tr> <tr><td class="paramname">size</td><td>size of the objects to allocate </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>pointer to allocated memory / NULL pointer if there is an error </dd></dl> <p class="definition">Definition at line <a class="el" href="mem_8c_source.html#l00765">765</a> of file <a class="el" href="mem_8c_source.html">mem.c</a>.</p> <p class="reference">References <a class="el" href="mem_8c_source.html#l00603">mem_malloc()</a>, and <a class="el" href="string_8h.html#ace4b911463887af5e748326323e99a23">memset()</a>.</p> <div class="dynheader"> Here is the call graph for this function:</div> <div class="dyncontent"> <div class="center"><img src="mem_8c_ab0bdc525971701883f2065e7fb257a24_cgraph.png" border="0" usemap="#mem_8c_ab0bdc525971701883f2065e7fb257a24_cgraph" alt=""/></div> </div> </div> </div> <a id="a65169147c44e9db60d997819af9b455c"></a> <h2 class="memtitle"><span class="permalink"><a href="#a65169147c44e9db60d997819af9b455c">◆ </a></span>mem_free()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mem_free </td> <td>(</td> <td class="paramtype">void * </td> <td class="paramname"><em>rmem</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Put a struct mem back on the heap</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">rmem</td><td>is the data portion of a struct mem as returned by a previous call to <a class="el" href="mem_8c.html#a932aa40d85b14cb7331625e012d12335">mem_malloc()</a> </td></tr> </table> </dd> </dl> <p class="definition">Definition at line <a class="el" href="mem_8c_source.html#l00419">419</a> of file <a class="el" href="mem_8c_source.html">mem.c</a>.</p> <p class="reference">References <a class="el" href="debug_8h_source.html#l00116">LWIP_ASSERT</a>, <a class="el" href="debug_8h_source.html#l00057">LWIP_DBG_LEVEL_SERIOUS</a>, <a class="el" href="debug_8h_source.html#l00083">LWIP_DBG_TRACE</a>, <a class="el" href="debug_8h_source.html#l00164">LWIP_DEBUGF</a>, <a class="el" href="mem_8c_source.html#l00321">LWIP_MEM_FREE_DECL_PROTECT</a>, <a class="el" href="lwipopts_8h_source.html#l00054">MEM_ALIGNMENT</a>, <a class="el" href="lwipopts_8h_source.html#l00455">MEM_DEBUG</a>, and <a class="el" href="fat__string_8h_source.html#l00017">NULL</a>.</p> <p class="reference">Referenced by <a class="el" href="tcpip_8c_source.html#l00491">mem_free_callback()</a>, and <a class="el" href="pbuf_8c_source.html#l00715">pbuf_free()</a>.</p> </div> </div> <a id="a44a136e3b70c36abb6f8dc060c778113"></a> <h2 class="memtitle"><span class="permalink"><a href="#a44a136e3b70c36abb6f8dc060c778113">◆ </a></span>mem_init()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void mem_init </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Zero the heap and initialize start, end and lowest-free </p> <p class="definition">Definition at line <a class="el" href="mem_8c_source.html#l00382">382</a> of file <a class="el" href="mem_8c_source.html">mem.c</a>.</p> <p class="reference">References <a class="el" href="debug_8h_source.html#l00116">LWIP_ASSERT</a>, <a class="el" href="lwipopts_8h_source.html#l00054">MEM_ALIGNMENT</a>, and <a class="el" href="mem_8c_source.html#l00281">SIZEOF_STRUCT_MEM</a>.</p> <p class="reference">Referenced by <a class="el" href="core_2init_8c_source.html#l00333">lwip_init()</a>.</p> </div> </div> <a id="a932aa40d85b14cb7331625e012d12335"></a> <h2 class="memtitle"><span class="permalink"><a href="#a932aa40d85b14cb7331625e012d12335">◆ </a></span>mem_malloc()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void* mem_malloc </td> <td>(</td> <td class="paramtype"><a class="el" href="mem_8h.html#a49bff6e5dd4cb95fe6dc0670962bbf54">mem_size_t</a> </td> <td class="paramname"><em>size</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Allocate a block of memory with a minimum of 'size' bytes.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">size</td><td>is the minimum size of the requested block in bytes. </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>pointer to allocated memory or NULL if no free memory was found.</dd></dl> <p>Note that the returned value will always be aligned (as defined by MEM_ALIGNMENT). </p> <p class="definition">Definition at line <a class="el" href="mem_8c_source.html#l00603">603</a> of file <a class="el" href="mem_8c_source.html">mem.c</a>.</p> <p class="reference">References <a class="el" href="arch_8h_source.html#l00221">LWIP_MEM_ALIGN_SIZE</a>, <a class="el" href="mem_8c_source.html#l00325">LWIP_MEM_ALLOC_DECL_PROTECT</a>, <a class="el" href="mem_8c_source.html#l00282">MEM_SIZE_ALIGNED</a>, <a class="el" href="mem_8c_source.html#l00280">MIN_SIZE_ALIGNED</a>, <a class="el" href="fat__string_8h_source.html#l00017">NULL</a>, and <a class="el" href="sys__arch_8c_source.html#l00153">sys_mutex_lock()</a>.</p> <p class="reference">Referenced by <a class="el" href="ethernetif_8c_source.html#l00302">ethernetif_init()</a>, <a class="el" href="mem_8c_source.html#l00765">mem_calloc()</a>, and <a class="el" href="pbuf_8c_source.html#l00248">pbuf_alloc()</a>.</p> <div class="dynheader"> Here is the call graph for this function:</div> <div class="dyncontent"> <div class="center"><img src="mem_8c_a932aa40d85b14cb7331625e012d12335_cgraph.png" border="0" usemap="#mem_8c_a932aa40d85b14cb7331625e012d12335_cgraph" alt=""/></div> </div> </div> </div> <a id="a2f0214c1c0d4acf856fb3ec76818a5a9"></a> <h2 class="memtitle"><span class="permalink"><a href="#a2f0214c1c0d4acf856fb3ec76818a5a9">◆ </a></span>mem_trim()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void* mem_trim </td> <td>(</td> <td class="paramtype">void * </td> <td class="paramname"><em>rmem</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="mem_8h.html#a49bff6e5dd4cb95fe6dc0670962bbf54">mem_size_t</a> </td> <td class="paramname"><em>newsize</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Shrink memory returned by <a class="el" href="mem_8c.html#a932aa40d85b14cb7331625e012d12335">mem_malloc()</a>.</p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">rmem</td><td>pointer to memory allocated by mem_malloc the is to be shrinked </td></tr> <tr><td class="paramname">newsize</td><td>required size after shrinking (needs to be smaller than or equal to the previous size) </td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>for compatibility reasons: is always == rmem, at the moment or NULL if newsize is > old size, in which case rmem is NOT touched or freed! </dd></dl> <p class="definition">Definition at line <a class="el" href="mem_8c_source.html#l00478">478</a> of file <a class="el" href="mem_8c_source.html">mem.c</a>.</p> <p class="reference">References <a class="el" href="debug_8h_source.html#l00116">LWIP_ASSERT</a>, <a class="el" href="arch_8h_source.html#l00221">LWIP_MEM_ALIGN_SIZE</a>, <a class="el" href="mem_8c_source.html#l00321">LWIP_MEM_FREE_DECL_PROTECT</a>, <a class="el" href="mem_8c_source.html#l00282">MEM_SIZE_ALIGNED</a>, <a class="el" href="mem_8c_source.html#l00280">MIN_SIZE_ALIGNED</a>, and <a class="el" href="fat__string_8h_source.html#l00017">NULL</a>.</p> <p class="reference">Referenced by <a class="el" href="pbuf_8c_source.html#l00493">pbuf_realloc()</a>.</p> </div> </div> </div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <ul> <li class="navelem"><a class="el" href="dir_e6bb53534ac0e427887cf7a94c0c004e.html">C:</a></li><li class="navelem"><a class="el" href="dir_d99d5d4662bf24521eef49da6a8cd34d.html">Dev</a></li><li class="navelem"><a class="el" href="dir_474a4b306371cf7e7f6fa12cb0b77df6.html">git</a></li><li class="navelem"><a class="el" href="dir_849109bbd106d461b128d63e5babcedf.html">UbixOS</a></li><li class="navelem"><a class="el" href="dir_6ec99f6d7d5182ba8913209ab70c9f18.html">sys</a></li><li class="navelem"><a class="el" href="dir_6ed706464e1919433e32bb89560817da.html">net</a></li><li class="navelem"><a class="el" href="dir_cd4906596c0f2eb6dae79633ab001247.html">core</a></li><li class="navelem"><a class="el" href="mem_8c.html">mem.c</a></li> <li class="footer">Generated by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.16 </li> </ul> </div> </body> </html>