\doxysection{iofd\+\_\+msghdr Struct Reference}
\label{structiofd__msghdr}\index{iofd\_msghdr@{iofd\_msghdr}}


serialized version of \textquotesingle{}struct msghdr\textquotesingle{} employed by sendmsg/recvmsg  




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

\doxysubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
char \textbf{ \+\_\+\+Alignas} (struct cmsghdr) cmsg[0]
\begin{DoxyCompactList}\small\item\em control message buffer for passing sctp\+\_\+sndrcvinfo along. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Data Fields}
\begin{DoxyCompactItemize}
\item 
struct \textbf{ llist\+\_\+head} \textbf{ list}
\begin{DoxyCompactList}\small\item\em entry into osmo\+\_\+io\+\_\+fd.\+tx\+\_\+queue.\+msg\+\_\+queue \end{DoxyCompactList}\item 
enum \textbf{ iofd\+\_\+msg\+\_\+action} \textbf{ action}
\item 
struct msghdr \textbf{ hdr}
\begin{DoxyCompactList}\small\item\em the \textquotesingle{}struct msghdr\textquotesingle{} we are wrapping/ecapsulating here \end{DoxyCompactList}\item 
struct \textbf{ osmo\+\_\+sockaddr} \textbf{ osa}
\begin{DoxyCompactList}\small\item\em socket address of the remote peer \end{DoxyCompactList}\item 
struct iovec \textbf{ iov} [\textbf{ IOFD\+\_\+\+MSGHDR\+\_\+\+IO\+\_\+\+BUFFERS}]
\begin{DoxyCompactList}\small\item\em io-\/vector we need to pass as argument to sendmsg/recvmsg; is set up to point into msg below \end{DoxyCompactList}\item 
int \textbf{ flags}
\begin{DoxyCompactList}\small\item\em flags we pass as argument to sendmsg / recvmsg \end{DoxyCompactList}\item 
uint8\+\_\+t \textbf{ io\+\_\+len}
\begin{DoxyCompactList}\small\item\em current number of message-\/buffers that are stored \end{DoxyCompactList}\item 
struct \textbf{ msgb} $\ast$ \textbf{ msg} [\textbf{ IOFD\+\_\+\+MSGHDR\+\_\+\+IO\+\_\+\+BUFFERS}]
\begin{DoxyCompactList}\small\item\em message-\/buffer containing data for this I/O operation \end{DoxyCompactList}\item 
struct \textbf{ osmo\+\_\+io\+\_\+fd} $\ast$ \textbf{ iofd}
\begin{DoxyCompactList}\small\item\em I/O file descriptor on which we perform this I/O operation. \end{DoxyCompactList}\item 
bool \textbf{ in\+\_\+cancel\+\_\+queue}
\begin{DoxyCompactList}\small\item\em msghdr is in the cancel\+\_\+queue list \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
serialized version of \textquotesingle{}struct msghdr\textquotesingle{} employed by sendmsg/recvmsg 

\doxysubsection{Member Function Documentation}
\mbox{\label{structiofd__msghdr_a2ec90152b81def08a22a866a667b2eb2}} 
\index{iofd\_msghdr@{iofd\_msghdr}!\_Alignas@{\_Alignas}}
\index{\_Alignas@{\_Alignas}!iofd\_msghdr@{iofd\_msghdr}}
\doxysubsubsection{\_Alignas()}
{\footnotesize\ttfamily char iofd\+\_\+msghdr\+::\+\_\+\+Alignas (\begin{DoxyParamCaption}\item[{struct cmsghdr}]{ }\end{DoxyParamCaption})}



control message buffer for passing sctp\+\_\+sndrcvinfo along. 

Size is determined by iofd-\/$>$cmsg\+\_\+size on recvmsg, and by mcghdr-\/$>$msg\+\_\+controllen on sendmsg. Alignment of the array is required due to cast to \char`\"{}struct cmsghdr\char`\"{}, eg. by CMSG\+\_\+\+FIRSTHDR(). 

\doxysubsection{Field Documentation}
\mbox{\label{structiofd__msghdr_a3bf8f4a1f8e47093a7440bc344f0450e}} 
\index{iofd\_msghdr@{iofd\_msghdr}!action@{action}}
\index{action@{action}!iofd\_msghdr@{iofd\_msghdr}}
\doxysubsubsection{action}
{\footnotesize\ttfamily enum \textbf{ iofd\+\_\+msg\+\_\+action} iofd\+\_\+msghdr\+::action}



Referenced by \textbf{ iofd\+\_\+handle\+\_\+send\+\_\+completion()}, \textbf{ iofd\+\_\+msghdr\+\_\+alloc()}, and \textbf{ iofd\+\_\+poll\+\_\+ofd\+\_\+cb\+\_\+recvmsg\+\_\+sendmsg()}.

\mbox{\label{structiofd__msghdr_a23bf1102e388cb2dc93a55d8d1f7fdf6}} 
\index{iofd\_msghdr@{iofd\_msghdr}!flags@{flags}}
\index{flags@{flags}!iofd\_msghdr@{iofd\_msghdr}}
\doxysubsubsection{flags}
{\footnotesize\ttfamily int iofd\+\_\+msghdr\+::flags}



flags we pass as argument to sendmsg / recvmsg 



Referenced by \textbf{ iofd\+\_\+poll\+\_\+ofd\+\_\+cb\+\_\+recvmsg\+\_\+sendmsg()}, \textbf{ osmo\+\_\+iofd\+\_\+sendto\+\_\+msgb()}, and \textbf{ osmo\+\_\+iofd\+\_\+write\+\_\+msgb()}.

\mbox{\label{structiofd__msghdr_abed8f13020d302064dfc1f22f1247c8d}} 
\index{iofd\_msghdr@{iofd\_msghdr}!hdr@{hdr}}
\index{hdr@{hdr}!iofd\_msghdr@{iofd\_msghdr}}
\doxysubsubsection{hdr}
{\footnotesize\ttfamily struct msghdr iofd\+\_\+msghdr\+::hdr}



the \textquotesingle{}struct msghdr\textquotesingle{} we are wrapping/ecapsulating here 



Referenced by \textbf{ iofd\+\_\+handle\+\_\+send\+\_\+completion()}, \textbf{ iofd\+\_\+msghdr\+\_\+alloc()}, \textbf{ iofd\+\_\+poll\+\_\+ofd\+\_\+cb\+\_\+recvmsg\+\_\+sendmsg()}, \textbf{ iofd\+\_\+txqueue\+\_\+dequeue()}, \textbf{ osmo\+\_\+iofd\+\_\+sendmsg\+\_\+msgb()}, \textbf{ osmo\+\_\+iofd\+\_\+sendto\+\_\+msgb()}, \textbf{ osmo\+\_\+iofd\+\_\+txqueue\+\_\+clear()}, and \textbf{ osmo\+\_\+iofd\+\_\+write\+\_\+msgb()}.

\mbox{\label{structiofd__msghdr_aeb7973e19df13ad6ae31bf6cc5c25d3c}} 
\index{iofd\_msghdr@{iofd\_msghdr}!in\_cancel\_queue@{in\_cancel\_queue}}
\index{in\_cancel\_queue@{in\_cancel\_queue}!iofd\_msghdr@{iofd\_msghdr}}
\doxysubsubsection{in\_cancel\_queue}
{\footnotesize\ttfamily bool iofd\+\_\+msghdr\+::in\+\_\+cancel\+\_\+queue}



msghdr is in the cancel\+\_\+queue list 

\mbox{\label{structiofd__msghdr_a3c811284d968946ce6ce71d41ab5ab4e}} 
\index{iofd\_msghdr@{iofd\_msghdr}!io\_len@{io\_len}}
\index{io\_len@{io\_len}!iofd\_msghdr@{iofd\_msghdr}}
\doxysubsubsection{io\_len}
{\footnotesize\ttfamily uint8\+\_\+t iofd\+\_\+msghdr\+::io\+\_\+len}



current number of message-\/buffers that are stored 



Referenced by \textbf{ iofd\+\_\+handle\+\_\+send\+\_\+completion()}, \textbf{ iofd\+\_\+msghdr\+\_\+alloc()}, \textbf{ iofd\+\_\+poll\+\_\+ofd\+\_\+cb\+\_\+recvmsg\+\_\+sendmsg()}, \textbf{ iofd\+\_\+txqueue\+\_\+dequeue()}, and \textbf{ osmo\+\_\+iofd\+\_\+write\+\_\+msgb()}.

\mbox{\label{structiofd__msghdr_a0c84222c2eaef3f466fd1e3a52402d48}} 
\index{iofd\_msghdr@{iofd\_msghdr}!iofd@{iofd}}
\index{iofd@{iofd}!iofd\_msghdr@{iofd\_msghdr}}
\doxysubsubsection{iofd}
{\footnotesize\ttfamily struct \textbf{ osmo\+\_\+io\+\_\+fd}$\ast$ iofd\+\_\+msghdr\+::iofd}



I/O file descriptor on which we perform this I/O operation. 



Referenced by \textbf{ iofd\+\_\+msghdr\+\_\+alloc()}, \textbf{ iofd\+\_\+poll\+\_\+ofd\+\_\+cb\+\_\+recvmsg\+\_\+sendmsg()}, \textbf{ iofd\+\_\+txqueue\+\_\+dequeue()}, \textbf{ osmo\+\_\+iofd\+\_\+close()}, \textbf{ osmo\+\_\+iofd\+\_\+free()}, \textbf{ osmo\+\_\+iofd\+\_\+get\+\_\+data()}, \textbf{ osmo\+\_\+iofd\+\_\+get\+\_\+fd()}, \textbf{ osmo\+\_\+iofd\+\_\+get\+\_\+ioops()}, \textbf{ osmo\+\_\+iofd\+\_\+get\+\_\+name()}, \textbf{ osmo\+\_\+iofd\+\_\+get\+\_\+priv\+\_\+nr()}, \textbf{ osmo\+\_\+iofd\+\_\+get\+\_\+txqueue\+\_\+max\+\_\+length()}, \textbf{ osmo\+\_\+iofd\+\_\+notify\+\_\+connected()}, \textbf{ osmo\+\_\+iofd\+\_\+sendmsg\+\_\+msgb()}, \textbf{ osmo\+\_\+iofd\+\_\+sendto\+\_\+msgb()}, \textbf{ osmo\+\_\+iofd\+\_\+set\+\_\+alloc\+\_\+info()}, \textbf{ osmo\+\_\+iofd\+\_\+set\+\_\+data()}, \textbf{ osmo\+\_\+iofd\+\_\+set\+\_\+ioops()}, \textbf{ osmo\+\_\+iofd\+\_\+set\+\_\+name()}, \textbf{ osmo\+\_\+iofd\+\_\+set\+\_\+name\+\_\+f()}, \textbf{ osmo\+\_\+iofd\+\_\+set\+\_\+priv\+\_\+nr()}, \textbf{ osmo\+\_\+iofd\+\_\+set\+\_\+txqueue\+\_\+max\+\_\+length()}, \textbf{ osmo\+\_\+iofd\+\_\+txqueue\+\_\+clear()}, and \textbf{ osmo\+\_\+iofd\+\_\+write\+\_\+msgb()}.

\mbox{\label{structiofd__msghdr_af46dfde0c0e6d68a89fac32028c3c6f1}} 
\index{iofd\_msghdr@{iofd\_msghdr}!iov@{iov}}
\index{iov@{iov}!iofd\_msghdr@{iofd\_msghdr}}
\doxysubsubsection{iov}
{\footnotesize\ttfamily struct iovec iofd\+\_\+msghdr\+::iov[\textbf{ IOFD\+\_\+\+MSGHDR\+\_\+\+IO\+\_\+\+BUFFERS}]}



io-\/vector we need to pass as argument to sendmsg/recvmsg; is set up to point into msg below 



Referenced by \textbf{ iofd\+\_\+handle\+\_\+send\+\_\+completion()}, \textbf{ iofd\+\_\+poll\+\_\+handle\+\_\+recv()}, \textbf{ iofd\+\_\+poll\+\_\+ofd\+\_\+cb\+\_\+recvmsg\+\_\+sendmsg()}, \textbf{ iofd\+\_\+txqueue\+\_\+dequeue()}, \textbf{ osmo\+\_\+iofd\+\_\+sendmsg\+\_\+msgb()}, \textbf{ osmo\+\_\+iofd\+\_\+sendto\+\_\+msgb()}, and \textbf{ osmo\+\_\+iofd\+\_\+write\+\_\+msgb()}.

\mbox{\label{structiofd__msghdr_a0dfbe11ea42c9518405b45147ab2fee1}} 
\index{iofd\_msghdr@{iofd\_msghdr}!list@{list}}
\index{list@{list}!iofd\_msghdr@{iofd\_msghdr}}
\doxysubsubsection{list}
{\footnotesize\ttfamily struct \textbf{ llist\+\_\+head} iofd\+\_\+msghdr\+::list}



entry into osmo\+\_\+io\+\_\+fd.\+tx\+\_\+queue.\+msg\+\_\+queue 



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

\mbox{\label{structiofd__msghdr_ae51f073747406d461f69a8f6d2e7f7b0}} 
\index{iofd\_msghdr@{iofd\_msghdr}!msg@{msg}}
\index{msg@{msg}!iofd\_msghdr@{iofd\_msghdr}}
\doxysubsubsection{msg}
{\footnotesize\ttfamily struct \textbf{ msgb}$\ast$ iofd\+\_\+msghdr\+::msg[\textbf{ IOFD\+\_\+\+MSGHDR\+\_\+\+IO\+\_\+\+BUFFERS}]}



message-\/buffer containing data for this I/O operation 



Referenced by \textbf{ iofd\+\_\+handle\+\_\+send\+\_\+completion()}, \textbf{ iofd\+\_\+msghdr\+\_\+alloc()}, \textbf{ iofd\+\_\+poll\+\_\+handle\+\_\+recv()}, \textbf{ iofd\+\_\+poll\+\_\+ofd\+\_\+cb\+\_\+recvmsg\+\_\+sendmsg()}, \textbf{ iofd\+\_\+txqueue\+\_\+dequeue()}, \textbf{ osmo\+\_\+iofd\+\_\+sendmsg\+\_\+msgb()}, \textbf{ osmo\+\_\+iofd\+\_\+sendto\+\_\+msgb()}, and \textbf{ osmo\+\_\+iofd\+\_\+write\+\_\+msgb()}.

\mbox{\label{structiofd__msghdr_ada7e6f56c63ed3fcb30ec97bf75903e2}} 
\index{iofd\_msghdr@{iofd\_msghdr}!osa@{osa}}
\index{osa@{osa}!iofd\_msghdr@{iofd\_msghdr}}
\doxysubsubsection{osa}
{\footnotesize\ttfamily struct \textbf{ osmo\+\_\+sockaddr} iofd\+\_\+msghdr\+::osa}



socket address of the remote peer 



Referenced by \textbf{ iofd\+\_\+handle\+\_\+send\+\_\+completion()}, \textbf{ iofd\+\_\+poll\+\_\+ofd\+\_\+cb\+\_\+recvmsg\+\_\+sendmsg()}, \textbf{ osmo\+\_\+iofd\+\_\+sendmsg\+\_\+msgb()}, and \textbf{ osmo\+\_\+iofd\+\_\+sendto\+\_\+msgb()}.



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