\doxysection{osmo\+\_\+io\+\_\+fd Struct Reference}
\label{structosmo__io__fd}\index{osmo\_io\_fd@{osmo\_io\_fd}}


{\ttfamily \#include $<$osmo\+\_\+io\+\_\+internal.\+h$>$}

\doxysubsection*{Data Fields}
\begin{DoxyCompactItemize}
\item 
struct \textbf{ llist\+\_\+head} \textbf{ list}
\begin{DoxyCompactList}\small\item\em linked list for internal management \end{DoxyCompactList}\item 
int \textbf{ fd}
\begin{DoxyCompactList}\small\item\em actual operating-\/system level file decriptor \end{DoxyCompactList}\item 
enum \textbf{ osmo\+\_\+io\+\_\+fd\+\_\+mode} \textbf{ mode}
\begin{DoxyCompactList}\small\item\em type of read/write mode to use \end{DoxyCompactList}\item 
uint32\+\_\+t \textbf{ flags}
\begin{DoxyCompactList}\small\item\em flags to guard closing/freeing of iofd \end{DoxyCompactList}\item 
char $\ast$ \textbf{ name}
\begin{DoxyCompactList}\small\item\em human-\/readable name to associte with fd \end{DoxyCompactList}\item 
struct \textbf{ osmo\+\_\+io\+\_\+ops} \textbf{ io\+\_\+ops}
\begin{DoxyCompactList}\small\item\em send/recv (msg) callback functions \end{DoxyCompactList}\item 
struct \textbf{ msgb} $\ast$ \textbf{ pending}
\begin{DoxyCompactList}\small\item\em Pending msgb to keep partial data during segmentation. \end{DoxyCompactList}\item 
void $\ast$ \textbf{ data}
\begin{DoxyCompactList}\small\item\em data pointer passed through to call-\/back function \end{DoxyCompactList}\item 
unsigned int \textbf{ priv\+\_\+nr}
\begin{DoxyCompactList}\small\item\em private number, extending {\itshape data} \end{DoxyCompactList}\item 
size\+\_\+t \textbf{ cmsg\+\_\+size}
\begin{DoxyCompactList}\small\item\em size of iofd\+\_\+msghdr.\+cmsg[] when allocated in recvmsg path \end{DoxyCompactList}\item 
uint8\+\_\+t \textbf{ io\+\_\+read\+\_\+buffers}
\begin{DoxyCompactList}\small\item\em maximum number of message-\/buffers per read operation \end{DoxyCompactList}\item 
uint8\+\_\+t \textbf{ io\+\_\+write\+\_\+buffers}
\begin{DoxyCompactList}\small\item\em maximum number of message-\/buffers per write operation \end{DoxyCompactList}\item 
\begin{tabbing}
xx\=xx\=xx\=xx\=xx\=xx\=xx\=xx\=xx\=\kill
struct \{\\
\>const void $\ast$ \textbf{ ctx}\\
\>\>{\em talloc context from which to allocate msgb when reading }\\
\>unsigned int \textbf{ size}\\
\>\>{\em size of msgb to allocate (excluding headroom) }\\
\>unsigned int \textbf{ headroom}\\
\>\>{\em headroom to allocate when allocating msgb\textquotesingle{}s }\\
\} \textbf{ msgb\_alloc}\\

\end{tabbing}\item 
\begin{tabbing}
xx\=xx\=xx\=xx\=xx\=xx\=xx\=xx\=xx\=\kill
struct \{\\
\>unsigned int \textbf{ max\_length}\\
\>\>{\em maximum length of write queue }\\
\>unsigned int \textbf{ current\_length}\\
\>\>{\em current length of write queue }\\
\>struct \textbf{ llist\_head} \textbf{ msg\_queue}\\
\>\>{\em actual linked list implementing the transmit queue }\\
\} \textbf{ tx\_queue}\\

\end{tabbing}\item 
\begin{tabbing}
xx\=xx\=xx\=xx\=xx\=xx\=xx\=xx\=xx\=\kill
union \{\\
\>struct \{\\
\>\>struct \textbf{ osmo\_fd} \textbf{ ofd}\\
\>\} \textbf{ poll}\\
\>struct \{\\
\>\>struct \{\\
\>\>\>bool \textbf{ enabled}\\
\>\>\>\>{\em read is enabled, due to registration of callback function }\\
\>\>\>uint8\_t \textbf{ num\_sqes}\\
\>\>\>\>{\em requested number of simultaniously submitted read SQEs }\\
\>\>\>void $\ast$ \textbf{ msghdr} [\textbf{ IOFD\_MSGHDR\_MAX\_READ\_SQES}]\\
\>\>\>\>{\em array of simultaneously submitted read SQEs }\\
\>\>\>struct io\_uring $\ast$ \textbf{ ring}\\
\>\>\>\>{\em ring the read SQEs have been submitted to }\\
\>\>\>uint8\_t \textbf{ sqes\_submitted}\\
\>\>\>\>{\em current number of simultaneously submitted read SQEs }\\
\>\>\} \textbf{ read}\\
\>\>struct \{\\
\>\>\>bool \textbf{ enabled}\\
\>\>\>\>{\em write is enabled, due to pending msghdr in tx\_queue }\\
\>\>\>void $\ast$ \textbf{ msghdr}\\
\>\>\>\>{\em submitted write SQE }\\
\>\>\>struct io\_uring $\ast$ \textbf{ ring}\\
\>\>\>\>{\em ring the write SQE has been submitted to }\\
\>\>\} \textbf{ write}\\
\>\>struct \textbf{ osmo\_fd} \textbf{ connect\_ofd}\\
\>\} \textbf{ uring}\\
\} \textbf{ u}\\

\end{tabbing}\end{DoxyCompactItemize}


\doxysubsection{Field Documentation}
\mbox{\label{structosmo__io__fd_aa7166045d288e12b889f1f398eeb4923}} 
\index{osmo\_io\_fd@{osmo\_io\_fd}!cmsg\_size@{cmsg\_size}}
\index{cmsg\_size@{cmsg\_size}!osmo\_io\_fd@{osmo\_io\_fd}}
\doxysubsubsection{cmsg\_size}
{\footnotesize\ttfamily size\+\_\+t osmo\+\_\+io\+\_\+fd\+::cmsg\+\_\+size}



size of iofd\+\_\+msghdr.\+cmsg[] when allocated in recvmsg path 



Referenced by \textbf{ iofd\+\_\+poll\+\_\+ofd\+\_\+cb\+\_\+recvmsg\+\_\+sendmsg()}, and \textbf{ osmo\+\_\+iofd\+\_\+set\+\_\+cmsg\+\_\+size()}.

\mbox{\label{structosmo__io__fd_ab226b1d7438d7c4c8e3485818aba5af6}} 
\index{osmo\_io\_fd@{osmo\_io\_fd}!connect\_ofd@{connect\_ofd}}
\index{connect\_ofd@{connect\_ofd}!osmo\_io\_fd@{osmo\_io\_fd}}
\doxysubsubsection{connect\_ofd}
{\footnotesize\ttfamily struct \textbf{ osmo\+\_\+fd} osmo\+\_\+io\+\_\+fd\+::connect\+\_\+ofd}

\mbox{\label{structosmo__io__fd_ae927ca249f6d0178585fa9323c28e060}} 
\index{osmo\_io\_fd@{osmo\_io\_fd}!ctx@{ctx}}
\index{ctx@{ctx}!osmo\_io\_fd@{osmo\_io\_fd}}
\doxysubsubsection{ctx}
{\footnotesize\ttfamily const void$\ast$ osmo\+\_\+io\+\_\+fd\+::ctx}



talloc context from which to allocate msgb when reading 



Referenced by \textbf{ \+\_\+call\+\_\+read\+\_\+cb()}, \textbf{ iofd\+\_\+handle\+\_\+recv()}, and \textbf{ osmo\+\_\+iofd\+\_\+setup()}.

\mbox{\label{structosmo__io__fd_a200497bb7aa734ce827aa795863d5742}} 
\index{osmo\_io\_fd@{osmo\_io\_fd}!current\_length@{current\_length}}
\index{current\_length@{current\_length}!osmo\_io\_fd@{osmo\_io\_fd}}
\doxysubsubsection{current\_length}
{\footnotesize\ttfamily unsigned int osmo\+\_\+io\+\_\+fd\+::current\+\_\+length}



current length of write queue 



Referenced by \textbf{ iofd\+\_\+txqueue\+\_\+dequeue()}, \textbf{ iofd\+\_\+txqueue\+\_\+enqueue()}, \textbf{ iofd\+\_\+txqueue\+\_\+enqueue\+\_\+front()}, \textbf{ osmo\+\_\+iofd\+\_\+register()}, and \textbf{ osmo\+\_\+iofd\+\_\+txqueue\+\_\+len()}.

\mbox{\label{structosmo__io__fd_aed3261fb71ffa29f7563c943c4c21bf6}} 
\index{osmo\_io\_fd@{osmo\_io\_fd}!data@{data}}
\index{data@{data}!osmo\_io\_fd@{osmo\_io\_fd}}
\doxysubsubsection{data}
{\footnotesize\ttfamily void$\ast$ osmo\+\_\+io\+\_\+fd\+::data}



data pointer passed through to call-\/back function 



Referenced by \textbf{ osmo\+\_\+iofd\+\_\+get\+\_\+data()}, \textbf{ osmo\+\_\+iofd\+\_\+set\+\_\+data()}, and \textbf{ osmo\+\_\+iofd\+\_\+setup()}.

\mbox{\label{structosmo__io__fd_a75d6f6b3e5d53220cc39659500c300d1}} 
\index{osmo\_io\_fd@{osmo\_io\_fd}!enabled@{enabled}}
\index{enabled@{enabled}!osmo\_io\_fd@{osmo\_io\_fd}}
\doxysubsubsection{enabled}
{\footnotesize\ttfamily bool osmo\+\_\+io\+\_\+fd\+::enabled}



read is enabled, due to registration of callback function 

write is enabled, due to pending msghdr in tx\+\_\+queue \mbox{\label{structosmo__io__fd_ae4105adcc04d3423d489ea4a6a1ee76c}} 
\index{osmo\_io\_fd@{osmo\_io\_fd}!fd@{fd}}
\index{fd@{fd}!osmo\_io\_fd@{osmo\_io\_fd}}
\doxysubsubsection{fd}
{\footnotesize\ttfamily int osmo\+\_\+io\+\_\+fd\+::fd}



actual operating-\/system level file decriptor 



Referenced by \textbf{ \+\_\+log\+\_\+target\+\_\+file\+\_\+setup\+\_\+iofd()}, \textbf{ iofd\+\_\+poll\+\_\+register()}, \textbf{ log\+\_\+target\+\_\+file\+\_\+get\+\_\+nonblock()}, \textbf{ log\+\_\+target\+\_\+file\+\_\+set\+\_\+nonblock()}, \textbf{ osmo\+\_\+iofd\+\_\+close()}, \textbf{ osmo\+\_\+iofd\+\_\+get\+\_\+fd()}, \textbf{ osmo\+\_\+iofd\+\_\+register()}, and \textbf{ osmo\+\_\+iofd\+\_\+setup()}.

\mbox{\label{structosmo__io__fd_a1be0f2518b2491bced3bc149fb4a6bac}} 
\index{osmo\_io\_fd@{osmo\_io\_fd}!flags@{flags}}
\index{flags@{flags}!osmo\_io\_fd@{osmo\_io\_fd}}
\doxysubsubsection{flags}
{\footnotesize\ttfamily uint32\+\_\+t osmo\+\_\+io\+\_\+fd\+::flags}



flags to guard closing/freeing of iofd 



Referenced by \textbf{ log\+\_\+target\+\_\+file\+\_\+get\+\_\+nonblock()}, and \textbf{ log\+\_\+target\+\_\+file\+\_\+set\+\_\+nonblock()}.

\mbox{\label{structosmo__io__fd_acbce65b1ab089adbc5739b4bfc4f9052}} 
\index{osmo\_io\_fd@{osmo\_io\_fd}!headroom@{headroom}}
\index{headroom@{headroom}!osmo\_io\_fd@{osmo\_io\_fd}}
\doxysubsubsection{headroom}
{\footnotesize\ttfamily unsigned int osmo\+\_\+io\+\_\+fd\+::headroom}



headroom to allocate when allocating msgb\textquotesingle{}s 



Referenced by \textbf{ iofd\+\_\+handle\+\_\+segmented\+\_\+read()}, \textbf{ iofd\+\_\+msgb\+\_\+alloc2()}, \textbf{ iofd\+\_\+msgb\+\_\+length\+\_\+max()}, \textbf{ osmo\+\_\+iofd\+\_\+set\+\_\+alloc\+\_\+info()}, and \textbf{ osmo\+\_\+iofd\+\_\+setup()}.

\mbox{\label{structosmo__io__fd_aeb5665cca4207f3c8f3de690d292e376}} 
\index{osmo\_io\_fd@{osmo\_io\_fd}!io\_ops@{io\_ops}}
\index{io\_ops@{io\_ops}!osmo\_io\_fd@{osmo\_io\_fd}}
\doxysubsubsection{io\_ops}
{\footnotesize\ttfamily struct \textbf{ osmo\+\_\+io\+\_\+ops} osmo\+\_\+io\+\_\+fd\+::io\+\_\+ops}



send/recv (msg) callback functions 



Referenced by \textbf{ \+\_\+call\+\_\+read\+\_\+cb()}, \textbf{ iofd\+\_\+handle\+\_\+recv()}, \textbf{ iofd\+\_\+handle\+\_\+segmentation()}, \textbf{ iofd\+\_\+handle\+\_\+send\+\_\+completion()}, \textbf{ iofd\+\_\+poll\+\_\+ofd\+\_\+cb\+\_\+recvmsg\+\_\+sendmsg()}, \textbf{ osmo\+\_\+iofd\+\_\+get\+\_\+ioops()}, \textbf{ osmo\+\_\+iofd\+\_\+register()}, \textbf{ osmo\+\_\+iofd\+\_\+set\+\_\+ioops()}, and \textbf{ osmo\+\_\+iofd\+\_\+setup()}.

\mbox{\label{structosmo__io__fd_aeb12457f028e949f552f92d214c2a86c}} 
\index{osmo\_io\_fd@{osmo\_io\_fd}!io\_read\_buffers@{io\_read\_buffers}}
\index{io\_read\_buffers@{io\_read\_buffers}!osmo\_io\_fd@{osmo\_io\_fd}}
\doxysubsubsection{io\_read\_buffers}
{\footnotesize\ttfamily uint8\+\_\+t osmo\+\_\+io\+\_\+fd\+::io\+\_\+read\+\_\+buffers}



maximum number of message-\/buffers per read operation 



Referenced by \textbf{ iofd\+\_\+msghdr\+\_\+alloc()}, \textbf{ osmo\+\_\+iofd\+\_\+set\+\_\+io\+\_\+buffers()}, and \textbf{ osmo\+\_\+iofd\+\_\+setup()}.

\mbox{\label{structosmo__io__fd_aad62f65ad80b32cd83fd99e52a275513}} 
\index{osmo\_io\_fd@{osmo\_io\_fd}!io\_write\_buffers@{io\_write\_buffers}}
\index{io\_write\_buffers@{io\_write\_buffers}!osmo\_io\_fd@{osmo\_io\_fd}}
\doxysubsubsection{io\_write\_buffers}
{\footnotesize\ttfamily uint8\+\_\+t osmo\+\_\+io\+\_\+fd\+::io\+\_\+write\+\_\+buffers}



maximum number of message-\/buffers per write operation 



Referenced by \textbf{ iofd\+\_\+txqueue\+\_\+dequeue()}, \textbf{ osmo\+\_\+iofd\+\_\+set\+\_\+io\+\_\+buffers()}, \textbf{ osmo\+\_\+iofd\+\_\+setup()}, and \textbf{ osmo\+\_\+iofd\+\_\+write\+\_\+msgb()}.

\mbox{\label{structosmo__io__fd_a93750af36d608cf1d894114ac4caae1e}} 
\index{osmo\_io\_fd@{osmo\_io\_fd}!list@{list}}
\index{list@{list}!osmo\_io\_fd@{osmo\_io\_fd}}
\doxysubsubsection{list}
{\footnotesize\ttfamily struct \textbf{ llist\+\_\+head} osmo\+\_\+io\+\_\+fd\+::list}



linked list for internal management 

\mbox{\label{structosmo__io__fd_a96bc1b363cb47d0c2c035e97af3eb416}} 
\index{osmo\_io\_fd@{osmo\_io\_fd}!max\_length@{max\_length}}
\index{max\_length@{max\_length}!osmo\_io\_fd@{osmo\_io\_fd}}
\doxysubsubsection{max\_length}
{\footnotesize\ttfamily unsigned int osmo\+\_\+io\+\_\+fd\+::max\+\_\+length}



maximum length of write queue 



Referenced by \textbf{ iofd\+\_\+txqueue\+\_\+enqueue()}, \textbf{ osmo\+\_\+iofd\+\_\+get\+\_\+txqueue\+\_\+max\+\_\+length()}, \textbf{ osmo\+\_\+iofd\+\_\+set\+\_\+txqueue\+\_\+max\+\_\+length()}, and \textbf{ osmo\+\_\+iofd\+\_\+setup()}.

\mbox{\label{structosmo__io__fd_a9010665e5a9acb070a111d0953be8360}} 
\index{osmo\_io\_fd@{osmo\_io\_fd}!mode@{mode}}
\index{mode@{mode}!osmo\_io\_fd@{osmo\_io\_fd}}
\doxysubsubsection{mode}
{\footnotesize\ttfamily enum \textbf{ osmo\+\_\+io\+\_\+fd\+\_\+mode} osmo\+\_\+io\+\_\+fd\+::mode}



type of read/write mode to use 



Referenced by \textbf{ iofd\+\_\+handle\+\_\+recv()}, \textbf{ iofd\+\_\+handle\+\_\+segmented\+\_\+read()}, \textbf{ iofd\+\_\+poll\+\_\+ofd\+\_\+cb\+\_\+recvmsg\+\_\+sendmsg()}, \textbf{ osmo\+\_\+iofd\+\_\+notify\+\_\+connected()}, \textbf{ osmo\+\_\+iofd\+\_\+register()}, \textbf{ osmo\+\_\+iofd\+\_\+sendmsg\+\_\+msgb()}, \textbf{ osmo\+\_\+iofd\+\_\+sendto\+\_\+msgb()}, \textbf{ osmo\+\_\+iofd\+\_\+set\+\_\+cmsg\+\_\+size()}, \textbf{ osmo\+\_\+iofd\+\_\+set\+\_\+io\+\_\+buffers()}, \textbf{ osmo\+\_\+iofd\+\_\+set\+\_\+ioops()}, \textbf{ osmo\+\_\+iofd\+\_\+set\+\_\+sqes()}, \textbf{ osmo\+\_\+iofd\+\_\+setup()}, and \textbf{ osmo\+\_\+iofd\+\_\+write\+\_\+msgb()}.

\mbox{\label{structosmo__io__fd_a7cbdd5a0ee276c444a31acae133a3dd0}} 
\index{osmo\_io\_fd@{osmo\_io\_fd}!msg\_queue@{msg\_queue}}
\index{msg\_queue@{msg\_queue}!osmo\_io\_fd@{osmo\_io\_fd}}
\doxysubsubsection{msg\_queue}
{\footnotesize\ttfamily struct \textbf{ llist\+\_\+head} osmo\+\_\+io\+\_\+fd\+::msg\+\_\+queue}



actual linked list implementing the transmit queue 



Referenced by \textbf{ iofd\+\_\+txqueue\+\_\+dequeue()}, \textbf{ iofd\+\_\+txqueue\+\_\+enqueue()}, \textbf{ iofd\+\_\+txqueue\+\_\+enqueue\+\_\+front()}, \textbf{ osmo\+\_\+iofd\+\_\+setup()}, and \textbf{ osmo\+\_\+iofd\+\_\+write\+\_\+msgb()}.

\mbox{\label{structosmo__io__fd_a9072a04386c2f7995b335335cd795995}} 
\index{osmo\_io\_fd@{osmo\_io\_fd}!msgb\_alloc@{msgb\_alloc}}
\index{msgb\_alloc@{msgb\_alloc}!osmo\_io\_fd@{osmo\_io\_fd}}
\doxysubsubsection{}
{\footnotesize\ttfamily struct  \{ ... \}  osmo\+\_\+io\+\_\+fd\+::msgb\+\_\+alloc}



Referenced by \textbf{ \+\_\+call\+\_\+read\+\_\+cb()}, \textbf{ iofd\+\_\+handle\+\_\+recv()}, \textbf{ iofd\+\_\+handle\+\_\+segmented\+\_\+read()}, \textbf{ iofd\+\_\+msgb\+\_\+alloc()}, \textbf{ iofd\+\_\+msgb\+\_\+alloc2()}, \textbf{ iofd\+\_\+msgb\+\_\+length\+\_\+max()}, \textbf{ osmo\+\_\+iofd\+\_\+set\+\_\+alloc\+\_\+info()}, and \textbf{ osmo\+\_\+iofd\+\_\+setup()}.

\mbox{\label{structosmo__io__fd_ae000d7c8bc8a5fbbdd96037077da3a06}} 
\index{osmo\_io\_fd@{osmo\_io\_fd}!msghdr@{msghdr}}
\index{msghdr@{msghdr}!osmo\_io\_fd@{osmo\_io\_fd}}
\doxysubsubsection{msghdr}
{\footnotesize\ttfamily void$\ast$ osmo\+\_\+io\+\_\+fd\+::msghdr}



array of simultaneously submitted read SQEs 

submitted write SQE 

Referenced by \textbf{ iofd\+\_\+poll\+\_\+handle\+\_\+recv()}.

\mbox{\label{structosmo__io__fd_a90b320d50581f9c4484406477ce1212a}} 
\index{osmo\_io\_fd@{osmo\_io\_fd}!name@{name}}
\index{name@{name}!osmo\_io\_fd@{osmo\_io\_fd}}
\doxysubsubsection{name}
{\footnotesize\ttfamily char$\ast$ osmo\+\_\+io\+\_\+fd\+::name}



human-\/readable name to associte with fd 



Referenced by \textbf{ osmo\+\_\+iofd\+\_\+get\+\_\+name()}, \textbf{ osmo\+\_\+iofd\+\_\+set\+\_\+name()}, \textbf{ osmo\+\_\+iofd\+\_\+set\+\_\+name\+\_\+f()}, and \textbf{ osmo\+\_\+iofd\+\_\+setup()}.

\mbox{\label{structosmo__io__fd_a69f336b8982fb2d4da3adf4c0f18be04}} 
\index{osmo\_io\_fd@{osmo\_io\_fd}!num\_sqes@{num\_sqes}}
\index{num\_sqes@{num\_sqes}!osmo\_io\_fd@{osmo\_io\_fd}}
\doxysubsubsection{num\_sqes}
{\footnotesize\ttfamily uint8\+\_\+t osmo\+\_\+io\+\_\+fd\+::num\+\_\+sqes}



requested number of simultaniously submitted read SQEs 



Referenced by \textbf{ osmo\+\_\+iofd\+\_\+set\+\_\+sqes()}.

\mbox{\label{structosmo__io__fd_accdbc778efe3b90e15a487beaa2a90d4}} 
\index{osmo\_io\_fd@{osmo\_io\_fd}!ofd@{ofd}}
\index{ofd@{ofd}!osmo\_io\_fd@{osmo\_io\_fd}}
\doxysubsubsection{ofd}
{\footnotesize\ttfamily struct \textbf{ osmo\+\_\+fd} osmo\+\_\+io\+\_\+fd\+::ofd}



Referenced by \textbf{ iofd\+\_\+poll\+\_\+close()}, \textbf{ iofd\+\_\+poll\+\_\+handle\+\_\+recv()}, \textbf{ iofd\+\_\+poll\+\_\+notify\+\_\+connected()}, \textbf{ iofd\+\_\+poll\+\_\+ofd\+\_\+cb\+\_\+dispatch()}, \textbf{ iofd\+\_\+poll\+\_\+ofd\+\_\+cb\+\_\+recvmsg\+\_\+sendmsg()}, \textbf{ iofd\+\_\+poll\+\_\+read\+\_\+disable()}, \textbf{ iofd\+\_\+poll\+\_\+read\+\_\+enable()}, \textbf{ iofd\+\_\+poll\+\_\+register()}, \textbf{ iofd\+\_\+poll\+\_\+unregister()}, \textbf{ iofd\+\_\+poll\+\_\+write\+\_\+disable()}, and \textbf{ iofd\+\_\+poll\+\_\+write\+\_\+enable()}.

\mbox{\label{structosmo__io__fd_a4447413cf79fb318796546dab9817844}} 
\index{osmo\_io\_fd@{osmo\_io\_fd}!pending@{pending}}
\index{pending@{pending}!osmo\_io\_fd@{osmo\_io\_fd}}
\doxysubsubsection{pending}
{\footnotesize\ttfamily struct \textbf{ msgb}$\ast$ osmo\+\_\+io\+\_\+fd\+::pending}



Pending msgb to keep partial data during segmentation. 



Referenced by \textbf{ iofd\+\_\+handle\+\_\+segmented\+\_\+read()}, \textbf{ iofd\+\_\+prepare\+\_\+handle\+\_\+segmentation()}, \textbf{ osmo\+\_\+iofd\+\_\+close()}, and \textbf{ osmo\+\_\+iofd\+\_\+setup()}.

\mbox{\label{structosmo__io__fd_ab39aee024d7d0cab58ee9cc3a68eead9}} 
\index{osmo\_io\_fd@{osmo\_io\_fd}!poll@{poll}}
\index{poll@{poll}!osmo\_io\_fd@{osmo\_io\_fd}}
\doxysubsubsection{}
{\footnotesize\ttfamily struct  \{ ... \}  osmo\+\_\+io\+\_\+fd\+::poll}



Referenced by \textbf{ iofd\+\_\+poll\+\_\+close()}, \textbf{ iofd\+\_\+poll\+\_\+handle\+\_\+recv()}, \textbf{ iofd\+\_\+poll\+\_\+notify\+\_\+connected()}, \textbf{ iofd\+\_\+poll\+\_\+read\+\_\+disable()}, \textbf{ iofd\+\_\+poll\+\_\+read\+\_\+enable()}, \textbf{ iofd\+\_\+poll\+\_\+register()}, \textbf{ iofd\+\_\+poll\+\_\+unregister()}, \textbf{ iofd\+\_\+poll\+\_\+write\+\_\+disable()}, and \textbf{ iofd\+\_\+poll\+\_\+write\+\_\+enable()}.

\mbox{\label{structosmo__io__fd_af090fe2bb7ea35d1d7284214fd1977f5}} 
\index{osmo\_io\_fd@{osmo\_io\_fd}!priv\_nr@{priv\_nr}}
\index{priv\_nr@{priv\_nr}!osmo\_io\_fd@{osmo\_io\_fd}}
\doxysubsubsection{priv\_nr}
{\footnotesize\ttfamily unsigned int osmo\+\_\+io\+\_\+fd\+::priv\+\_\+nr}



private number, extending {\itshape data} 



Referenced by \textbf{ osmo\+\_\+iofd\+\_\+get\+\_\+priv\+\_\+nr()}, and \textbf{ osmo\+\_\+iofd\+\_\+set\+\_\+priv\+\_\+nr()}.

\mbox{\label{structosmo__io__fd_a7f154bbfa17adeefc6c3f7f76022a7af}} 
\index{osmo\_io\_fd@{osmo\_io\_fd}!read@{read}}
\index{read@{read}!osmo\_io\_fd@{osmo\_io\_fd}}
\doxysubsubsection{}
{\footnotesize\ttfamily struct  \{ ... \}  osmo\+\_\+io\+\_\+fd\+::read}



Referenced by \textbf{ osmo\+\_\+iofd\+\_\+set\+\_\+sqes()}.

\mbox{\label{structosmo__io__fd_a8817a6633bb1fb724d0258d8c4202144}} 
\index{osmo\_io\_fd@{osmo\_io\_fd}!ring@{ring}}
\index{ring@{ring}!osmo\_io\_fd@{osmo\_io\_fd}}
\doxysubsubsection{ring}
{\footnotesize\ttfamily struct io\+\_\+uring$\ast$ osmo\+\_\+io\+\_\+fd\+::ring}



ring the read SQEs have been submitted to 

ring the write SQE has been submitted to \mbox{\label{structosmo__io__fd_ade7aca1fe0e03f3eb29c666f23a370bb}} 
\index{osmo\_io\_fd@{osmo\_io\_fd}!size@{size}}
\index{size@{size}!osmo\_io\_fd@{osmo\_io\_fd}}
\doxysubsubsection{size}
{\footnotesize\ttfamily unsigned int osmo\+\_\+io\+\_\+fd\+::size}



size of msgb to allocate (excluding headroom) 



Referenced by \textbf{ iofd\+\_\+msgb\+\_\+alloc()}, \textbf{ osmo\+\_\+iofd\+\_\+set\+\_\+alloc\+\_\+info()}, and \textbf{ osmo\+\_\+iofd\+\_\+setup()}.

\mbox{\label{structosmo__io__fd_aa7a2b923b6897828e4ef0f44944e501f}} 
\index{osmo\_io\_fd@{osmo\_io\_fd}!sqes\_submitted@{sqes\_submitted}}
\index{sqes\_submitted@{sqes\_submitted}!osmo\_io\_fd@{osmo\_io\_fd}}
\doxysubsubsection{sqes\_submitted}
{\footnotesize\ttfamily uint8\+\_\+t osmo\+\_\+io\+\_\+fd\+::sqes\+\_\+submitted}



current number of simultaneously submitted read SQEs 

\mbox{\label{structosmo__io__fd_a5dba59d70073fa5d06a727733c7d6ac5}} 
\index{osmo\_io\_fd@{osmo\_io\_fd}!tx\_queue@{tx\_queue}}
\index{tx\_queue@{tx\_queue}!osmo\_io\_fd@{osmo\_io\_fd}}
\doxysubsubsection{}
{\footnotesize\ttfamily struct  \{ ... \}  osmo\+\_\+io\+\_\+fd\+::tx\+\_\+queue}



Referenced by \textbf{ iofd\+\_\+txqueue\+\_\+dequeue()}, \textbf{ iofd\+\_\+txqueue\+\_\+enqueue()}, \textbf{ iofd\+\_\+txqueue\+\_\+enqueue\+\_\+front()}, \textbf{ osmo\+\_\+iofd\+\_\+get\+\_\+txqueue\+\_\+max\+\_\+length()}, \textbf{ osmo\+\_\+iofd\+\_\+register()}, \textbf{ osmo\+\_\+iofd\+\_\+set\+\_\+txqueue\+\_\+max\+\_\+length()}, \textbf{ osmo\+\_\+iofd\+\_\+setup()}, \textbf{ osmo\+\_\+iofd\+\_\+txqueue\+\_\+len()}, and \textbf{ osmo\+\_\+iofd\+\_\+write\+\_\+msgb()}.

\mbox{\label{structosmo__io__fd_a60bc7b9213310db03257cecebd289ea3}} 
\index{osmo\_io\_fd@{osmo\_io\_fd}!u@{u}}
\index{u@{u}!osmo\_io\_fd@{osmo\_io\_fd}}
\doxysubsubsection{}
{\footnotesize\ttfamily union  \{ ... \}  osmo\+\_\+io\+\_\+fd\+::u}



Referenced by \textbf{ iofd\+\_\+poll\+\_\+close()}, \textbf{ iofd\+\_\+poll\+\_\+handle\+\_\+recv()}, \textbf{ iofd\+\_\+poll\+\_\+notify\+\_\+connected()}, \textbf{ iofd\+\_\+poll\+\_\+read\+\_\+disable()}, \textbf{ iofd\+\_\+poll\+\_\+read\+\_\+enable()}, \textbf{ iofd\+\_\+poll\+\_\+register()}, \textbf{ iofd\+\_\+poll\+\_\+unregister()}, \textbf{ iofd\+\_\+poll\+\_\+write\+\_\+disable()}, \textbf{ iofd\+\_\+poll\+\_\+write\+\_\+enable()}, and \textbf{ osmo\+\_\+iofd\+\_\+set\+\_\+sqes()}.

\mbox{\label{structosmo__io__fd_ab419b429755fa5ea559f5df92b3f2ba2}} 
\index{osmo\_io\_fd@{osmo\_io\_fd}!uring@{uring}}
\index{uring@{uring}!osmo\_io\_fd@{osmo\_io\_fd}}
\doxysubsubsection{}
{\footnotesize\ttfamily struct  \{ ... \}  osmo\+\_\+io\+\_\+fd\+::uring}



Referenced by \textbf{ osmo\+\_\+iofd\+\_\+set\+\_\+sqes()}.

\mbox{\label{structosmo__io__fd_a7f3a070e578e27daa075e729b1fae10e}} 
\index{osmo\_io\_fd@{osmo\_io\_fd}!write@{write}}
\index{write@{write}!osmo\_io\_fd@{osmo\_io\_fd}}
\doxysubsubsection{}
{\footnotesize\ttfamily struct  \{ ... \}  osmo\+\_\+io\+\_\+fd\+::write}



The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize}
\item 
src/core/\textbf{ osmo\+\_\+io\+\_\+internal.\+h}\end{DoxyCompactItemize}
