\hypertarget{group___mmal_pool}{}\section{Pools of buffer headers}
\label{group___mmal_pool}\index{Pools of buffer headers@{Pools of buffer headers}}
\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{struct_m_m_a_l___p_o_o_l___t}{M\+M\+A\+L\+\_\+\+P\+O\+O\+L\+\_\+\+T}
\end{DoxyCompactItemize}
\subsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
typedef struct \hyperlink{struct_m_m_a_l___p_o_o_l___t}{M\+M\+A\+L\+\_\+\+P\+O\+O\+L\+\_\+\+T} \hyperlink{group___mmal_pool_gaa7b00993a524d2b72411de224ef9c5af}{M\+M\+A\+L\+\_\+\+P\+O\+O\+L\+\_\+\+T}
\item 
typedef void $\ast$($\ast$ \hyperlink{group___mmal_pool_gafe54c41f0e3e9ea7b2ea63b49546f175}{mmal\+\_\+pool\+\_\+allocator\+\_\+alloc\+\_\+t}) (void $\ast$context, uint32\+\_\+t size)
\item 
typedef void($\ast$ \hyperlink{group___mmal_pool_ga1c2490e9da8d09cf3c677f264b0c88a2}{mmal\+\_\+pool\+\_\+allocator\+\_\+free\+\_\+t}) (void $\ast$context, void $\ast$mem)
\item 
typedef M\+M\+A\+L\+\_\+\+B\+O\+O\+L\+\_\+\+T($\ast$ \hyperlink{group___mmal_pool_gadeb3166a25e672cbddd0a50a7e053843}{M\+M\+A\+L\+\_\+\+P\+O\+O\+L\+\_\+\+B\+H\+\_\+\+C\+B\+\_\+\+T}) (\hyperlink{struct_m_m_a_l___p_o_o_l___t}{M\+M\+A\+L\+\_\+\+P\+O\+O\+L\+\_\+\+T} $\ast$pool, \hyperlink{struct_m_m_a_l___b_u_f_f_e_r___h_e_a_d_e_r___t}{M\+M\+A\+L\+\_\+\+B\+U\+F\+F\+E\+R\+\_\+\+H\+E\+A\+D\+E\+R\+\_\+\+T} $\ast$buffer, void $\ast$userdata)
\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{struct_m_m_a_l___p_o_o_l___t}{M\+M\+A\+L\+\_\+\+P\+O\+O\+L\+\_\+\+T} $\ast$ \hyperlink{group___mmal_pool_ga88abb9b58d7c2509640231b9fb905d58}{mmal\+\_\+pool\+\_\+create} (unsigned int headers, uint32\+\_\+t payload\+\_\+size)
\item 
\hyperlink{struct_m_m_a_l___p_o_o_l___t}{M\+M\+A\+L\+\_\+\+P\+O\+O\+L\+\_\+\+T} $\ast$ \hyperlink{group___mmal_pool_ga20230c4fff4a8db01fd5f8ae85bc685a}{mmal\+\_\+pool\+\_\+create\+\_\+with\+\_\+allocator} (unsigned int headers, uint32\+\_\+t payload\+\_\+size, void $\ast$allocator\+\_\+context, \hyperlink{group___mmal_pool_gafe54c41f0e3e9ea7b2ea63b49546f175}{mmal\+\_\+pool\+\_\+allocator\+\_\+alloc\+\_\+t} allocator\+\_\+alloc, \hyperlink{group___mmal_pool_ga1c2490e9da8d09cf3c677f264b0c88a2}{mmal\+\_\+pool\+\_\+allocator\+\_\+free\+\_\+t} allocator\+\_\+free)
\item 
void \hyperlink{group___mmal_pool_ga392efa95efde822ddec1187aa7332a3d}{mmal\+\_\+pool\+\_\+destroy} (\hyperlink{struct_m_m_a_l___p_o_o_l___t}{M\+M\+A\+L\+\_\+\+P\+O\+O\+L\+\_\+\+T} $\ast$pool)
\item 
\hyperlink{group___mmal_types_ga5ac87230bd615d2b154a9d5899bc37fd}{M\+M\+A\+L\+\_\+\+S\+T\+A\+T\+U\+S\+\_\+\+T} \hyperlink{group___mmal_pool_gaafbd65fabba428d264574e84b567c660}{mmal\+\_\+pool\+\_\+resize} (\hyperlink{struct_m_m_a_l___p_o_o_l___t}{M\+M\+A\+L\+\_\+\+P\+O\+O\+L\+\_\+\+T} $\ast$pool, unsigned int headers, uint32\+\_\+t payload\+\_\+size)
\item 
void \hyperlink{group___mmal_pool_gaad4521024f79a79db48e7d178460909c}{mmal\+\_\+pool\+\_\+callback\+\_\+set} (\hyperlink{struct_m_m_a_l___p_o_o_l___t}{M\+M\+A\+L\+\_\+\+P\+O\+O\+L\+\_\+\+T} $\ast$pool, \hyperlink{group___mmal_pool_gadeb3166a25e672cbddd0a50a7e053843}{M\+M\+A\+L\+\_\+\+P\+O\+O\+L\+\_\+\+B\+H\+\_\+\+C\+B\+\_\+\+T} cb, void $\ast$userdata)
\item 
void \hyperlink{group___mmal_pool_gab12972d9de1b76e885dcc47cb67a49eb}{mmal\+\_\+pool\+\_\+pre\+\_\+release\+\_\+callback\+\_\+set} (\hyperlink{struct_m_m_a_l___p_o_o_l___t}{M\+M\+A\+L\+\_\+\+P\+O\+O\+L\+\_\+\+T} $\ast$pool, \hyperlink{group___mmal_buffer_header_ga83d2d9944c72cbac55332fefcd48fc9a}{M\+M\+A\+L\+\_\+\+B\+H\+\_\+\+P\+R\+E\+\_\+\+R\+E\+L\+E\+A\+S\+E\+\_\+\+C\+B\+\_\+\+T} cb, void $\ast$userdata)
\end{DoxyCompactItemize}


\subsection{Detailed Description}
A pool of buffer headers is composed of a queue (M\+M\+A\+L\+\_\+\+Q\+U\+E\+U\+E\+\_\+\+T) and a user specified number of buffer headers (\hyperlink{struct_m_m_a_l___b_u_f_f_e_r___h_e_a_d_e_r___t}{M\+M\+A\+L\+\_\+\+B\+U\+F\+F\+E\+R\+\_\+\+H\+E\+A\+D\+E\+R\+\_\+\+T}). 

\subsection{Typedef Documentation}
\hypertarget{group___mmal_pool_gafe54c41f0e3e9ea7b2ea63b49546f175}{}\index{Pools of buffer headers@{Pools of buffer headers}!mmal\+\_\+pool\+\_\+allocator\+\_\+alloc\+\_\+t@{mmal\+\_\+pool\+\_\+allocator\+\_\+alloc\+\_\+t}}
\index{mmal\+\_\+pool\+\_\+allocator\+\_\+alloc\+\_\+t@{mmal\+\_\+pool\+\_\+allocator\+\_\+alloc\+\_\+t}!Pools of buffer headers@{Pools of buffer headers}}
\subsubsection[{mmal\+\_\+pool\+\_\+allocator\+\_\+alloc\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef void$\ast$($\ast$ mmal\+\_\+pool\+\_\+allocator\+\_\+alloc\+\_\+t) (void $\ast$context, uint32\+\_\+t size)}\label{group___mmal_pool_gafe54c41f0e3e9ea7b2ea63b49546f175}
Allocator alloc prototype


\begin{DoxyParams}{Parameters}
{\em context} & The context pointer passed in on pool creation. \\
\hline
{\em size} & The size of the allocation required, in bytes. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The pointer to the newly allocated memory, or N\+U\+L\+L on failure. 
\end{DoxyReturn}
\hypertarget{group___mmal_pool_ga1c2490e9da8d09cf3c677f264b0c88a2}{}\index{Pools of buffer headers@{Pools of buffer headers}!mmal\+\_\+pool\+\_\+allocator\+\_\+free\+\_\+t@{mmal\+\_\+pool\+\_\+allocator\+\_\+free\+\_\+t}}
\index{mmal\+\_\+pool\+\_\+allocator\+\_\+free\+\_\+t@{mmal\+\_\+pool\+\_\+allocator\+\_\+free\+\_\+t}!Pools of buffer headers@{Pools of buffer headers}}
\subsubsection[{mmal\+\_\+pool\+\_\+allocator\+\_\+free\+\_\+t}]{\setlength{\rightskip}{0pt plus 5cm}typedef void($\ast$ mmal\+\_\+pool\+\_\+allocator\+\_\+free\+\_\+t) (void $\ast$context, void $\ast$mem)}\label{group___mmal_pool_ga1c2490e9da8d09cf3c677f264b0c88a2}
Allocator free prototype


\begin{DoxyParams}{Parameters}
{\em context} & The context pointer passed in on pool creation. \\
\hline
{\em mem} & The pointer to the memory to be released. \\
\hline
\end{DoxyParams}
\hypertarget{group___mmal_pool_gadeb3166a25e672cbddd0a50a7e053843}{}\index{Pools of buffer headers@{Pools of buffer headers}!M\+M\+A\+L\+\_\+\+P\+O\+O\+L\+\_\+\+B\+H\+\_\+\+C\+B\+\_\+\+T@{M\+M\+A\+L\+\_\+\+P\+O\+O\+L\+\_\+\+B\+H\+\_\+\+C\+B\+\_\+\+T}}
\index{M\+M\+A\+L\+\_\+\+P\+O\+O\+L\+\_\+\+B\+H\+\_\+\+C\+B\+\_\+\+T@{M\+M\+A\+L\+\_\+\+P\+O\+O\+L\+\_\+\+B\+H\+\_\+\+C\+B\+\_\+\+T}!Pools of buffer headers@{Pools of buffer headers}}
\subsubsection[{M\+M\+A\+L\+\_\+\+P\+O\+O\+L\+\_\+\+B\+H\+\_\+\+C\+B\+\_\+\+T}]{\setlength{\rightskip}{0pt plus 5cm}typedef M\+M\+A\+L\+\_\+\+B\+O\+O\+L\+\_\+\+T($\ast$ M\+M\+A\+L\+\_\+\+P\+O\+O\+L\+\_\+\+B\+H\+\_\+\+C\+B\+\_\+\+T) ({\bf M\+M\+A\+L\+\_\+\+P\+O\+O\+L\+\_\+\+T} $\ast$pool, {\bf M\+M\+A\+L\+\_\+\+B\+U\+F\+F\+E\+R\+\_\+\+H\+E\+A\+D\+E\+R\+\_\+\+T} $\ast$buffer, void $\ast$userdata)}\label{group___mmal_pool_gadeb3166a25e672cbddd0a50a7e053843}
Definition of the callback used by a pool to signal back to the user that a buffer header has been released back to the pool.


\begin{DoxyParams}{Parameters}
{\em pool} & Pointer to the pool \\
\hline
{\em buffer} & Buffer header just released \\
\hline
{\em userdata} & User specific data passed in when setting the callback \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
True to have the buffer header put back in the pool\textquotesingle{}s queue, false if the buffer header has been taken within the callback. 
\end{DoxyReturn}
\hypertarget{group___mmal_pool_gaa7b00993a524d2b72411de224ef9c5af}{}\index{Pools of buffer headers@{Pools of buffer headers}!M\+M\+A\+L\+\_\+\+P\+O\+O\+L\+\_\+\+T@{M\+M\+A\+L\+\_\+\+P\+O\+O\+L\+\_\+\+T}}
\index{M\+M\+A\+L\+\_\+\+P\+O\+O\+L\+\_\+\+T@{M\+M\+A\+L\+\_\+\+P\+O\+O\+L\+\_\+\+T}!Pools of buffer headers@{Pools of buffer headers}}
\subsubsection[{M\+M\+A\+L\+\_\+\+P\+O\+O\+L\+\_\+\+T}]{\setlength{\rightskip}{0pt plus 5cm}typedef struct {\bf M\+M\+A\+L\+\_\+\+P\+O\+O\+L\+\_\+\+T}  {\bf M\+M\+A\+L\+\_\+\+P\+O\+O\+L\+\_\+\+T}}\label{group___mmal_pool_gaa7b00993a524d2b72411de224ef9c5af}
Definition of a pool 

\subsection{Function Documentation}
\hypertarget{group___mmal_pool_gaad4521024f79a79db48e7d178460909c}{}\index{Pools of buffer headers@{Pools of buffer headers}!mmal\+\_\+pool\+\_\+callback\+\_\+set@{mmal\+\_\+pool\+\_\+callback\+\_\+set}}
\index{mmal\+\_\+pool\+\_\+callback\+\_\+set@{mmal\+\_\+pool\+\_\+callback\+\_\+set}!Pools of buffer headers@{Pools of buffer headers}}
\subsubsection[{mmal\+\_\+pool\+\_\+callback\+\_\+set}]{\setlength{\rightskip}{0pt plus 5cm}void mmal\+\_\+pool\+\_\+callback\+\_\+set (
\begin{DoxyParamCaption}
\item[{{\bf M\+M\+A\+L\+\_\+\+P\+O\+O\+L\+\_\+\+T} $\ast$}]{pool, }
\item[{{\bf M\+M\+A\+L\+\_\+\+P\+O\+O\+L\+\_\+\+B\+H\+\_\+\+C\+B\+\_\+\+T}}]{cb, }
\item[{void $\ast$}]{userdata}
\end{DoxyParamCaption}
)}\label{group___mmal_pool_gaad4521024f79a79db48e7d178460909c}
Set a buffer header release callback to the pool. Each time a buffer header is released to the pool, the callback will be triggered.


\begin{DoxyParams}{Parameters}
{\em pool} & Pointer to a pool \\
\hline
{\em cb} & Callback function \\
\hline
{\em userdata} & User specific data which will be passed with each callback \\
\hline
\end{DoxyParams}
\hypertarget{group___mmal_pool_ga88abb9b58d7c2509640231b9fb905d58}{}\index{Pools of buffer headers@{Pools of buffer headers}!mmal\+\_\+pool\+\_\+create@{mmal\+\_\+pool\+\_\+create}}
\index{mmal\+\_\+pool\+\_\+create@{mmal\+\_\+pool\+\_\+create}!Pools of buffer headers@{Pools of buffer headers}}
\subsubsection[{mmal\+\_\+pool\+\_\+create}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+M\+A\+L\+\_\+\+P\+O\+O\+L\+\_\+\+T}$\ast$ mmal\+\_\+pool\+\_\+create (
\begin{DoxyParamCaption}
\item[{unsigned int}]{headers, }
\item[{uint32\+\_\+t}]{payload\+\_\+size}
\end{DoxyParamCaption}
)}\label{group___mmal_pool_ga88abb9b58d7c2509640231b9fb905d58}
Create a pool of \hyperlink{struct_m_m_a_l___b_u_f_f_e_r___h_e_a_d_e_r___t}{M\+M\+A\+L\+\_\+\+B\+U\+F\+F\+E\+R\+\_\+\+H\+E\+A\+D\+E\+R\+\_\+\+T}. After allocation, all allocated buffer headers will have been added to the queue.

It is valid to create a pool with no buffer headers, or with zero size payload buffers. The \hyperlink{group___mmal_pool_gaafbd65fabba428d264574e84b567c660}{mmal\+\_\+pool\+\_\+resize()} function can be used to increase or decrease the number of buffer headers, or the size of the payload buffers, after creation of the pool.

The payload buffers may also be allocated independently by the client, and assigned to the buffer headers, but it will be the responsibility of the client to deal with resizing and releasing the memory. It is recommended that \hyperlink{group___mmal_pool_ga20230c4fff4a8db01fd5f8ae85bc685a}{mmal\+\_\+pool\+\_\+create\+\_\+with\+\_\+allocator()} is used in this case, supplying allocator function pointers that will be used as necessary by M\+M\+A\+L.


\begin{DoxyParams}{Parameters}
{\em headers} & Number of buffer headers to be allocated with the pool. \\
\hline
{\em payload\+\_\+size} & Size of the payload buffer that will be allocated in each of the buffer headers. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Pointer to the newly created pool or N\+U\+L\+L on failure. 
\end{DoxyReturn}
\hypertarget{group___mmal_pool_ga20230c4fff4a8db01fd5f8ae85bc685a}{}\index{Pools of buffer headers@{Pools of buffer headers}!mmal\+\_\+pool\+\_\+create\+\_\+with\+\_\+allocator@{mmal\+\_\+pool\+\_\+create\+\_\+with\+\_\+allocator}}
\index{mmal\+\_\+pool\+\_\+create\+\_\+with\+\_\+allocator@{mmal\+\_\+pool\+\_\+create\+\_\+with\+\_\+allocator}!Pools of buffer headers@{Pools of buffer headers}}
\subsubsection[{mmal\+\_\+pool\+\_\+create\+\_\+with\+\_\+allocator}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+M\+A\+L\+\_\+\+P\+O\+O\+L\+\_\+\+T}$\ast$ mmal\+\_\+pool\+\_\+create\+\_\+with\+\_\+allocator (
\begin{DoxyParamCaption}
\item[{unsigned int}]{headers, }
\item[{uint32\+\_\+t}]{payload\+\_\+size, }
\item[{void $\ast$}]{allocator\+\_\+context, }
\item[{{\bf mmal\+\_\+pool\+\_\+allocator\+\_\+alloc\+\_\+t}}]{allocator\+\_\+alloc, }
\item[{{\bf mmal\+\_\+pool\+\_\+allocator\+\_\+free\+\_\+t}}]{allocator\+\_\+free}
\end{DoxyParamCaption}
)}\label{group___mmal_pool_ga20230c4fff4a8db01fd5f8ae85bc685a}
Create a pool of \hyperlink{struct_m_m_a_l___b_u_f_f_e_r___h_e_a_d_e_r___t}{M\+M\+A\+L\+\_\+\+B\+U\+F\+F\+E\+R\+\_\+\+H\+E\+A\+D\+E\+R\+\_\+\+T}. After allocation, all allocated buffer headers will have been added to the queue.

It is valid to create a pool with no buffer headers, or with zero size payload buffers. The \hyperlink{group___mmal_pool_gaafbd65fabba428d264574e84b567c660}{mmal\+\_\+pool\+\_\+resize()} function can be used to increase or decrease the number of buffer headers, or the size of the payload buffers, after creation of the pool. The allocators passed during creation shall be used when resizing the payload buffers.


\begin{DoxyParams}{Parameters}
{\em headers} & Number of buffer headers to be allocated with the pool. \\
\hline
{\em payload\+\_\+size} & Size of the payload buffer that will be allocated in each of the buffer headers. \\
\hline
{\em allocator\+\_\+context} & Pointer to the context of the allocator. \\
\hline
{\em allocator\+\_\+alloc} & Function pointer for the alloc call of the allocator. \\
\hline
{\em allocator\+\_\+free} & Function pointer for the free call of the allocator.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Pointer to the newly created pool or N\+U\+L\+L on failure. 
\end{DoxyReturn}
\hypertarget{group___mmal_pool_ga392efa95efde822ddec1187aa7332a3d}{}\index{Pools of buffer headers@{Pools of buffer headers}!mmal\+\_\+pool\+\_\+destroy@{mmal\+\_\+pool\+\_\+destroy}}
\index{mmal\+\_\+pool\+\_\+destroy@{mmal\+\_\+pool\+\_\+destroy}!Pools of buffer headers@{Pools of buffer headers}}
\subsubsection[{mmal\+\_\+pool\+\_\+destroy}]{\setlength{\rightskip}{0pt plus 5cm}void mmal\+\_\+pool\+\_\+destroy (
\begin{DoxyParamCaption}
\item[{{\bf M\+M\+A\+L\+\_\+\+P\+O\+O\+L\+\_\+\+T} $\ast$}]{pool}
\end{DoxyParamCaption}
)}\label{group___mmal_pool_ga392efa95efde822ddec1187aa7332a3d}
Destroy a pool of \hyperlink{struct_m_m_a_l___b_u_f_f_e_r___h_e_a_d_e_r___t}{M\+M\+A\+L\+\_\+\+B\+U\+F\+F\+E\+R\+\_\+\+H\+E\+A\+D\+E\+R\+\_\+\+T}. This will also deallocate all of the memory which was allocated when creating or resizing the pool.

If payload buffers have been allocated independently by the client, they should be released prior to calling this function. If the client provided allocator functions, the allocator\+\_\+free function shall be called for each payload buffer.


\begin{DoxyParams}{Parameters}
{\em pool} & Pointer to a pool \\
\hline
\end{DoxyParams}
\hypertarget{group___mmal_pool_gab12972d9de1b76e885dcc47cb67a49eb}{}\index{Pools of buffer headers@{Pools of buffer headers}!mmal\+\_\+pool\+\_\+pre\+\_\+release\+\_\+callback\+\_\+set@{mmal\+\_\+pool\+\_\+pre\+\_\+release\+\_\+callback\+\_\+set}}
\index{mmal\+\_\+pool\+\_\+pre\+\_\+release\+\_\+callback\+\_\+set@{mmal\+\_\+pool\+\_\+pre\+\_\+release\+\_\+callback\+\_\+set}!Pools of buffer headers@{Pools of buffer headers}}
\subsubsection[{mmal\+\_\+pool\+\_\+pre\+\_\+release\+\_\+callback\+\_\+set}]{\setlength{\rightskip}{0pt plus 5cm}void mmal\+\_\+pool\+\_\+pre\+\_\+release\+\_\+callback\+\_\+set (
\begin{DoxyParamCaption}
\item[{{\bf M\+M\+A\+L\+\_\+\+P\+O\+O\+L\+\_\+\+T} $\ast$}]{pool, }
\item[{{\bf M\+M\+A\+L\+\_\+\+B\+H\+\_\+\+P\+R\+E\+\_\+\+R\+E\+L\+E\+A\+S\+E\+\_\+\+C\+B\+\_\+\+T}}]{cb, }
\item[{void $\ast$}]{userdata}
\end{DoxyParamCaption}
)}\label{group___mmal_pool_gab12972d9de1b76e885dcc47cb67a49eb}
Set a pre-\/release callback for all buffer headers in the pool. Each time a buffer header is about to be released to the pool, the callback will be triggered.


\begin{DoxyParams}{Parameters}
{\em pool} & Pointer to the pool \\
\hline
{\em cb} & Pre-\/release callback function \\
\hline
{\em userdata} & User-\/specific data passed back with each callback \\
\hline
\end{DoxyParams}
\hypertarget{group___mmal_pool_gaafbd65fabba428d264574e84b567c660}{}\index{Pools of buffer headers@{Pools of buffer headers}!mmal\+\_\+pool\+\_\+resize@{mmal\+\_\+pool\+\_\+resize}}
\index{mmal\+\_\+pool\+\_\+resize@{mmal\+\_\+pool\+\_\+resize}!Pools of buffer headers@{Pools of buffer headers}}
\subsubsection[{mmal\+\_\+pool\+\_\+resize}]{\setlength{\rightskip}{0pt plus 5cm}{\bf M\+M\+A\+L\+\_\+\+S\+T\+A\+T\+U\+S\+\_\+\+T} mmal\+\_\+pool\+\_\+resize (
\begin{DoxyParamCaption}
\item[{{\bf M\+M\+A\+L\+\_\+\+P\+O\+O\+L\+\_\+\+T} $\ast$}]{pool, }
\item[{unsigned int}]{headers, }
\item[{uint32\+\_\+t}]{payload\+\_\+size}
\end{DoxyParamCaption}
)}\label{group___mmal_pool_gaafbd65fabba428d264574e84b567c660}
Resize a pool of \hyperlink{struct_m_m_a_l___b_u_f_f_e_r___h_e_a_d_e_r___t}{M\+M\+A\+L\+\_\+\+B\+U\+F\+F\+E\+R\+\_\+\+H\+E\+A\+D\+E\+R\+\_\+\+T}. This allows modifying either the number of allocated buffers, the payload size or both at the same time.


\begin{DoxyParams}{Parameters}
{\em pool} & Pointer to the pool \\
\hline
{\em headers} & New number of buffer headers to be allocated in the pool. It is not valid to pass zero for the number of buffers. \\
\hline
{\em payload\+\_\+size} & Size of the payload buffer that will be allocated in each of the buffer headers. If this is set to 0, all payload buffers shall be released. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
M\+M\+A\+L\+\_\+\+S\+U\+C\+C\+E\+S\+S or an error on failure. 
\end{DoxyReturn}
