\doxysection{osmo\+\_\+it\+\_\+q Struct Reference}
\label{structosmo__it__q}\index{osmo\_it\_q@{osmo\_it\_q}}


One instance of an inter-\/thread queue.  




{\ttfamily \#include $<$it\+\_\+q.\+h$>$}

\doxysubsection*{Data Fields}
\begin{DoxyCompactItemize}
\item 
struct \textbf{ llist\+\_\+head} \textbf{ entry}
\item 
struct \textbf{ llist\+\_\+head} \textbf{ list}
\item 
pthread\+\_\+mutex\+\_\+t \textbf{ mutex}
\item 
unsigned int \textbf{ current\+\_\+length}
\item 
struct \textbf{ osmo\+\_\+fd} \textbf{ event\+\_\+ofd}
\item 
const char $\ast$ \textbf{ name}
\item 
unsigned int \textbf{ max\+\_\+length}
\item 
void($\ast$ \textbf{ read\+\_\+cb} )(struct \textbf{ osmo\+\_\+it\+\_\+q} $\ast$q, struct \textbf{ llist\+\_\+head} $\ast$item)
\item 
void $\ast$ \textbf{ data}
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
One instance of an inter-\/thread queue. 

The user can use this to queue messages between different threads. The enqueue operation is non-\/blocking (but of course grabs a mutex for the actual list operations to safeguard against races). The receiving thread is woken up by an event\+\_\+fd which can be registered in the libosmocore select loop handling. 

\doxysubsection{Field Documentation}
\mbox{\label{structosmo__it__q_a392b8866d3cd27c6b7ebe8de1e45df94}} 
\index{osmo\_it\_q@{osmo\_it\_q}!current\_length@{current\_length}}
\index{current\_length@{current\_length}!osmo\_it\_q@{osmo\_it\_q}}
\doxysubsubsection{current\_length}
{\footnotesize\ttfamily unsigned int osmo\+\_\+it\+\_\+q\+::current\+\_\+length}

\mbox{\label{structosmo__it__q_a2b23e0fdfb2a33602b09e1ef54250c0a}} 
\index{osmo\_it\_q@{osmo\_it\_q}!data@{data}}
\index{data@{data}!osmo\_it\_q@{osmo\_it\_q}}
\doxysubsubsection{data}
{\footnotesize\ttfamily void$\ast$ osmo\+\_\+it\+\_\+q\+::data}

\mbox{\label{structosmo__it__q_a185294b98ec5a73f6533544aec3402c9}} 
\index{osmo\_it\_q@{osmo\_it\_q}!entry@{entry}}
\index{entry@{entry}!osmo\_it\_q@{osmo\_it\_q}}
\doxysubsubsection{entry}
{\footnotesize\ttfamily struct \textbf{ llist\+\_\+head} osmo\+\_\+it\+\_\+q\+::entry}

\mbox{\label{structosmo__it__q_a18f587719c9ab1f72cd2f4bd9310ea1e}} 
\index{osmo\_it\_q@{osmo\_it\_q}!event\_ofd@{event\_ofd}}
\index{event\_ofd@{event\_ofd}!osmo\_it\_q@{osmo\_it\_q}}
\doxysubsubsection{event\_ofd}
{\footnotesize\ttfamily struct \textbf{ osmo\+\_\+fd} osmo\+\_\+it\+\_\+q\+::event\+\_\+ofd}

\mbox{\label{structosmo__it__q_a30d3862818bab103ee93543bdb7ad9f0}} 
\index{osmo\_it\_q@{osmo\_it\_q}!list@{list}}
\index{list@{list}!osmo\_it\_q@{osmo\_it\_q}}
\doxysubsubsection{list}
{\footnotesize\ttfamily struct \textbf{ llist\+\_\+head} osmo\+\_\+it\+\_\+q\+::list}

\mbox{\label{structosmo__it__q_a2dbd779abeefdc8d1598725b5087058f}} 
\index{osmo\_it\_q@{osmo\_it\_q}!max\_length@{max\_length}}
\index{max\_length@{max\_length}!osmo\_it\_q@{osmo\_it\_q}}
\doxysubsubsection{max\_length}
{\footnotesize\ttfamily unsigned int osmo\+\_\+it\+\_\+q\+::max\+\_\+length}

\mbox{\label{structosmo__it__q_a9254d144bbb09922082755c0531b14a8}} 
\index{osmo\_it\_q@{osmo\_it\_q}!mutex@{mutex}}
\index{mutex@{mutex}!osmo\_it\_q@{osmo\_it\_q}}
\doxysubsubsection{mutex}
{\footnotesize\ttfamily pthread\+\_\+mutex\+\_\+t osmo\+\_\+it\+\_\+q\+::mutex}

\mbox{\label{structosmo__it__q_a506c7d1c98c7425fdf6982d1de78b16d}} 
\index{osmo\_it\_q@{osmo\_it\_q}!name@{name}}
\index{name@{name}!osmo\_it\_q@{osmo\_it\_q}}
\doxysubsubsection{name}
{\footnotesize\ttfamily const char$\ast$ osmo\+\_\+it\+\_\+q\+::name}

\mbox{\label{structosmo__it__q_a667447a33d7bbef74703fec480071ec7}} 
\index{osmo\_it\_q@{osmo\_it\_q}!read\_cb@{read\_cb}}
\index{read\_cb@{read\_cb}!osmo\_it\_q@{osmo\_it\_q}}
\doxysubsubsection{read\_cb}
{\footnotesize\ttfamily void($\ast$ osmo\+\_\+it\+\_\+q\+::read\+\_\+cb) (struct \textbf{ osmo\+\_\+it\+\_\+q} $\ast$q, struct \textbf{ llist\+\_\+head} $\ast$item)}



The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize}
\item 
include/osmocom/core/\textbf{ it\+\_\+q.\+h}\end{DoxyCompactItemize}
