\doxysection{Inter-\/\+Thread Queue}
\label{group__osmo__it__q}\index{Inter-\/Thread Queue@{Inter-\/Thread Queue}}
\doxysubsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \textbf{ osmo\+\_\+it\+\_\+q}
\begin{DoxyCompactList}\small\item\em One instance of an inter-\/thread queue. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \textbf{ osmo\+\_\+it\+\_\+q\+\_\+enqueue}(queue,  item,  member)~ \textbf{ \+\_\+osmo\+\_\+it\+\_\+q\+\_\+enqueue}(queue, \&(item)-\/$>$member)
\item 
\#define \textbf{ osmo\+\_\+it\+\_\+q\+\_\+dequeue}(queue,  item,  member)
\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
struct \textbf{ osmo\+\_\+it\+\_\+q} $\ast$ \textbf{ osmo\+\_\+it\+\_\+q\+\_\+by\+\_\+name} (const char $\ast$\textbf{ name})
\item 
int \textbf{ \+\_\+osmo\+\_\+it\+\_\+q\+\_\+enqueue} (struct \textbf{ osmo\+\_\+it\+\_\+q} $\ast$queue, struct \textbf{ llist\+\_\+head} $\ast$item)
\item 
struct \textbf{ llist\+\_\+head} $\ast$ \textbf{ \+\_\+osmo\+\_\+it\+\_\+q\+\_\+dequeue} (struct \textbf{ osmo\+\_\+it\+\_\+q} $\ast$queue)
\item 
struct \textbf{ osmo\+\_\+it\+\_\+q} $\ast$ \textbf{ osmo\+\_\+it\+\_\+q\+\_\+alloc} (void $\ast$ctx, const char $\ast$\textbf{ name}, unsigned int max\+\_\+length, void($\ast$read\+\_\+cb)(struct \textbf{ osmo\+\_\+it\+\_\+q} $\ast$q, struct \textbf{ llist\+\_\+head} $\ast$item), void $\ast$\textbf{ data})
\item 
void \textbf{ osmo\+\_\+it\+\_\+q\+\_\+destroy} (struct \textbf{ osmo\+\_\+it\+\_\+q} $\ast$q)
\item 
void \textbf{ osmo\+\_\+it\+\_\+q\+\_\+flush} (struct \textbf{ osmo\+\_\+it\+\_\+q} $\ast$q)
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}


\doxysubsection{Macro Definition Documentation}
\mbox{\label{group__osmo__it__q_gac4c85de6f1554e11e03e5c434f1778c3}} 
\index{Inter-\/Thread Queue@{Inter-\/Thread Queue}!osmo\_it\_q\_dequeue@{osmo\_it\_q\_dequeue}}
\index{osmo\_it\_q\_dequeue@{osmo\_it\_q\_dequeue}!Inter-\/Thread Queue@{Inter-\/Thread Queue}}
\doxysubsubsection{osmo\_it\_q\_dequeue}
{\footnotesize\ttfamily \#define osmo\+\_\+it\+\_\+q\+\_\+dequeue(\begin{DoxyParamCaption}\item[{}]{queue,  }\item[{}]{item,  }\item[{}]{member }\end{DoxyParamCaption})}

{\bfseries Value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{        \textcolor{keywordflow}{do} \{                    \(\backslash\)}
\DoxyCodeLine{        struct llist\_head *l = \_osmo\_it\_q\_dequeue(queue);          \(\backslash\)}
\DoxyCodeLine{        if (!l)                                                         \(\backslash\)}
\DoxyCodeLine{                *item = NULL;                                           \(\backslash\)}
\DoxyCodeLine{        else                                                            \(\backslash\)}
\DoxyCodeLine{                *item = llist\_entry(l, typeof(**item), member);              \(\backslash\)}
\DoxyCodeLine{\} \textcolor{keywordflow}{while} (0)}

\end{DoxyCode}
\mbox{\label{group__osmo__it__q_gab56762c36042bee31d8c139ec5786012}} 
\index{Inter-\/Thread Queue@{Inter-\/Thread Queue}!osmo\_it\_q\_enqueue@{osmo\_it\_q\_enqueue}}
\index{osmo\_it\_q\_enqueue@{osmo\_it\_q\_enqueue}!Inter-\/Thread Queue@{Inter-\/Thread Queue}}
\doxysubsubsection{osmo\_it\_q\_enqueue}
{\footnotesize\ttfamily \#define osmo\+\_\+it\+\_\+q\+\_\+enqueue(\begin{DoxyParamCaption}\item[{}]{queue,  }\item[{}]{item,  }\item[{}]{member }\end{DoxyParamCaption})~ \textbf{ \+\_\+osmo\+\_\+it\+\_\+q\+\_\+enqueue}(queue, \&(item)-\/$>$member)}



\doxysubsection{Function Documentation}
\mbox{\label{group__osmo__it__q_gaf52c8ef0c149718af5117aff6141b9d4}} 
\index{Inter-\/Thread Queue@{Inter-\/Thread Queue}!\_osmo\_it\_q\_dequeue@{\_osmo\_it\_q\_dequeue}}
\index{\_osmo\_it\_q\_dequeue@{\_osmo\_it\_q\_dequeue}!Inter-\/Thread Queue@{Inter-\/Thread Queue}}
\doxysubsubsection{\_osmo\_it\_q\_dequeue()}
{\footnotesize\ttfamily struct \textbf{ llist\+\_\+head} $\ast$ \+\_\+osmo\+\_\+it\+\_\+q\+\_\+dequeue (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+it\+\_\+q} $\ast$}]{queue }\end{DoxyParamCaption})}

\mbox{\label{group__osmo__it__q_gab463ae4d46ba05c307b17243d2d551b1}} 
\index{Inter-\/Thread Queue@{Inter-\/Thread Queue}!\_osmo\_it\_q\_enqueue@{\_osmo\_it\_q\_enqueue}}
\index{\_osmo\_it\_q\_enqueue@{\_osmo\_it\_q\_enqueue}!Inter-\/Thread Queue@{Inter-\/Thread Queue}}
\doxysubsubsection{\_osmo\_it\_q\_enqueue()}
{\footnotesize\ttfamily int \+\_\+osmo\+\_\+it\+\_\+q\+\_\+enqueue (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+it\+\_\+q} $\ast$}]{queue,  }\item[{struct \textbf{ llist\+\_\+head} $\ast$}]{item }\end{DoxyParamCaption})}

\mbox{\label{group__osmo__it__q_ga25f651a278991ee6d95db37ecf811203}} 
\index{Inter-\/Thread Queue@{Inter-\/Thread Queue}!osmo\_it\_q\_alloc@{osmo\_it\_q\_alloc}}
\index{osmo\_it\_q\_alloc@{osmo\_it\_q\_alloc}!Inter-\/Thread Queue@{Inter-\/Thread Queue}}
\doxysubsubsection{osmo\_it\_q\_alloc()}
{\footnotesize\ttfamily struct \textbf{ osmo\+\_\+it\+\_\+q} $\ast$ osmo\+\_\+it\+\_\+q\+\_\+alloc (\begin{DoxyParamCaption}\item[{void $\ast$}]{ctx,  }\item[{const char $\ast$}]{name,  }\item[{unsigned int}]{max\+\_\+length,  }\item[{void($\ast$)(struct \textbf{ osmo\+\_\+it\+\_\+q} $\ast$q, struct \textbf{ llist\+\_\+head} $\ast$item)}]{read\+\_\+cb,  }\item[{void $\ast$}]{data }\end{DoxyParamCaption})}

\mbox{\label{group__osmo__it__q_ga2a954821a905521aa4e67f894a64c81a}} 
\index{Inter-\/Thread Queue@{Inter-\/Thread Queue}!osmo\_it\_q\_by\_name@{osmo\_it\_q\_by\_name}}
\index{osmo\_it\_q\_by\_name@{osmo\_it\_q\_by\_name}!Inter-\/Thread Queue@{Inter-\/Thread Queue}}
\doxysubsubsection{osmo\_it\_q\_by\_name()}
{\footnotesize\ttfamily struct \textbf{ osmo\+\_\+it\+\_\+q} $\ast$ osmo\+\_\+it\+\_\+q\+\_\+by\+\_\+name (\begin{DoxyParamCaption}\item[{const char $\ast$}]{name }\end{DoxyParamCaption})}

\mbox{\label{group__osmo__it__q_ga421df70ee9051af51af594b9fa2d48ff}} 
\index{Inter-\/Thread Queue@{Inter-\/Thread Queue}!osmo\_it\_q\_destroy@{osmo\_it\_q\_destroy}}
\index{osmo\_it\_q\_destroy@{osmo\_it\_q\_destroy}!Inter-\/Thread Queue@{Inter-\/Thread Queue}}
\doxysubsubsection{osmo\_it\_q\_destroy()}
{\footnotesize\ttfamily void osmo\+\_\+it\+\_\+q\+\_\+destroy (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+it\+\_\+q} $\ast$}]{q }\end{DoxyParamCaption})}

\mbox{\label{group__osmo__it__q_gae3db370ece9fd33310bc3311cd3830e4}} 
\index{Inter-\/Thread Queue@{Inter-\/Thread Queue}!osmo\_it\_q\_flush@{osmo\_it\_q\_flush}}
\index{osmo\_it\_q\_flush@{osmo\_it\_q\_flush}!Inter-\/Thread Queue@{Inter-\/Thread Queue}}
\doxysubsubsection{osmo\_it\_q\_flush()}
{\footnotesize\ttfamily void osmo\+\_\+it\+\_\+q\+\_\+flush (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+it\+\_\+q} $\ast$}]{q }\end{DoxyParamCaption})}

