Sophie

Sophie

distrib > Mandriva > 2010.2 > i586 > media > contrib-backports > by-pkgid > 4f5f2dc0f55b453456458df885792b0b > files > 177

ucommon-doc-5.0.4-1mdv2010.2.i586.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>ucommon: ucommon::memalloc Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li><a href="examples.html"><span>Examples</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
      <li><a href="classes.html"><span>Data&nbsp;Structure&nbsp;Index</span></a></li>
      <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Data&nbsp;Fields</span></a></li>
    </ul>
  </div>
  <div class="navpath"><a class="el" href="a00208.html">ucommon</a>::<a class="el" href="a00079.html">memalloc</a>
  </div>
</div>
<div class="contents">
<h1>ucommon::memalloc Class Reference</h1><!-- doxytag: class="ucommon::memalloc" --><!-- doxytag: inherits="ucommon::MemoryProtocol,ucommon::LockingProtocol" -->
<p>A memory protocol pager for private heap manager.  
<a href="#_details">More...</a></p>

<p><code>#include &lt;<a class="el" href="a00190_source.html">memory.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for ucommon::memalloc:</div>
<div class="dynsection">
<div class="center"><img src="a00431.png" border="0" usemap="#ucommon_1_1memalloc_inherit__map" alt="Inheritance graph"/></div>
<map name="ucommon_1_1memalloc_inherit__map" id="ucommon_1_1memalloc_inherit__map">
<area shape="rect" id="node5" href="a00029.html" title="Buffered pager for storing paged strings for character protocol." alt="" coords="5,155,197,181"/><area shape="rect" id="node7" href="a00057.html" title="Traditional keypair config file parsing class." alt="" coords="221,155,403,181"/><area shape="rect" id="node9" href="a00081.html" title="A managed private heap for small allocations." alt="" coords="427,155,619,181"/><area shape="rect" id="node2" href="a00073.html" title="Common locking protocol." alt="" coords="181,5,443,32"/><area shape="rect" id="node11" href="a00054.html" title="A class to hold memory pointers referenced by string names." alt="" coords="171,229,363,256"/><area shape="rect" id="node15" href="a00060.html" title="A template class for a hash pager." alt="" coords="387,229,659,256"/><area shape="rect" id="node17" href="a00129.html" title="A utility class for generic shell operations." alt="" coords="683,229,845,256"/><area shape="rect" id="node13" href="a00017.html" title="A typed template for using a key association with typed objects." alt="" coords="76,304,457,331"/></map>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
<div class="dynheader">
Collaboration diagram for ucommon::memalloc:</div>
<div class="dynsection">
<div class="center"><img src="a00432.png" border="0" usemap="#ucommon_1_1memalloc_coll__map" alt="Collaboration graph"/></div>
<map name="ucommon_1_1memalloc_coll__map" id="ucommon_1_1memalloc_coll__map">
<area shape="rect" id="node2" href="a00073.html" title="Common locking protocol." alt="" coords="5,5,267,32"/></map>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00079.html#ae9a8e8784c11ce95a0e4d88ca5ce992a">_alloc</a> (size_t size)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Allocate memory from the pager heap.  <a href="#ae9a8e8784c11ce95a0e4d88ca5ce992a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">unsigned&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00079.html#a24d137604082b8abae766e914f45b059">getAlloc</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the size of a memory page.  <a href="#a24d137604082b8abae766e914f45b059"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">unsigned&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00079.html#a97bd0bede3a00425e27ba3fcc6be0fcd">getLimit</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the maximum number of pages that are permitted.  <a href="#a97bd0bede3a00425e27ba3fcc6be0fcd"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">unsigned&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00079.html#afc3defae0367c8c324a05f33cbfaad6d">getPages</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the number of pages that have been allocated from the real heap.  <a href="#afc3defae0367c8c324a05f33cbfaad6d"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00079.html#aae54db61a4d376e690fb2f9ddfc01800">memalloc</a> (size_t page=0)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Construct a memory pager.  <a href="#aae54db61a4d376e690fb2f9ddfc01800"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a28101c0ef241f902eaa3519d3ab7f0ea"></a><!-- doxytag: member="ucommon::memalloc::purge" ref="a28101c0ef241f902eaa3519d3ab7f0ea" args="(void)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00079.html#a28101c0ef241f902eaa3519d3ab7f0ea">purge</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Purge all allocated memory and heap pages immediately. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">unsigned&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00079.html#afa53c73c1dacbc56fdf1c0373da6b983">utilization</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Determine fragmentation level of acquired heap pages.  <a href="#afa53c73c1dacbc56fdf1c0373da6b983"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00079.html#a988a0333d80b462a23da03f82478aa1b">~memalloc</a> ()</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destroy a memory pager.  <a href="#a988a0333d80b462a23da03f82478aa1b"></a><br/></td></tr>
<tr><td colspan="2"><h2>Protected Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">page_t *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00079.html#a8daac66e9eab8039b616255185ad8ab7">pager</a> (void)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Acquire a new page from the heap.  <a href="#a8daac66e9eab8039b616255185ad8ab7"></a><br/></td></tr>
<tr><td colspan="2"><h2>Protected Attributes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4a7271364547a4d9f56edcffdacac19f"></a><!-- doxytag: member="ucommon::memalloc::limit" ref="a4a7271364547a4d9f56edcffdacac19f" args="" -->
unsigned&nbsp;</td><td class="memItemRight" valign="bottom"><b>limit</b></td></tr>
<tr><td colspan="2"><h2>Friends</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a22d8a318f25147d1243d2bcecc08aae9"></a><!-- doxytag: member="ucommon::memalloc::bufpager" ref="a22d8a318f25147d1243d2bcecc08aae9" args="" -->
class&nbsp;</td><td class="memItemRight" valign="bottom"><b>bufpager</b></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<p>A memory protocol pager for private heap manager. </p>
<p>This is used to allocate in an optimized manner, as it assumes no mutex locks are held or used as part of it's own internal processing. It also is designed for optimized performance. </p>
<dl class="author"><dt><b>Author:</b></dt><dd>David Sugar &lt;<a href="mailto:dyfet@gnutelephony.org">dyfet@gnutelephony.org</a>&gt; </dd></dl>

<p>Definition at line <a class="el" href="a00190_source.html#l00056">56</a> of file <a class="el" href="a00190_source.html">memory.h</a>.</p>
<hr/><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="aae54db61a4d376e690fb2f9ddfc01800"></a><!-- doxytag: member="ucommon::memalloc::memalloc" ref="aae54db61a4d376e690fb2f9ddfc01800" args="(size_t page=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ucommon::memalloc::memalloc </td>
          <td>(</td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>page</em> = <code>0</code></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Construct a memory pager. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>page</em>&nbsp;</td><td>size to use or 0 for OS allocation size. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a988a0333d80b462a23da03f82478aa1b"></a><!-- doxytag: member="ucommon::memalloc::~memalloc" ref="a988a0333d80b462a23da03f82478aa1b" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual ucommon::memalloc::~memalloc </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Destroy a memory pager. </p>
<p>Release all pages back to the heap at once. </p>

</div>
</div>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="ae9a8e8784c11ce95a0e4d88ca5ce992a"></a><!-- doxytag: member="ucommon::memalloc::_alloc" ref="ae9a8e8784c11ce95a0e4d88ca5ce992a" args="(size_t size)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void* ucommon::memalloc::_alloc </td>
          <td>(</td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>size</em></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Allocate memory from the pager heap. </p>
<p>The size of the request must be less than the size of the memory page used. This implements the memory protocol allocation method. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>size</em>&nbsp;</td><td>of memory request. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>allocated memory or NULL if not possible. </dd></dl>

<p>Reimplemented in <a class="el" href="a00081.html#a378938ebbe5c5f707204ab02b70451ba">ucommon::mempager</a>, and <a class="el" href="a00029.html#ab3992dc389aa06e5c2f04fcb6ca1fb84">ucommon::bufpager</a>.</p>

</div>
</div>
<a class="anchor" id="a24d137604082b8abae766e914f45b059"></a><!-- doxytag: member="ucommon::memalloc::getAlloc" ref="a24d137604082b8abae766e914f45b059" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned ucommon::memalloc::getAlloc </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get the size of a memory page. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>size of each pager heap allocation. </dd></dl>

<p>Definition at line <a class="el" href="a00190_source.html#l00116">116</a> of file <a class="el" href="a00190_source.html">memory.h</a>.</p>

</div>
</div>
<a class="anchor" id="a97bd0bede3a00425e27ba3fcc6be0fcd"></a><!-- doxytag: member="ucommon::memalloc::getLimit" ref="a97bd0bede3a00425e27ba3fcc6be0fcd" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned ucommon::memalloc::getLimit </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get the maximum number of pages that are permitted. </p>
<p>One can use a derived class to set and enforce a maximum limit to the number of pages that will be allocated from the real heap. This is often used to detect and bring down apps that are leaking. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>page allocation limit. </dd></dl>

<p>Definition at line <a class="el" href="a00190_source.html#l00109">109</a> of file <a class="el" href="a00190_source.html">memory.h</a>.</p>

</div>
</div>
<a class="anchor" id="afc3defae0367c8c324a05f33cbfaad6d"></a><!-- doxytag: member="ucommon::memalloc::getPages" ref="afc3defae0367c8c324a05f33cbfaad6d" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned ucommon::memalloc::getPages </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get the number of pages that have been allocated from the real heap. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>pages allocated from heap. </dd></dl>

<p>Reimplemented in <a class="el" href="a00017.html#a706f17536d7effc974ffbe27641b4024">ucommon::assoc_pointer&lt; T, I, M, P &gt;</a>.</p>

<p>Definition at line <a class="el" href="a00190_source.html#l00099">99</a> of file <a class="el" href="a00190_source.html">memory.h</a>.</p>

</div>
</div>
<a class="anchor" id="a8daac66e9eab8039b616255185ad8ab7"></a><!-- doxytag: member="ucommon::memalloc::pager" ref="a8daac66e9eab8039b616255185ad8ab7" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">page_t* ucommon::memalloc::pager </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [protected]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Acquire a new page from the heap. </p>
<p>This is mostly used internally. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>page structure of the newly acquired memory page. </dd></dl>

</div>
</div>
<a class="anchor" id="afa53c73c1dacbc56fdf1c0373da6b983"></a><!-- doxytag: member="ucommon::memalloc::utilization" ref="afa53c73c1dacbc56fdf1c0373da6b983" args="(void)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">unsigned ucommon::memalloc::utilization </td>
          <td>(</td>
          <td class="paramtype">void&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Determine fragmentation level of acquired heap pages. </p>
<p>This is represented as an average % utilization (0-100) and represents the used portion of each allocated heap page verse the page size. Since requests that cannot fit on an already allocated page are moved into a new page, there is some unusable space left over at the end of the page. When utilization approaches 100, this is good. A low utilization may suggest a larger page size should be used. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>pager utilization. </dd></dl>

<p>Reimplemented in <a class="el" href="a00081.html#a7cf6d9789486bd7147beb00ece4a4009">ucommon::mempager</a>, and <a class="el" href="a00017.html#a8417a60301a7edc65cea4a528959a77a">ucommon::assoc_pointer&lt; T, I, M, P &gt;</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>ucommon/<a class="el" href="a00190_source.html">memory.h</a></li>
</ul>
</div>
<hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jul 14 16:39:44 2011 for ucommon by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>