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

File Contents

# Content
1 \hypertarget{group__mem__pool}{
2 \section{Memory pool}
3 \label{group__mem__pool}\index{Memory pool@{Memory pool}}
4 }
5
6
7 \subsection{Detailed Description}
8 \begin{Desc}
9 \item[]Memory pool allocator for objects of same size. This interface offers an allocator \hyperlink{group__mem__pool_ga9}{peak\_\-mem\_\-pool\_\-new()} which is O(1) except in some rare cases when the pool is growing (at worst log2({\tt n}) times for {\tt n} allocations). However, if you know its size in advance, you can precise it in the {\tt peak\_\-mem\_\-pool} creation method \hyperlink{group__mem__pool_ga7}{peak\_\-mem\_\-pool\_\-create()}. You can create as many memory pools you want as interface and implementation are object oriented (like most of peak stuffs). \end{Desc}
10
11
12 \subsection*{Typedefs}
13 \begin{CompactItemize}
14 \item
15 \hypertarget{group__mem__pool_ga0}{
16 typedef \_\-\_\-peak\_\-mem\_\-pool $\ast$ \hyperlink{group__mem__pool_ga0}{peak\_\-mem\_\-pool}}
17 \label{group__mem__pool_ga0}
18
19 \begin{CompactList}\small\item\em Opaque mem\_\-pool pointer type. \item\end{CompactList}\end{CompactItemize}
20 \subsection*{Functions}
21 \begin{CompactItemize}
22 \item
23 \hyperlink{group__mem__pool_ga0}{peak\_\-mem\_\-pool} \hyperlink{group__mem__pool_ga1}{peak\_\-mem\_\-pool\_\-create} (int object\_\-size, int log\_\-size)
24 \begin{CompactList}\small\item\em Create a mem\_\-pool object. \item\end{CompactList}\item
25 void $\ast$ \hyperlink{group__mem__pool_ga2}{peak\_\-mem\_\-pool\_\-new} (\hyperlink{group__mem__pool_ga0}{peak\_\-mem\_\-pool} pool)
26 \begin{CompactList}\small\item\em Allocate an object in constant time. \item\end{CompactList}\item
27 void \hyperlink{group__mem__pool_ga3}{peak\_\-mem\_\-pool\_\-delete} (\hyperlink{group__mem__pool_ga0}{peak\_\-mem\_\-pool} pool, void $\ast$ptr)
28 \begin{CompactList}\small\item\em Deallocate an object in constant time. \item\end{CompactList}\item
29 int \hyperlink{group__mem__pool_ga4}{peak\_\-mem\_\-pool\_\-get\_\-used\_\-count} (\hyperlink{group__mem__pool_ga0}{peak\_\-mem\_\-pool} pool)
30 \begin{CompactList}\small\item\em Statistics: get used pointers count. \item\end{CompactList}\item
31 int \hyperlink{group__mem__pool_ga5}{peak\_\-mem\_\-pool\_\-get\_\-free\_\-count} (\hyperlink{group__mem__pool_ga0}{peak\_\-mem\_\-pool} pool)
32 \begin{CompactList}\small\item\em Statistics: get free pointers count. \item\end{CompactList}\item
33 int \hyperlink{group__mem__pool_ga6}{peak\_\-mem\_\-pool\_\-get\_\-size} (\hyperlink{group__mem__pool_ga0}{peak\_\-mem\_\-pool} pool)
34 \begin{CompactList}\small\item\em Statistics: get total pointers count. \item\end{CompactList}\end{CompactItemize}
35
36
37 \subsection{Function Documentation}
38 \hypertarget{group__mem__pool_ga1}{
39 \index{mem_pool@{mem\_\-pool}!peak_mem_pool_create@{peak\_\-mem\_\-pool\_\-create}}
40 \index{peak_mem_pool_create@{peak\_\-mem\_\-pool\_\-create}!mem_pool@{mem\_\-pool}}
41 \subsubsection[peak\_\-mem\_\-pool\_\-create]{\setlength{\rightskip}{0pt plus 5cm}\hyperlink{group__mem__pool_ga0}{peak\_\-mem\_\-pool} peak\_\-mem\_\-pool\_\-create (int {\em object\_\-size}, int {\em log\_\-size})}}
42 \label{group__mem__pool_ga1}
43
44
45 Create a mem\_\-pool object.
46
47 \begin{Desc}
48 \item[Parameters:]
49 \begin{description}
50 \item[{\em object\_\-size}]Size of each object in the memory pool. This cannot be changed later. It's commonly {\tt sizeof}(struct your\_\-object\_\-structure). \item[{\em log\_\-size}]Log base 2 of the initial size of memory pool. Use 0 if you don't know, it will use the minimum.\end{description}
51 \end{Desc}
52 \begin{Desc}
53 \item[Returns:]A new allocated {\tt peak\_\-mem\_\-pool} reference or {\tt NULL} if the operation failed. \end{Desc}
54 \hypertarget{group__mem__pool_ga3}{
55 \index{mem_pool@{mem\_\-pool}!peak_mem_pool_delete@{peak\_\-mem\_\-pool\_\-delete}}
56 \index{peak_mem_pool_delete@{peak\_\-mem\_\-pool\_\-delete}!mem_pool@{mem\_\-pool}}
57 \subsubsection[peak\_\-mem\_\-pool\_\-delete]{\setlength{\rightskip}{0pt plus 5cm}void peak\_\-mem\_\-pool\_\-delete (\hyperlink{group__mem__pool_ga0}{peak\_\-mem\_\-pool} {\em pool}, void $\ast$ {\em ptr})}}
58 \label{group__mem__pool_ga3}
59
60
61 Deallocate an object in constant time.
62
63 This method is guaranted O(1) but in rare case it might free a chunk of memory.
64
65 \begin{Desc}
66 \item[Parameters:]
67 \begin{description}
68 \item[{\em pool}]The memory pool reference. \item[{\em ptr}]The pointer to a memory space to deallocate. This pointer must have been previously provided by \hyperlink{group__mem__pool_ga9}{peak\_\-mem\_\-pool\_\-new()}. \end{description}
69 \end{Desc}
70 \hypertarget{group__mem__pool_ga5}{
71 \index{mem_pool@{mem\_\-pool}!peak_mem_pool_get_free_count@{peak\_\-mem\_\-pool\_\-get\_\-free\_\-count}}
72 \index{peak_mem_pool_get_free_count@{peak\_\-mem\_\-pool\_\-get\_\-free\_\-count}!mem_pool@{mem\_\-pool}}
73 \subsubsection[peak\_\-mem\_\-pool\_\-get\_\-free\_\-count]{\setlength{\rightskip}{0pt plus 5cm}int peak\_\-mem\_\-pool\_\-get\_\-free\_\-count (\hyperlink{group__mem__pool_ga0}{peak\_\-mem\_\-pool} {\em pool})}}
74 \label{group__mem__pool_ga5}
75
76
77 Statistics: get free pointers count.
78
79 This method is guaranted O(1).
80
81 \begin{Desc}
82 \item[Parameters:]
83 \begin{description}
84 \item[{\em pool}]The memory pool reference.\end{description}
85 \end{Desc}
86 \begin{Desc}
87 \item[Returns:]Number of pointer currently unused (free for allocation). \end{Desc}
88 \hypertarget{group__mem__pool_ga6}{
89 \index{mem_pool@{mem\_\-pool}!peak_mem_pool_get_size@{peak\_\-mem\_\-pool\_\-get\_\-size}}
90 \index{peak_mem_pool_get_size@{peak\_\-mem\_\-pool\_\-get\_\-size}!mem_pool@{mem\_\-pool}}
91 \subsubsection[peak\_\-mem\_\-pool\_\-get\_\-size]{\setlength{\rightskip}{0pt plus 5cm}int peak\_\-mem\_\-pool\_\-get\_\-size (\hyperlink{group__mem__pool_ga0}{peak\_\-mem\_\-pool} {\em pool})}}
92 \label{group__mem__pool_ga6}
93
94
95 Statistics: get total pointers count.
96
97 This method is guaranted O(1).
98
99 \begin{Desc}
100 \item[Parameters:]
101 \begin{description}
102 \item[{\em pool}]The memory pool reference.\end{description}
103 \end{Desc}
104 \begin{Desc}
105 \item[Returns:]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. \end{Desc}
106 \hypertarget{group__mem__pool_ga4}{
107 \index{mem_pool@{mem\_\-pool}!peak_mem_pool_get_used_count@{peak\_\-mem\_\-pool\_\-get\_\-used\_\-count}}
108 \index{peak_mem_pool_get_used_count@{peak\_\-mem\_\-pool\_\-get\_\-used\_\-count}!mem_pool@{mem\_\-pool}}
109 \subsubsection[peak\_\-mem\_\-pool\_\-get\_\-used\_\-count]{\setlength{\rightskip}{0pt plus 5cm}int peak\_\-mem\_\-pool\_\-get\_\-used\_\-count (\hyperlink{group__mem__pool_ga0}{peak\_\-mem\_\-pool} {\em pool})}}
110 \label{group__mem__pool_ga4}
111
112
113 Statistics: get used pointers count.
114
115 This method is guaranted O(1).
116
117 \begin{Desc}
118 \item[Parameters:]
119 \begin{description}
120 \item[{\em pool}]The memory pool reference.\end{description}
121 \end{Desc}
122 \begin{Desc}
123 \item[Returns:]Number of pointer currently in use (allocated). \end{Desc}
124 \hypertarget{group__mem__pool_ga2}{
125 \index{mem_pool@{mem\_\-pool}!peak_mem_pool_new@{peak\_\-mem\_\-pool\_\-new}}
126 \index{peak_mem_pool_new@{peak\_\-mem\_\-pool\_\-new}!mem_pool@{mem\_\-pool}}
127 \subsubsection[peak\_\-mem\_\-pool\_\-new]{\setlength{\rightskip}{0pt plus 5cm}void$\ast$ peak\_\-mem\_\-pool\_\-new (\hyperlink{group__mem__pool_ga0}{peak\_\-mem\_\-pool} {\em pool})}}
128 \label{group__mem__pool_ga2}
129
130
131 Allocate an object in constant time.
132
133 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.
134
135 \begin{Desc}
136 \item[Parameters:]
137 \begin{description}
138 \item[{\em pool}]The memory pool reference.\end{description}
139 \end{Desc}
140 \begin{Desc}
141 \item[Returns:]A pointer to {\em object\_\-size\/} 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. \end{Desc}