ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/vendor/libpeak-0.1.2/doc/html/group__mem__pool.html
Revision: 3251
Committed: Wed Apr 2 16:58:30 2014 UTC (11 years, 4 months ago) by michael
Content type: text/html
File size: 13607 byte(s)
Log Message:
- Imported libpeak-0.1.2

File Contents

# Content
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>PEAK Library: Memory pool</title>
4 <link href="doxygen.css" rel="stylesheet" type="text/css">
5 </head><body>
6 <!-- Generated by Doxygen 1.3.5 -->
7 <div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a></div>
8 <h1>Memory pool</h1><hr><a name="_details"></a><h2>Detailed Description</h2>
9 <dl compact><dt><b></b></dt><dd>Memory pool allocator for objects of same size. This interface offers an allocator <a class="el" href="group__mem__pool.html#ga9">peak_mem_pool_new()</a> which is O(1) except in some rare cases when the pool is growing (at worst log2(<code>n</code>) times for <code>n</code> allocations). However, if you know its size in advance, you can precise it in the <code>peak_mem_pool</code> creation method <a class="el" href="group__mem__pool.html#ga7">peak_mem_pool_create()</a>. You can create as many memory pools you want as interface and implementation are object oriented (like most of peak stuffs). </dd></dl>
10
11 <p>
12 <table border=0 cellpadding=0 cellspacing=0>
13 <tr><td></td></tr>
14 <tr><td colspan=2><br><h2>Typedefs</h2></td></tr>
15 <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="ga0" doxytag="mem_pool::peak_mem_pool" ></a>
16 typedef __peak_mem_pool *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="group__mem__pool.html#ga0">peak_mem_pool</a></td></tr>
17
18 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Opaque mem_pool pointer type. <br><br></td></tr>
19 <tr><td colspan=2><br><h2>Functions</h2></td></tr>
20 <tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="group__mem__pool.html#ga0">peak_mem_pool</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="group__mem__pool.html#ga1">peak_mem_pool_create</a> (int object_size, int log_size)</td></tr>
21
22 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a mem_pool object. <a href="#ga1"></a><br><br></td></tr>
23 <tr><td class="memItemLeft" nowrap align=right valign=top>void *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="group__mem__pool.html#ga2">peak_mem_pool_new</a> (<a class="el" href="group__mem__pool.html#ga0">peak_mem_pool</a> pool)</td></tr>
24
25 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Allocate an object in constant time. <a href="#ga2"></a><br><br></td></tr>
26 <tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="group__mem__pool.html#ga3">peak_mem_pool_delete</a> (<a class="el" href="group__mem__pool.html#ga0">peak_mem_pool</a> pool, void *ptr)</td></tr>
27
28 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Deallocate an object in constant time. <a href="#ga3"></a><br><br></td></tr>
29 <tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="group__mem__pool.html#ga4">peak_mem_pool_get_used_count</a> (<a class="el" href="group__mem__pool.html#ga0">peak_mem_pool</a> pool)</td></tr>
30
31 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Statistics: get used pointers count. <a href="#ga4"></a><br><br></td></tr>
32 <tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="group__mem__pool.html#ga5">peak_mem_pool_get_free_count</a> (<a class="el" href="group__mem__pool.html#ga0">peak_mem_pool</a> pool)</td></tr>
33
34 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Statistics: get free pointers count. <a href="#ga5"></a><br><br></td></tr>
35 <tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="group__mem__pool.html#ga6">peak_mem_pool_get_size</a> (<a class="el" href="group__mem__pool.html#ga0">peak_mem_pool</a> pool)</td></tr>
36
37 <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Statistics: get total pointers count. <a href="#ga6"></a><br><br></td></tr>
38 </table>
39 <hr><h2>Function Documentation</h2>
40 <a class="anchor" name="ga1" doxytag="mem_pool.h::peak_mem_pool_create" ></a><p>
41 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
42 <tr>
43 <td class="mdRow">
44 <table cellpadding="0" cellspacing="0" border="0">
45 <tr>
46 <td class="md" nowrap valign="top"> <a class="el" href="group__mem__pool.html#ga0">peak_mem_pool</a> peak_mem_pool_create </td>
47 <td class="md" valign="top">(&nbsp;</td>
48 <td class="md" nowrap valign="top">int&nbsp;</td>
49 <td class="mdname" nowrap> <em>object_size</em>, </td>
50 </tr>
51 <tr>
52 <td></td>
53 <td></td>
54 <td class="md" nowrap>int&nbsp;</td>
55 <td class="mdname" nowrap> <em>log_size</em></td>
56 </tr>
57 <tr>
58 <td></td>
59 <td class="md">)&nbsp;</td>
60 <td class="md" colspan="2"></td>
61 </tr>
62
63 </table>
64 </td>
65 </tr>
66 </table>
67 <table cellspacing=5 cellpadding=0 border=0>
68 <tr>
69 <td>
70 &nbsp;
71 </td>
72 <td>
73
74 <p>
75 Create a mem_pool object.
76 <p>
77 <dl compact><dt><b>Parameters:</b></dt><dd>
78 <table border="0" cellspacing="2" cellpadding="0">
79 <tr><td valign=top><em>object_size</em>&nbsp;</td><td>Size of each object in the memory pool. This cannot be changed later. It's commonly <code>sizeof</code>(struct your_object_structure). </td></tr>
80 <tr><td valign=top><em>log_size</em>&nbsp;</td><td>Log base 2 of the initial size of memory pool. Use 0 if you don't know, it will use the minimum.</td></tr>
81 </table>
82 </dl>
83 <dl compact><dt><b>Returns:</b></dt><dd>A new allocated <code>peak_mem_pool</code> reference or <code>NULL</code> if the operation failed. </dd></dl>
84 </td>
85 </tr>
86 </table>
87 <a class="anchor" name="ga3" doxytag="mem_pool.h::peak_mem_pool_delete" ></a><p>
88 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
89 <tr>
90 <td class="mdRow">
91 <table cellpadding="0" cellspacing="0" border="0">
92 <tr>
93 <td class="md" nowrap valign="top"> void peak_mem_pool_delete </td>
94 <td class="md" valign="top">(&nbsp;</td>
95 <td class="md" nowrap valign="top"><a class="el" href="group__mem__pool.html#ga0">peak_mem_pool</a>&nbsp;</td>
96 <td class="mdname" nowrap> <em>pool</em>, </td>
97 </tr>
98 <tr>
99 <td></td>
100 <td></td>
101 <td class="md" nowrap>void *&nbsp;</td>
102 <td class="mdname" nowrap> <em>ptr</em></td>
103 </tr>
104 <tr>
105 <td></td>
106 <td class="md">)&nbsp;</td>
107 <td class="md" colspan="2"></td>
108 </tr>
109
110 </table>
111 </td>
112 </tr>
113 </table>
114 <table cellspacing=5 cellpadding=0 border=0>
115 <tr>
116 <td>
117 &nbsp;
118 </td>
119 <td>
120
121 <p>
122 Deallocate an object in constant time.
123 <p>
124 This method is guaranted O(1) but in rare case it might free a chunk of memory.<p>
125 <dl compact><dt><b>Parameters:</b></dt><dd>
126 <table border="0" cellspacing="2" cellpadding="0">
127 <tr><td valign=top><em>pool</em>&nbsp;</td><td>The memory pool reference. </td></tr>
128 <tr><td valign=top><em>ptr</em>&nbsp;</td><td>The pointer to a memory space to deallocate. This pointer must have been previously provided by <a class="el" href="group__mem__pool.html#ga9">peak_mem_pool_new()</a>. </td></tr>
129 </table>
130 </dl>
131 </td>
132 </tr>
133 </table>
134 <a class="anchor" name="ga5" doxytag="mem_pool.h::peak_mem_pool_get_free_count" ></a><p>
135 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
136 <tr>
137 <td class="mdRow">
138 <table cellpadding="0" cellspacing="0" border="0">
139 <tr>
140 <td class="md" nowrap valign="top"> int peak_mem_pool_get_free_count </td>
141 <td class="md" valign="top">(&nbsp;</td>
142 <td class="md" nowrap valign="top"><a class="el" href="group__mem__pool.html#ga0">peak_mem_pool</a>&nbsp;</td>
143 <td class="mdname1" valign="top" nowrap> <em>pool</em> </td>
144 <td class="md" valign="top">&nbsp;)&nbsp;</td>
145 <td class="md" nowrap></td>
146 </tr>
147
148 </table>
149 </td>
150 </tr>
151 </table>
152 <table cellspacing=5 cellpadding=0 border=0>
153 <tr>
154 <td>
155 &nbsp;
156 </td>
157 <td>
158
159 <p>
160 Statistics: get free pointers count.
161 <p>
162 This method is guaranted O(1).<p>
163 <dl compact><dt><b>Parameters:</b></dt><dd>
164 <table border="0" cellspacing="2" cellpadding="0">
165 <tr><td valign=top><em>pool</em>&nbsp;</td><td>The memory pool reference.</td></tr>
166 </table>
167 </dl>
168 <dl compact><dt><b>Returns:</b></dt><dd>Number of pointer currently unused (free for allocation). </dd></dl>
169 </td>
170 </tr>
171 </table>
172 <a class="anchor" name="ga6" doxytag="mem_pool.h::peak_mem_pool_get_size" ></a><p>
173 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
174 <tr>
175 <td class="mdRow">
176 <table cellpadding="0" cellspacing="0" border="0">
177 <tr>
178 <td class="md" nowrap valign="top"> int peak_mem_pool_get_size </td>
179 <td class="md" valign="top">(&nbsp;</td>
180 <td class="md" nowrap valign="top"><a class="el" href="group__mem__pool.html#ga0">peak_mem_pool</a>&nbsp;</td>
181 <td class="mdname1" valign="top" nowrap> <em>pool</em> </td>
182 <td class="md" valign="top">&nbsp;)&nbsp;</td>
183 <td class="md" nowrap></td>
184 </tr>
185
186 </table>
187 </td>
188 </tr>
189 </table>
190 <table cellspacing=5 cellpadding=0 border=0>
191 <tr>
192 <td>
193 &nbsp;
194 </td>
195 <td>
196
197 <p>
198 Statistics: get total pointers count.
199 <p>
200 This method is guaranted O(1).<p>
201 <dl compact><dt><b>Parameters:</b></dt><dd>
202 <table border="0" cellspacing="2" cellpadding="0">
203 <tr><td valign=top><em>pool</em>&nbsp;</td><td>The memory pool reference.</td></tr>
204 </table>
205 </dl>
206 <dl compact><dt><b>Returns:</b></dt><dd>Size of all pointers really allocated by the memory pool. It grows automatically when no more free pointers are available, and also might eventually decrease if needed. </dd></dl>
207 </td>
208 </tr>
209 </table>
210 <a class="anchor" name="ga4" doxytag="mem_pool.h::peak_mem_pool_get_used_count" ></a><p>
211 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
212 <tr>
213 <td class="mdRow">
214 <table cellpadding="0" cellspacing="0" border="0">
215 <tr>
216 <td class="md" nowrap valign="top"> int peak_mem_pool_get_used_count </td>
217 <td class="md" valign="top">(&nbsp;</td>
218 <td class="md" nowrap valign="top"><a class="el" href="group__mem__pool.html#ga0">peak_mem_pool</a>&nbsp;</td>
219 <td class="mdname1" valign="top" nowrap> <em>pool</em> </td>
220 <td class="md" valign="top">&nbsp;)&nbsp;</td>
221 <td class="md" nowrap></td>
222 </tr>
223
224 </table>
225 </td>
226 </tr>
227 </table>
228 <table cellspacing=5 cellpadding=0 border=0>
229 <tr>
230 <td>
231 &nbsp;
232 </td>
233 <td>
234
235 <p>
236 Statistics: get used pointers count.
237 <p>
238 This method is guaranted O(1).<p>
239 <dl compact><dt><b>Parameters:</b></dt><dd>
240 <table border="0" cellspacing="2" cellpadding="0">
241 <tr><td valign=top><em>pool</em>&nbsp;</td><td>The memory pool reference.</td></tr>
242 </table>
243 </dl>
244 <dl compact><dt><b>Returns:</b></dt><dd>Number of pointer currently in use (allocated). </dd></dl>
245 </td>
246 </tr>
247 </table>
248 <a class="anchor" name="ga2" doxytag="mem_pool.h::peak_mem_pool_new" ></a><p>
249 <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
250 <tr>
251 <td class="mdRow">
252 <table cellpadding="0" cellspacing="0" border="0">
253 <tr>
254 <td class="md" nowrap valign="top"> void* peak_mem_pool_new </td>
255 <td class="md" valign="top">(&nbsp;</td>
256 <td class="md" nowrap valign="top"><a class="el" href="group__mem__pool.html#ga0">peak_mem_pool</a>&nbsp;</td>
257 <td class="mdname1" valign="top" nowrap> <em>pool</em> </td>
258 <td class="md" valign="top">&nbsp;)&nbsp;</td>
259 <td class="md" nowrap></td>
260 </tr>
261
262 </table>
263 </td>
264 </tr>
265 </table>
266 <table cellspacing=5 cellpadding=0 border=0>
267 <tr>
268 <td>
269 &nbsp;
270 </td>
271 <td>
272
273 <p>
274 Allocate an object in constant time.
275 <p>
276 This method is guaranted O(1) almost all the time, but in rare case it might allocate a chunk of memory to let the memory pool grow.<p>
277 <dl compact><dt><b>Parameters:</b></dt><dd>
278 <table border="0" cellspacing="2" cellpadding="0">
279 <tr><td valign=top><em>pool</em>&nbsp;</td><td>The memory pool reference.</td></tr>
280 </table>
281 </dl>
282 <dl compact><dt><b>Returns:</b></dt><dd>A pointer to <em>object_size</em> bytes of memory. The allocated space is suitably aligned for storage of any common type of object. Please consult libpeak's compile time options to enable storage of special object like Altivec's vector (which needs 16-bytes align). Also please note the returned memory is NOT normally initialized to zero bytes. </dd></dl>
283 </td>
284 </tr>
285 </table>
286 <hr size="1"><address style="align: right;"><small>Generated on Sat Jan 17 21:41:54 2004 for the PEAK Library by
287 <a href="http://www.doxygen.org/index.html">
288 <img src="doxygen.png" alt="doxygen" align="middle" border="0" >
289 </a></small>&nbsp; &nbsp; <a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=98146&amp;type=1" width="88" height="31" align="middle" border="0" alt="SourceForge.net Logo" /></a></address>
290 </body>
291 </html>
292