\doxysection{Select loop abstraction}
\label{group__select}\index{Select loop abstraction@{Select loop abstraction}}
\doxysubsection*{Files}
\begin{DoxyCompactItemize}
\item 
file \textbf{ select.\+h}
\begin{DoxyCompactList}\small\item\em libmnl integration \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \textbf{ osmo\+\_\+fd}
\begin{DoxyCompactList}\small\item\em Structure representing a file dsecriptor. \end{DoxyCompactList}\item 
struct \textbf{ osmo\+\_\+signalfd}
\end{DoxyCompactItemize}
\doxysubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \textbf{ OSMO\+\_\+\+FD\+\_\+\+READ}~0x0001
\begin{DoxyCompactList}\small\item\em Indicate interest in reading from the file descriptor. \end{DoxyCompactList}\item 
\#define \textbf{ OSMO\+\_\+\+FD\+\_\+\+WRITE}~0x0002
\begin{DoxyCompactList}\small\item\em Indicate interest in writing to the file descriptor. \end{DoxyCompactList}\item 
\#define \textbf{ OSMO\+\_\+\+FD\+\_\+\+EXCEPT}~0x0004
\begin{DoxyCompactList}\small\item\em Indicate interest in exceptions from the file descriptor. \end{DoxyCompactList}\item 
\#define \textbf{ OSMO\+\_\+\+FD\+\_\+\+MASK}~0x\+FFFF
\begin{DoxyCompactList}\small\item\em Used as when\+\_\+mask in \doxyref{osmo\+\_\+fd\+\_\+update\+\_\+when()}{p.}{group__select_ga7334ab2c60124d85137cfd3e34fd6214} \end{DoxyCompactList}\item 
\#define \textbf{ BSC\+\_\+\+FD\+\_\+\+READ}~\textbf{ OSMO\+\_\+\+FD\+\_\+\+READ}
\item 
\#define \textbf{ BSC\+\_\+\+FD\+\_\+\+WRITE}~\textbf{ OSMO\+\_\+\+FD\+\_\+\+WRITE}
\item 
\#define \textbf{ BSC\+\_\+\+FD\+\_\+\+EXCEPT}~\textbf{ OSMO\+\_\+\+FD\+\_\+\+EXCEPT}
\end{DoxyCompactItemize}
\doxysubsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
typedef void \textbf{ osmo\+\_\+signalfd\+\_\+cb}(struct \textbf{ osmo\+\_\+signalfd} $\ast$osfd, const struct signalfd\+\_\+siginfo $\ast$fdsi)
\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
void \textbf{ osmo\+\_\+fd\+\_\+setup} (struct \textbf{ osmo\+\_\+fd} $\ast$ofd, int fd, unsigned int when, int($\ast$cb)(struct \textbf{ osmo\+\_\+fd} $\ast$fd, unsigned int what), void $\ast$\textbf{ data}, unsigned int priv\+\_\+nr)
\item 
void \textbf{ osmo\+\_\+fd\+\_\+update\+\_\+when} (struct \textbf{ osmo\+\_\+fd} $\ast$ofd, unsigned int when\+\_\+mask, unsigned int when)
\item 
static void \textbf{ osmo\+\_\+fd\+\_\+read\+\_\+enable} (struct \textbf{ osmo\+\_\+fd} $\ast$ofd)
\item 
static void \textbf{ osmo\+\_\+fd\+\_\+read\+\_\+disable} (struct \textbf{ osmo\+\_\+fd} $\ast$ofd)
\item 
static void \textbf{ osmo\+\_\+fd\+\_\+write\+\_\+enable} (struct \textbf{ osmo\+\_\+fd} $\ast$ofd)
\item 
static void \textbf{ osmo\+\_\+fd\+\_\+write\+\_\+disable} (struct \textbf{ osmo\+\_\+fd} $\ast$ofd)
\item 
bool \textbf{ osmo\+\_\+fd\+\_\+is\+\_\+registered} (struct \textbf{ osmo\+\_\+fd} $\ast$fd)
\item 
int \textbf{ osmo\+\_\+fd\+\_\+register} (struct \textbf{ osmo\+\_\+fd} $\ast$fd)
\item 
void \textbf{ osmo\+\_\+fd\+\_\+unregister} (struct \textbf{ osmo\+\_\+fd} $\ast$fd)
\item 
void \textbf{ osmo\+\_\+fd\+\_\+close} (struct \textbf{ osmo\+\_\+fd} $\ast$fd)
\item 
int \textbf{ osmo\+\_\+select\+\_\+main} (int polling)
\item 
int \textbf{ osmo\+\_\+select\+\_\+main\+\_\+ctx} (int polling)
\item 
void \textbf{ osmo\+\_\+select\+\_\+init} (void)
\item 
struct \textbf{ osmo\+\_\+fd} $\ast$ \textbf{ osmo\+\_\+fd\+\_\+get\+\_\+by\+\_\+fd} (int fd)
\item 
int \textbf{ osmo\+\_\+fd\+\_\+fill\+\_\+fds} (void $\ast$readset, void $\ast$writeset, void $\ast$exceptset)
\item 
int \textbf{ osmo\+\_\+fd\+\_\+disp\+\_\+fds} (void $\ast$readset, void $\ast$writeset, void $\ast$exceptset)
\item 
int \textbf{ osmo\+\_\+timerfd\+\_\+disable} (struct \textbf{ osmo\+\_\+fd} $\ast$ofd)
\item 
int \textbf{ osmo\+\_\+timerfd\+\_\+schedule} (struct \textbf{ osmo\+\_\+fd} $\ast$ofd, const struct timespec $\ast$first, const struct timespec $\ast$interval)
\item 
int \textbf{ osmo\+\_\+timerfd\+\_\+setup} (struct \textbf{ osmo\+\_\+fd} $\ast$ofd, int($\ast$cb)(struct \textbf{ osmo\+\_\+fd} $\ast$, unsigned int), void $\ast$\textbf{ data})
\item 
struct \textbf{ osmo\+\_\+signalfd} $\ast$ \textbf{ osmo\+\_\+signalfd\+\_\+setup} (void $\ast$ctx, sigset\+\_\+t set, \textbf{ osmo\+\_\+signalfd\+\_\+cb} $\ast$cb, void $\ast$\textbf{ data})
\item 
void \textbf{ osmo\+\_\+select\+\_\+shutdown\+\_\+request} (void)
\item 
int \textbf{ osmo\+\_\+select\+\_\+shutdown\+\_\+requested} (void)
\item 
bool \textbf{ osmo\+\_\+select\+\_\+shutdown\+\_\+done} (void)
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}


\doxysubsection{Macro Definition Documentation}
\mbox{\label{group__select_ga3b3006cd41b97228177c2ebaed68ab1e}} 
\index{Select loop abstraction@{Select loop abstraction}!BSC\_FD\_EXCEPT@{BSC\_FD\_EXCEPT}}
\index{BSC\_FD\_EXCEPT@{BSC\_FD\_EXCEPT}!Select loop abstraction@{Select loop abstraction}}
\doxysubsubsection{BSC\_FD\_EXCEPT}
{\footnotesize\ttfamily \#define BSC\+\_\+\+FD\+\_\+\+EXCEPT~\textbf{ OSMO\+\_\+\+FD\+\_\+\+EXCEPT}}

\mbox{\label{group__select_ga984f70f9eecce28d279db885321c1fde}} 
\index{Select loop abstraction@{Select loop abstraction}!BSC\_FD\_READ@{BSC\_FD\_READ}}
\index{BSC\_FD\_READ@{BSC\_FD\_READ}!Select loop abstraction@{Select loop abstraction}}
\doxysubsubsection{BSC\_FD\_READ}
{\footnotesize\ttfamily \#define BSC\+\_\+\+FD\+\_\+\+READ~\textbf{ OSMO\+\_\+\+FD\+\_\+\+READ}}

\mbox{\label{group__select_ga9465a2b57e47f183b317a38e85db7370}} 
\index{Select loop abstraction@{Select loop abstraction}!BSC\_FD\_WRITE@{BSC\_FD\_WRITE}}
\index{BSC\_FD\_WRITE@{BSC\_FD\_WRITE}!Select loop abstraction@{Select loop abstraction}}
\doxysubsubsection{BSC\_FD\_WRITE}
{\footnotesize\ttfamily \#define BSC\+\_\+\+FD\+\_\+\+WRITE~\textbf{ OSMO\+\_\+\+FD\+\_\+\+WRITE}}

\mbox{\label{group__select_ga2f7bdc2b5dc69c376d44170645a69f0a}} 
\index{Select loop abstraction@{Select loop abstraction}!OSMO\_FD\_EXCEPT@{OSMO\_FD\_EXCEPT}}
\index{OSMO\_FD\_EXCEPT@{OSMO\_FD\_EXCEPT}!Select loop abstraction@{Select loop abstraction}}
\doxysubsubsection{OSMO\_FD\_EXCEPT}
{\footnotesize\ttfamily \#define OSMO\+\_\+\+FD\+\_\+\+EXCEPT~0x0004}



Indicate interest in exceptions from the file descriptor. 

\mbox{\label{group__select_gae2f6852f715acabaff698001e7ca9025}} 
\index{Select loop abstraction@{Select loop abstraction}!OSMO\_FD\_MASK@{OSMO\_FD\_MASK}}
\index{OSMO\_FD\_MASK@{OSMO\_FD\_MASK}!Select loop abstraction@{Select loop abstraction}}
\doxysubsubsection{OSMO\_FD\_MASK}
{\footnotesize\ttfamily \#define OSMO\+\_\+\+FD\+\_\+\+MASK~0x\+FFFF}



Used as when\+\_\+mask in \doxyref{osmo\+\_\+fd\+\_\+update\+\_\+when()}{p.}{group__select_ga7334ab2c60124d85137cfd3e34fd6214} 

\mbox{\label{group__select_ga0b213d11f729967d08a03f84a29e27b8}} 
\index{Select loop abstraction@{Select loop abstraction}!OSMO\_FD\_READ@{OSMO\_FD\_READ}}
\index{OSMO\_FD\_READ@{OSMO\_FD\_READ}!Select loop abstraction@{Select loop abstraction}}
\doxysubsubsection{OSMO\_FD\_READ}
{\footnotesize\ttfamily \#define OSMO\+\_\+\+FD\+\_\+\+READ~0x0001}



Indicate interest in reading from the file descriptor. 

\mbox{\label{group__select_ga35f0e6aebab8ac046ab1f6d40a75e9f1}} 
\index{Select loop abstraction@{Select loop abstraction}!OSMO\_FD\_WRITE@{OSMO\_FD\_WRITE}}
\index{OSMO\_FD\_WRITE@{OSMO\_FD\_WRITE}!Select loop abstraction@{Select loop abstraction}}
\doxysubsubsection{OSMO\_FD\_WRITE}
{\footnotesize\ttfamily \#define OSMO\+\_\+\+FD\+\_\+\+WRITE~0x0002}



Indicate interest in writing to the file descriptor. 



\doxysubsection{Typedef Documentation}
\mbox{\label{group__select_ga03d8416886989017d0ea36ba893f5aeb}} 
\index{Select loop abstraction@{Select loop abstraction}!osmo\_signalfd\_cb@{osmo\_signalfd\_cb}}
\index{osmo\_signalfd\_cb@{osmo\_signalfd\_cb}!Select loop abstraction@{Select loop abstraction}}
\doxysubsubsection{osmo\_signalfd\_cb}
{\footnotesize\ttfamily typedef void osmo\+\_\+signalfd\+\_\+cb(struct \textbf{ osmo\+\_\+signalfd} $\ast$osfd, const struct signalfd\+\_\+siginfo $\ast$fdsi)}



\doxysubsection{Function Documentation}
\mbox{\label{group__select_ga61c647f34ed36905c87803a337fa2dfd}} 
\index{Select loop abstraction@{Select loop abstraction}!osmo\_fd\_close@{osmo\_fd\_close}}
\index{osmo\_fd\_close@{osmo\_fd\_close}!Select loop abstraction@{Select loop abstraction}}
\doxysubsubsection{osmo\_fd\_close()}
{\footnotesize\ttfamily void osmo\+\_\+fd\+\_\+close (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fd} $\ast$}]{fd }\end{DoxyParamCaption})}



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

\mbox{\label{group__select_ga3a26f48c28fd1173a7362f805ec9729a}} 
\index{Select loop abstraction@{Select loop abstraction}!osmo\_fd\_disp\_fds@{osmo\_fd\_disp\_fds}}
\index{osmo\_fd\_disp\_fds@{osmo\_fd\_disp\_fds}!Select loop abstraction@{Select loop abstraction}}
\doxysubsubsection{osmo\_fd\_disp\_fds()}
{\footnotesize\ttfamily int osmo\+\_\+fd\+\_\+disp\+\_\+fds (\begin{DoxyParamCaption}\item[{void $\ast$}]{readset,  }\item[{void $\ast$}]{writeset,  }\item[{void $\ast$}]{exceptset }\end{DoxyParamCaption})}

\mbox{\label{group__select_ga4bfe6aaedd6b3eedbe1a5910d21f14ea}} 
\index{Select loop abstraction@{Select loop abstraction}!osmo\_fd\_fill\_fds@{osmo\_fd\_fill\_fds}}
\index{osmo\_fd\_fill\_fds@{osmo\_fd\_fill\_fds}!Select loop abstraction@{Select loop abstraction}}
\doxysubsubsection{osmo\_fd\_fill\_fds()}
{\footnotesize\ttfamily int osmo\+\_\+fd\+\_\+fill\+\_\+fds (\begin{DoxyParamCaption}\item[{void $\ast$}]{readset,  }\item[{void $\ast$}]{writeset,  }\item[{void $\ast$}]{exceptset }\end{DoxyParamCaption})}

\mbox{\label{group__select_gac3d9884ffdcc49590ff9dc09b29a1052}} 
\index{Select loop abstraction@{Select loop abstraction}!osmo\_fd\_get\_by\_fd@{osmo\_fd\_get\_by\_fd}}
\index{osmo\_fd\_get\_by\_fd@{osmo\_fd\_get\_by\_fd}!Select loop abstraction@{Select loop abstraction}}
\doxysubsubsection{osmo\_fd\_get\_by\_fd()}
{\footnotesize\ttfamily struct \textbf{ osmo\+\_\+fd} $\ast$ osmo\+\_\+fd\+\_\+get\+\_\+by\+\_\+fd (\begin{DoxyParamCaption}\item[{int}]{fd }\end{DoxyParamCaption})}

\mbox{\label{group__select_ga7fff224f686a25799a00a3bb94d5b5f5}} 
\index{Select loop abstraction@{Select loop abstraction}!osmo\_fd\_is\_registered@{osmo\_fd\_is\_registered}}
\index{osmo\_fd\_is\_registered@{osmo\_fd\_is\_registered}!Select loop abstraction@{Select loop abstraction}}
\doxysubsubsection{osmo\_fd\_is\_registered()}
{\footnotesize\ttfamily bool osmo\+\_\+fd\+\_\+is\+\_\+registered (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fd} $\ast$}]{fd }\end{DoxyParamCaption})}



Referenced by \textbf{ rate\+\_\+ctr\+\_\+init()}.

\mbox{\label{group__select_gad480c371be33f8eb8945b5da28fc3de2}} 
\index{Select loop abstraction@{Select loop abstraction}!osmo\_fd\_read\_disable@{osmo\_fd\_read\_disable}}
\index{osmo\_fd\_read\_disable@{osmo\_fd\_read\_disable}!Select loop abstraction@{Select loop abstraction}}
\doxysubsubsection{osmo\_fd\_read\_disable()}
{\footnotesize\ttfamily static void osmo\+\_\+fd\+\_\+read\+\_\+disable (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fd} $\ast$}]{ofd }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



References \textbf{ OSMO\+\_\+\+FD\+\_\+\+READ}, and \textbf{ osmo\+\_\+fd\+\_\+update\+\_\+when()}.



Referenced by \textbf{ iofd\+\_\+poll\+\_\+read\+\_\+disable()}.

\mbox{\label{group__select_gaa292f19cc2852a2e6245f20fba5efc44}} 
\index{Select loop abstraction@{Select loop abstraction}!osmo\_fd\_read\_enable@{osmo\_fd\_read\_enable}}
\index{osmo\_fd\_read\_enable@{osmo\_fd\_read\_enable}!Select loop abstraction@{Select loop abstraction}}
\doxysubsubsection{osmo\_fd\_read\_enable()}
{\footnotesize\ttfamily static void osmo\+\_\+fd\+\_\+read\+\_\+enable (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fd} $\ast$}]{ofd }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



References \textbf{ OSMO\+\_\+\+FD\+\_\+\+MASK}, \textbf{ OSMO\+\_\+\+FD\+\_\+\+READ}, and \textbf{ osmo\+\_\+fd\+\_\+update\+\_\+when()}.



Referenced by \textbf{ iofd\+\_\+poll\+\_\+read\+\_\+enable()}.

\mbox{\label{group__select_gac32214612d27208dad91c7ed9ea56314}} 
\index{Select loop abstraction@{Select loop abstraction}!osmo\_fd\_register@{osmo\_fd\_register}}
\index{osmo\_fd\_register@{osmo\_fd\_register}!Select loop abstraction@{Select loop abstraction}}
\doxysubsubsection{osmo\_fd\_register()}
{\footnotesize\ttfamily int osmo\+\_\+fd\+\_\+register (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fd} $\ast$}]{fd }\end{DoxyParamCaption})}



Referenced by \textbf{ iofd\+\_\+poll\+\_\+register()}, \textbf{ osmo\+\_\+mnl\+\_\+init()}, and \textbf{ osmo\+\_\+tundev\+\_\+open()}.

\mbox{\label{group__select_ga2f14f77e5e71c5bd3461d5936f8c8725}} 
\index{Select loop abstraction@{Select loop abstraction}!osmo\_fd\_setup@{osmo\_fd\_setup}}
\index{osmo\_fd\_setup@{osmo\_fd\_setup}!Select loop abstraction@{Select loop abstraction}}
\doxysubsubsection{osmo\_fd\_setup()}
{\footnotesize\ttfamily void osmo\+\_\+fd\+\_\+setup (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fd} $\ast$}]{ofd,  }\item[{int}]{fd,  }\item[{unsigned int}]{when,  }\item[{int($\ast$)(struct \textbf{ osmo\+\_\+fd} $\ast$fd, unsigned int what)}]{cb,  }\item[{void $\ast$}]{data,  }\item[{unsigned int}]{priv\+\_\+nr }\end{DoxyParamCaption})}



Referenced by \textbf{ iofd\+\_\+poll\+\_\+register()}, \textbf{ osmo\+\_\+mnl\+\_\+init()}, and \textbf{ osmo\+\_\+tundev\+\_\+alloc()}.

\mbox{\label{group__select_gaf96b5808375c57fa2065177dcb8ace30}} 
\index{Select loop abstraction@{Select loop abstraction}!osmo\_fd\_unregister@{osmo\_fd\_unregister}}
\index{osmo\_fd\_unregister@{osmo\_fd\_unregister}!Select loop abstraction@{Select loop abstraction}}
\doxysubsubsection{osmo\_fd\_unregister()}
{\footnotesize\ttfamily void osmo\+\_\+fd\+\_\+unregister (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fd} $\ast$}]{fd }\end{DoxyParamCaption})}



Referenced by \textbf{ iofd\+\_\+poll\+\_\+unregister()}, \textbf{ osmo\+\_\+mnl\+\_\+destroy()}, and \textbf{ osmo\+\_\+tundev\+\_\+close()}.

\mbox{\label{group__select_ga7334ab2c60124d85137cfd3e34fd6214}} 
\index{Select loop abstraction@{Select loop abstraction}!osmo\_fd\_update\_when@{osmo\_fd\_update\_when}}
\index{osmo\_fd\_update\_when@{osmo\_fd\_update\_when}!Select loop abstraction@{Select loop abstraction}}
\doxysubsubsection{osmo\_fd\_update\_when()}
{\footnotesize\ttfamily void osmo\+\_\+fd\+\_\+update\+\_\+when (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fd} $\ast$}]{ofd,  }\item[{unsigned int}]{when\+\_\+mask,  }\item[{unsigned int}]{when }\end{DoxyParamCaption})}



Referenced by \textbf{ osmo\+\_\+fd\+\_\+read\+\_\+disable()}, \textbf{ osmo\+\_\+fd\+\_\+read\+\_\+enable()}, \textbf{ osmo\+\_\+fd\+\_\+write\+\_\+disable()}, and \textbf{ osmo\+\_\+fd\+\_\+write\+\_\+enable()}.

\mbox{\label{group__select_gada41360239bba1171cd41eb10a451a9e}} 
\index{Select loop abstraction@{Select loop abstraction}!osmo\_fd\_write\_disable@{osmo\_fd\_write\_disable}}
\index{osmo\_fd\_write\_disable@{osmo\_fd\_write\_disable}!Select loop abstraction@{Select loop abstraction}}
\doxysubsubsection{osmo\_fd\_write\_disable()}
{\footnotesize\ttfamily static void osmo\+\_\+fd\+\_\+write\+\_\+disable (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fd} $\ast$}]{ofd }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



References \textbf{ osmo\+\_\+fd\+\_\+update\+\_\+when()}, and \textbf{ OSMO\+\_\+\+FD\+\_\+\+WRITE}.



Referenced by \textbf{ iofd\+\_\+poll\+\_\+write\+\_\+disable()}.

\mbox{\label{group__select_gac60e507582c46d44889e099f218433ee}} 
\index{Select loop abstraction@{Select loop abstraction}!osmo\_fd\_write\_enable@{osmo\_fd\_write\_enable}}
\index{osmo\_fd\_write\_enable@{osmo\_fd\_write\_enable}!Select loop abstraction@{Select loop abstraction}}
\doxysubsubsection{osmo\_fd\_write\_enable()}
{\footnotesize\ttfamily static void osmo\+\_\+fd\+\_\+write\+\_\+enable (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fd} $\ast$}]{ofd }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}}



References \textbf{ OSMO\+\_\+\+FD\+\_\+\+MASK}, \textbf{ osmo\+\_\+fd\+\_\+update\+\_\+when()}, and \textbf{ OSMO\+\_\+\+FD\+\_\+\+WRITE}.



Referenced by \textbf{ iofd\+\_\+poll\+\_\+notify\+\_\+connected()}, \textbf{ iofd\+\_\+poll\+\_\+register()}, and \textbf{ iofd\+\_\+poll\+\_\+write\+\_\+enable()}.

\mbox{\label{group__select_ga267a7be1b116a008587c13a522b060a4}} 
\index{Select loop abstraction@{Select loop abstraction}!osmo\_select\_init@{osmo\_select\_init}}
\index{osmo\_select\_init@{osmo\_select\_init}!Select loop abstraction@{Select loop abstraction}}
\doxysubsubsection{osmo\_select\_init()}
{\footnotesize\ttfamily void osmo\+\_\+select\+\_\+init (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})}

\mbox{\label{group__select_gabc1e2b227ca4c88df091ad2ba22c4231}} 
\index{Select loop abstraction@{Select loop abstraction}!osmo\_select\_main@{osmo\_select\_main}}
\index{osmo\_select\_main@{osmo\_select\_main}!Select loop abstraction@{Select loop abstraction}}
\doxysubsubsection{osmo\_select\_main()}
{\footnotesize\ttfamily int osmo\+\_\+select\+\_\+main (\begin{DoxyParamCaption}\item[{int}]{polling }\end{DoxyParamCaption})}

\mbox{\label{group__select_ga5a4cd886cd6be70c0a85ed9114ba6d5b}} 
\index{Select loop abstraction@{Select loop abstraction}!osmo\_select\_main\_ctx@{osmo\_select\_main\_ctx}}
\index{osmo\_select\_main\_ctx@{osmo\_select\_main\_ctx}!Select loop abstraction@{Select loop abstraction}}
\doxysubsubsection{osmo\_select\_main\_ctx()}
{\footnotesize\ttfamily int osmo\+\_\+select\+\_\+main\+\_\+ctx (\begin{DoxyParamCaption}\item[{int}]{polling }\end{DoxyParamCaption})}

\mbox{\label{group__select_gae7a26a2e65f34eaad166ea74d34e005d}} 
\index{Select loop abstraction@{Select loop abstraction}!osmo\_select\_shutdown\_done@{osmo\_select\_shutdown\_done}}
\index{osmo\_select\_shutdown\_done@{osmo\_select\_shutdown\_done}!Select loop abstraction@{Select loop abstraction}}
\doxysubsubsection{osmo\_select\_shutdown\_done()}
{\footnotesize\ttfamily bool osmo\+\_\+select\+\_\+shutdown\+\_\+done (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})}

\mbox{\label{group__select_ga29999031d0d7eb5bb56e3b5a002cab82}} 
\index{Select loop abstraction@{Select loop abstraction}!osmo\_select\_shutdown\_request@{osmo\_select\_shutdown\_request}}
\index{osmo\_select\_shutdown\_request@{osmo\_select\_shutdown\_request}!Select loop abstraction@{Select loop abstraction}}
\doxysubsubsection{osmo\_select\_shutdown\_request()}
{\footnotesize\ttfamily void osmo\+\_\+select\+\_\+shutdown\+\_\+request (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})}

\mbox{\label{group__select_ga60c59a1a2e1269be4811e34d026ccd31}} 
\index{Select loop abstraction@{Select loop abstraction}!osmo\_select\_shutdown\_requested@{osmo\_select\_shutdown\_requested}}
\index{osmo\_select\_shutdown\_requested@{osmo\_select\_shutdown\_requested}!Select loop abstraction@{Select loop abstraction}}
\doxysubsubsection{osmo\_select\_shutdown\_requested()}
{\footnotesize\ttfamily int osmo\+\_\+select\+\_\+shutdown\+\_\+requested (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})}

\mbox{\label{group__select_ga64bd5cc5507e872a3a7959bf5a05c190}} 
\index{Select loop abstraction@{Select loop abstraction}!osmo\_signalfd\_setup@{osmo\_signalfd\_setup}}
\index{osmo\_signalfd\_setup@{osmo\_signalfd\_setup}!Select loop abstraction@{Select loop abstraction}}
\doxysubsubsection{osmo\_signalfd\_setup()}
{\footnotesize\ttfamily struct \textbf{ osmo\+\_\+signalfd} $\ast$ osmo\+\_\+signalfd\+\_\+setup (\begin{DoxyParamCaption}\item[{void $\ast$}]{ctx,  }\item[{sigset\+\_\+t}]{set,  }\item[{\textbf{ osmo\+\_\+signalfd\+\_\+cb} $\ast$}]{cb,  }\item[{void $\ast$}]{data }\end{DoxyParamCaption})}

\mbox{\label{group__select_gafb018e4ae4f7a11a99f167c6c400bf3a}} 
\index{Select loop abstraction@{Select loop abstraction}!osmo\_timerfd\_disable@{osmo\_timerfd\_disable}}
\index{osmo\_timerfd\_disable@{osmo\_timerfd\_disable}!Select loop abstraction@{Select loop abstraction}}
\doxysubsubsection{osmo\_timerfd\_disable()}
{\footnotesize\ttfamily int osmo\+\_\+timerfd\+\_\+disable (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fd} $\ast$}]{ofd }\end{DoxyParamCaption})}



Referenced by \textbf{ start\+\_\+timer()}.

\mbox{\label{group__select_gaae36f523e511d19574907b418f3d8e4f}} 
\index{Select loop abstraction@{Select loop abstraction}!osmo\_timerfd\_schedule@{osmo\_timerfd\_schedule}}
\index{osmo\_timerfd\_schedule@{osmo\_timerfd\_schedule}!Select loop abstraction@{Select loop abstraction}}
\doxysubsubsection{osmo\_timerfd\_schedule()}
{\footnotesize\ttfamily int osmo\+\_\+timerfd\+\_\+schedule (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fd} $\ast$}]{ofd,  }\item[{const struct timespec $\ast$}]{first,  }\item[{const struct timespec $\ast$}]{interval }\end{DoxyParamCaption})}



Referenced by \textbf{ rate\+\_\+ctr\+\_\+init()}, and \textbf{ start\+\_\+timer()}.

\mbox{\label{group__select_ga4f0c2df649f7e05b14a920ed36316cd8}} 
\index{Select loop abstraction@{Select loop abstraction}!osmo\_timerfd\_setup@{osmo\_timerfd\_setup}}
\index{osmo\_timerfd\_setup@{osmo\_timerfd\_setup}!Select loop abstraction@{Select loop abstraction}}
\doxysubsubsection{osmo\_timerfd\_setup()}
{\footnotesize\ttfamily int osmo\+\_\+timerfd\+\_\+setup (\begin{DoxyParamCaption}\item[{struct \textbf{ osmo\+\_\+fd} $\ast$}]{ofd,  }\item[{int($\ast$)(struct \textbf{ osmo\+\_\+fd} $\ast$, unsigned int)}]{cb,  }\item[{void $\ast$}]{data }\end{DoxyParamCaption})}



Referenced by \textbf{ rate\+\_\+ctr\+\_\+init()}, and \textbf{ start\+\_\+timer()}.

