\hypertarget{io__doc_8c}{}\section{io\+\_\+doc.\+c File Reference}
\label{io__doc_8c}\index{io\+\_\+doc.\+c@{io\+\_\+doc.\+c}}


I/O example binding.  


{\ttfamily \#include $<$stdlib.\+h$>$}\newline
{\ttfamily \#include $<$string.\+h$>$}\newline
{\ttfamily \#include $<$kdbassert.\+h$>$}\newline
{\ttfamily \#include $<$kdbhelper.\+h$>$}\newline
{\ttfamily \#include $<$kdbio.\+h$>$}\newline
{\ttfamily \#include $<$kdblogger.\+h$>$}\newline
Include dependency graph for io\+\_\+doc.\+c\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{io__doc_8c__incl}
\end{center}
\end{figure}
\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{structSomeIoLibHandle}{Some\+Io\+Lib\+Handle}
\begin{DoxyCompactList}\small\item\em Example I/O management library data structure. \end{DoxyCompactList}\item 
struct \hyperlink{structDocOperationData}{Doc\+Operation\+Data}
\begin{DoxyCompactList}\small\item\em \mbox{[}kdbio operation data\mbox{]} \end{DoxyCompactList}\item 
struct \hyperlink{structDocBindingData}{Doc\+Binding\+Data}
\begin{DoxyCompactList}\small\item\em \mbox{[}kdbio operation data\mbox{]} \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{io__doc_8c_ac243520f2d2ca521136fdd846fcec3ce}\label{io__doc_8c_ac243520f2d2ca521136fdd846fcec3ce}} 
typedef struct \hyperlink{structSomeIoLibHandle}{Some\+Io\+Lib\+Handle} \hyperlink{io__doc_8c_ac243520f2d2ca521136fdd846fcec3ce}{Some\+Io\+Lib\+Handle}
\begin{DoxyCompactList}\small\item\em Example I/O management library data structure. \end{DoxyCompactList}\item 
typedef struct \hyperlink{structDocOperationData}{Doc\+Operation\+Data} \hyperlink{io__doc_8c_a4a590fea95ee3e2ac9ca2623f2cec714}{Doc\+Operation\+Data}
\begin{DoxyCompactList}\small\item\em \mbox{[}kdbio operation data\mbox{]} \end{DoxyCompactList}\item 
typedef struct \hyperlink{structDocBindingData}{Doc\+Binding\+Data} \hyperlink{io__doc_8c_a00328aad71b73010cecf82f878a09a9a}{Doc\+Binding\+Data}
\begin{DoxyCompactList}\small\item\em \mbox{[}kdbio operation data\mbox{]} \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
enum \hyperlink{io__doc_8c_afd6a0d2d89dbd201d1ab5d227b3bbfda}{Some\+Io\+Lib\+Flags} \{ \hyperlink{io__doc_8c_afd6a0d2d89dbd201d1ab5d227b3bbfdaa4a977b1dbada6560b2b931c64568dfca}{S\+O\+M\+E\+\_\+\+I\+O\+L\+I\+B\+\_\+\+R\+E\+A\+D\+A\+B\+LE} = 1 $<$$<$ 0, 
\hyperlink{io__doc_8c_afd6a0d2d89dbd201d1ab5d227b3bbfdaa900bfee99bd0ffb2972880e2834304fe}{S\+O\+M\+E\+\_\+\+I\+O\+L\+I\+B\+\_\+\+W\+R\+I\+T\+A\+B\+LE} = 1 $<$$<$ 1
 \}\begin{DoxyCompactList}\small\item\em Example I/O mangement library bitmask flags. \end{DoxyCompactList}
\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{structDocOperationData}{Doc\+Operation\+Data} $\ast$ \hyperlink{io__doc_8c_a18494b019c975b4212d39c9d83ff1e02}{new\+Operation\+Data} (void)
\begin{DoxyCompactList}\small\item\em \mbox{[}kdbio binding data\mbox{]} \end{DoxyCompactList}\item 
int \hyperlink{io__doc_8c_a3765fc3222ed7bd10910575f3fa700be}{some\+Bit\+Mask\+To\+Elektra\+Io\+Flags} (int bitmask)
\begin{DoxyCompactList}\small\item\em Convert your I/O library bit mask to Elektra\textquotesingle{}s I/O flags. \end{DoxyCompactList}\item 
void \hyperlink{io__doc_8c_a1fce91400d38bed917cdb6dfc1bc1cf6}{io\+Doc\+Binding\+Fd\+Callback} (\hyperlink{structSomeIoLibHandle}{Some\+Io\+Lib\+Handle} $\ast$handle, int bitmask)
\begin{DoxyCompactList}\small\item\em Calls the associated operation callback. \end{DoxyCompactList}\item 
void \hyperlink{io__doc_8c_a03cc71687c51945590a6f852e330702f}{io\+Doc\+Binding\+Timer\+Callback} (\hyperlink{structSomeIoLibHandle}{Some\+Io\+Lib\+Handle} $\ast$handle)
\begin{DoxyCompactList}\small\item\em \mbox{[}kdbio operation callback\mbox{]} \end{DoxyCompactList}\item 
void \hyperlink{io__doc_8c_a256f282ea3b983f7054e153fb365629f}{io\+Doc\+Binding\+Idle\+Callback} (\hyperlink{structSomeIoLibHandle}{Some\+Io\+Lib\+Handle} $\ast$handle)
\begin{DoxyCompactList}\small\item\em Calls the associated operation callback. \end{DoxyCompactList}\item 
int \hyperlink{io__doc_8c_a172a781f21310745a16cb24c578c4656}{io\+Doc\+Binding\+Update\+Fd} (\hyperlink{kdbio_8h_af7fbb1df168155ef4bf0b8cd2dd1b0ff}{Elektra\+Io\+Fd\+Operation} $\ast$fd\+Op)
\begin{DoxyCompactList}\small\item\em Update information about a file descriptor watched by I/O binding. \end{DoxyCompactList}\item 
int \hyperlink{io__doc_8c_ae9b5f4e891829f3af8563e8160e1bd02}{io\+Doc\+Binding\+Add\+Fd} (\hyperlink{kdbio_8h_aabcd87b8c09d4d4c1033fc1baa417391}{Elektra\+Io\+Interface} $\ast$binding, \hyperlink{kdbio_8h_af7fbb1df168155ef4bf0b8cd2dd1b0ff}{Elektra\+Io\+Fd\+Operation} $\ast$fd\+Op)
\begin{DoxyCompactList}\small\item\em Add file descriptor to I/O binding. \end{DoxyCompactList}\item 
int \hyperlink{io__doc_8c_ac5a985c3d54b2c06838d8af1719fcf09}{io\+Doc\+Binding\+Remove\+Fd} (\hyperlink{kdbio_8h_af7fbb1df168155ef4bf0b8cd2dd1b0ff}{Elektra\+Io\+Fd\+Operation} $\ast$fd\+Op)
\begin{DoxyCompactList}\small\item\em Remove file descriptor from I/O binding. \end{DoxyCompactList}\item 
int \hyperlink{io__doc_8c_a1ed16f0e61d2c7c59735b321b7080dec}{io\+Doc\+Binding\+Update\+Timer} (\hyperlink{kdbio_8h_a09c40c890207a8244fc39bb930fee1fa}{Elektra\+Io\+Timer\+Operation} $\ast$timer\+Op)
\begin{DoxyCompactList}\small\item\em Update timer in I/O binding. \end{DoxyCompactList}\item 
int \hyperlink{io__doc_8c_a4392a7bfa23513cf4cff7bcf4b0c4c68}{io\+Doc\+Binding\+Add\+Timer} (\hyperlink{kdbio_8h_aabcd87b8c09d4d4c1033fc1baa417391}{Elektra\+Io\+Interface} $\ast$binding, \hyperlink{kdbio_8h_a09c40c890207a8244fc39bb930fee1fa}{Elektra\+Io\+Timer\+Operation} $\ast$timer\+Op)
\begin{DoxyCompactList}\small\item\em Add timer for I/O binding. \end{DoxyCompactList}\item 
int \hyperlink{io__doc_8c_afc27d1f174e30aab500a9e94a366f8ec}{io\+Doc\+Binding\+Remove\+Timer} (\hyperlink{kdbio_8h_a09c40c890207a8244fc39bb930fee1fa}{Elektra\+Io\+Timer\+Operation} $\ast$timer\+Op)
\begin{DoxyCompactList}\small\item\em Remove timer from I/O binding. \end{DoxyCompactList}\item 
int \hyperlink{io__doc_8c_a9b8faf0861123676a0a826987962552f}{io\+Doc\+Binding\+Update\+Idle} (\hyperlink{kdbio_8h_aca5dd0703de86779b04036ce75d0cce9}{Elektra\+Io\+Idle\+Operation} $\ast$idle\+Op)
\begin{DoxyCompactList}\small\item\em Update idle operation in I/O binding. \end{DoxyCompactList}\item 
int \hyperlink{io__doc_8c_ae7db8c833350176d2570cc4a010c2692}{io\+Doc\+Binding\+Add\+Idle} (\hyperlink{kdbio_8h_aabcd87b8c09d4d4c1033fc1baa417391}{Elektra\+Io\+Interface} $\ast$binding, \hyperlink{kdbio_8h_aca5dd0703de86779b04036ce75d0cce9}{Elektra\+Io\+Idle\+Operation} $\ast$idle\+Op)
\begin{DoxyCompactList}\small\item\em Add idle operation to I/O binding. \end{DoxyCompactList}\item 
int \hyperlink{io__doc_8c_ad813afce995620df6542c3cdd32b23e6}{io\+Doc\+Binding\+Remove\+Idle} (\hyperlink{kdbio_8h_aca5dd0703de86779b04036ce75d0cce9}{Elektra\+Io\+Idle\+Operation} $\ast$idle\+Op)
\begin{DoxyCompactList}\small\item\em Remove idle operation from I/O binding. \end{DoxyCompactList}\item 
int \hyperlink{io__doc_8c_a8bfb50f3c81b02ba9f0ad1a2f24afb6d}{io\+Doc\+Binding\+Cleanup} (\hyperlink{kdbio_8h_aabcd87b8c09d4d4c1033fc1baa417391}{Elektra\+Io\+Interface} $\ast$binding)
\begin{DoxyCompactList}\small\item\em Cleanup. \end{DoxyCompactList}\item 
\hyperlink{kdbio_8h_aabcd87b8c09d4d4c1033fc1baa417391}{Elektra\+Io\+Interface} $\ast$ \hyperlink{io__doc_8c_af4bd586146acfbb1c1324483b79f0cc3}{elektra\+Io\+Doc\+New} (char $\ast$foo)
\begin{DoxyCompactList}\small\item\em Create and initialize a new doc I/O binding. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
I/O example binding. 

\begin{DoxyCopyright}{Copyright}
B\+SD License (see L\+I\+C\+E\+N\+S\+E.\+md or \href{https://www.libelektra.org}{\tt https\+://www.\+libelektra.\+org})
\end{DoxyCopyright}
All functions except the I/O binding entry point (\hyperlink{io__doc_8c_af4bd586146acfbb1c1324483b79f0cc3}{elektra\+Io\+Doc\+New()}) would normally be static but for documentation purposes they are not. 

\subsection{Typedef Documentation}
\mbox{\Hypertarget{io__doc_8c_a00328aad71b73010cecf82f878a09a9a}\label{io__doc_8c_a00328aad71b73010cecf82f878a09a9a}} 
\index{io\+\_\+doc.\+c@{io\+\_\+doc.\+c}!Doc\+Binding\+Data@{Doc\+Binding\+Data}}
\index{Doc\+Binding\+Data@{Doc\+Binding\+Data}!io\+\_\+doc.\+c@{io\+\_\+doc.\+c}}
\subsubsection{\texorpdfstring{Doc\+Binding\+Data}{DocBindingData}}
{\footnotesize\ttfamily typedef struct \hyperlink{structDocBindingData}{Doc\+Binding\+Data}  \hyperlink{structDocBindingData}{Doc\+Binding\+Data}}



\mbox{[}kdbio operation data\mbox{]} 

\mbox{[}kdbio binding data\mbox{]} Container for additional information for an I/O binding. \mbox{\Hypertarget{io__doc_8c_a4a590fea95ee3e2ac9ca2623f2cec714}\label{io__doc_8c_a4a590fea95ee3e2ac9ca2623f2cec714}} 
\index{io\+\_\+doc.\+c@{io\+\_\+doc.\+c}!Doc\+Operation\+Data@{Doc\+Operation\+Data}}
\index{Doc\+Operation\+Data@{Doc\+Operation\+Data}!io\+\_\+doc.\+c@{io\+\_\+doc.\+c}}
\subsubsection{\texorpdfstring{Doc\+Operation\+Data}{DocOperationData}}
{\footnotesize\ttfamily typedef struct \hyperlink{structDocOperationData}{Doc\+Operation\+Data}  \hyperlink{structDocOperationData}{Doc\+Operation\+Data}}



\mbox{[}kdbio operation data\mbox{]} 

Container for additional information for I/O binding operations.

It is helpful to create a data structure for your binding to store additional data 

\subsection{Enumeration Type Documentation}
\mbox{\Hypertarget{io__doc_8c_afd6a0d2d89dbd201d1ab5d227b3bbfda}\label{io__doc_8c_afd6a0d2d89dbd201d1ab5d227b3bbfda}} 
\index{io\+\_\+doc.\+c@{io\+\_\+doc.\+c}!Some\+Io\+Lib\+Flags@{Some\+Io\+Lib\+Flags}}
\index{Some\+Io\+Lib\+Flags@{Some\+Io\+Lib\+Flags}!io\+\_\+doc.\+c@{io\+\_\+doc.\+c}}
\subsubsection{\texorpdfstring{Some\+Io\+Lib\+Flags}{SomeIoLibFlags}}
{\footnotesize\ttfamily enum \hyperlink{io__doc_8c_afd6a0d2d89dbd201d1ab5d227b3bbfda}{Some\+Io\+Lib\+Flags}}



Example I/O mangement library bitmask flags. 

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{S\+O\+M\+E\+\_\+\+I\+O\+L\+I\+B\+\_\+\+R\+E\+A\+D\+A\+B\+LE@{S\+O\+M\+E\+\_\+\+I\+O\+L\+I\+B\+\_\+\+R\+E\+A\+D\+A\+B\+LE}!io\+\_\+doc.\+c@{io\+\_\+doc.\+c}}\index{io\+\_\+doc.\+c@{io\+\_\+doc.\+c}!S\+O\+M\+E\+\_\+\+I\+O\+L\+I\+B\+\_\+\+R\+E\+A\+D\+A\+B\+LE@{S\+O\+M\+E\+\_\+\+I\+O\+L\+I\+B\+\_\+\+R\+E\+A\+D\+A\+B\+LE}}}\mbox{\Hypertarget{io__doc_8c_afd6a0d2d89dbd201d1ab5d227b3bbfdaa4a977b1dbada6560b2b931c64568dfca}\label{io__doc_8c_afd6a0d2d89dbd201d1ab5d227b3bbfdaa4a977b1dbada6560b2b931c64568dfca}} 
S\+O\+M\+E\+\_\+\+I\+O\+L\+I\+B\+\_\+\+R\+E\+A\+D\+A\+B\+LE&indicates that the file descriptor is readable \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{S\+O\+M\+E\+\_\+\+I\+O\+L\+I\+B\+\_\+\+W\+R\+I\+T\+A\+B\+LE@{S\+O\+M\+E\+\_\+\+I\+O\+L\+I\+B\+\_\+\+W\+R\+I\+T\+A\+B\+LE}!io\+\_\+doc.\+c@{io\+\_\+doc.\+c}}\index{io\+\_\+doc.\+c@{io\+\_\+doc.\+c}!S\+O\+M\+E\+\_\+\+I\+O\+L\+I\+B\+\_\+\+W\+R\+I\+T\+A\+B\+LE@{S\+O\+M\+E\+\_\+\+I\+O\+L\+I\+B\+\_\+\+W\+R\+I\+T\+A\+B\+LE}}}\mbox{\Hypertarget{io__doc_8c_afd6a0d2d89dbd201d1ab5d227b3bbfdaa900bfee99bd0ffb2972880e2834304fe}\label{io__doc_8c_afd6a0d2d89dbd201d1ab5d227b3bbfdaa900bfee99bd0ffb2972880e2834304fe}} 
S\+O\+M\+E\+\_\+\+I\+O\+L\+I\+B\+\_\+\+W\+R\+I\+T\+A\+B\+LE&indicates that the file descriptor is readable \\
\hline

\end{DoxyEnumFields}


\subsection{Function Documentation}
\mbox{\Hypertarget{io__doc_8c_af4bd586146acfbb1c1324483b79f0cc3}\label{io__doc_8c_af4bd586146acfbb1c1324483b79f0cc3}} 
\index{io\+\_\+doc.\+c@{io\+\_\+doc.\+c}!elektra\+Io\+Doc\+New@{elektra\+Io\+Doc\+New}}
\index{elektra\+Io\+Doc\+New@{elektra\+Io\+Doc\+New}!io\+\_\+doc.\+c@{io\+\_\+doc.\+c}}
\subsubsection{\texorpdfstring{elektra\+Io\+Doc\+New()}{elektraIoDocNew()}}
{\footnotesize\ttfamily \hyperlink{kdbio_8h_aabcd87b8c09d4d4c1033fc1baa417391}{Elektra\+Io\+Interface}$\ast$ elektra\+Io\+Doc\+New (\begin{DoxyParamCaption}\item[{char $\ast$}]{foo }\end{DoxyParamCaption})}



Create and initialize a new doc I/O binding. 


\begin{DoxyParams}{Parameters}
{\em foo} & Some data from I/O management library (e.\+g. a handle) \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Populated I/O interface 
\end{DoxyReturn}
\mbox{[}kdbio binding create\mbox{]}

\mbox{[}kdbio binding create\mbox{]} \mbox{[}kdbio binding setdata\mbox{]}

\mbox{[}kdbio binding setdata\mbox{]} \mbox{\Hypertarget{io__doc_8c_ae9b5f4e891829f3af8563e8160e1bd02}\label{io__doc_8c_ae9b5f4e891829f3af8563e8160e1bd02}} 
\index{io\+\_\+doc.\+c@{io\+\_\+doc.\+c}!io\+Doc\+Binding\+Add\+Fd@{io\+Doc\+Binding\+Add\+Fd}}
\index{io\+Doc\+Binding\+Add\+Fd@{io\+Doc\+Binding\+Add\+Fd}!io\+\_\+doc.\+c@{io\+\_\+doc.\+c}}
\subsubsection{\texorpdfstring{io\+Doc\+Binding\+Add\+Fd()}{ioDocBindingAddFd()}}
{\footnotesize\ttfamily int io\+Doc\+Binding\+Add\+Fd (\begin{DoxyParamCaption}\item[{\hyperlink{kdbio_8h_aabcd87b8c09d4d4c1033fc1baa417391}{Elektra\+Io\+Interface} $\ast$}]{binding,  }\item[{\hyperlink{kdbio_8h_af7fbb1df168155ef4bf0b8cd2dd1b0ff}{Elektra\+Io\+Fd\+Operation} $\ast$}]{fd\+Op }\end{DoxyParamCaption})}



Add file descriptor to I/O binding. 

\begin{DoxySeeAlso}{See also}
\hyperlink{kdbio_8h}{kdbio.\+h} \hyperlink{kdbio_8h_addbfc876a15d0b8864196c67ab3e5a26}{Elektra\+Io\+Binding\+Add\+Fd} 
\end{DoxySeeAlso}
\mbox{[}kdbio binding addfd\mbox{]}

\mbox{[}kdbio binding addfd\mbox{]} \mbox{\Hypertarget{io__doc_8c_ae7db8c833350176d2570cc4a010c2692}\label{io__doc_8c_ae7db8c833350176d2570cc4a010c2692}} 
\index{io\+\_\+doc.\+c@{io\+\_\+doc.\+c}!io\+Doc\+Binding\+Add\+Idle@{io\+Doc\+Binding\+Add\+Idle}}
\index{io\+Doc\+Binding\+Add\+Idle@{io\+Doc\+Binding\+Add\+Idle}!io\+\_\+doc.\+c@{io\+\_\+doc.\+c}}
\subsubsection{\texorpdfstring{io\+Doc\+Binding\+Add\+Idle()}{ioDocBindingAddIdle()}}
{\footnotesize\ttfamily int io\+Doc\+Binding\+Add\+Idle (\begin{DoxyParamCaption}\item[{\hyperlink{kdbio_8h_aabcd87b8c09d4d4c1033fc1baa417391}{Elektra\+Io\+Interface} $\ast$}]{binding,  }\item[{\hyperlink{kdbio_8h_aca5dd0703de86779b04036ce75d0cce9}{Elektra\+Io\+Idle\+Operation} $\ast$}]{idle\+Op }\end{DoxyParamCaption})}



Add idle operation to I/O binding. 

\begin{DoxySeeAlso}{See also}
\hyperlink{kdbio_8h}{kdbio.\+h} \hyperlink{kdbio_8h_adcfdf9f514441cabfbfd064fe4021522}{Elektra\+Io\+Binding\+Add\+Idle} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{io__doc_8c_a4392a7bfa23513cf4cff7bcf4b0c4c68}\label{io__doc_8c_a4392a7bfa23513cf4cff7bcf4b0c4c68}} 
\index{io\+\_\+doc.\+c@{io\+\_\+doc.\+c}!io\+Doc\+Binding\+Add\+Timer@{io\+Doc\+Binding\+Add\+Timer}}
\index{io\+Doc\+Binding\+Add\+Timer@{io\+Doc\+Binding\+Add\+Timer}!io\+\_\+doc.\+c@{io\+\_\+doc.\+c}}
\subsubsection{\texorpdfstring{io\+Doc\+Binding\+Add\+Timer()}{ioDocBindingAddTimer()}}
{\footnotesize\ttfamily int io\+Doc\+Binding\+Add\+Timer (\begin{DoxyParamCaption}\item[{\hyperlink{kdbio_8h_aabcd87b8c09d4d4c1033fc1baa417391}{Elektra\+Io\+Interface} $\ast$}]{binding,  }\item[{\hyperlink{kdbio_8h_a09c40c890207a8244fc39bb930fee1fa}{Elektra\+Io\+Timer\+Operation} $\ast$}]{timer\+Op }\end{DoxyParamCaption})}



Add timer for I/O binding. 

\begin{DoxySeeAlso}{See also}
\hyperlink{kdbio_8h}{kdbio.\+h} \hyperlink{kdbio_8h_a61a8f37e371b8360c92222f58f4691eb}{Elektra\+Io\+Binding\+Add\+Timer} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{io__doc_8c_a8bfb50f3c81b02ba9f0ad1a2f24afb6d}\label{io__doc_8c_a8bfb50f3c81b02ba9f0ad1a2f24afb6d}} 
\index{io\+\_\+doc.\+c@{io\+\_\+doc.\+c}!io\+Doc\+Binding\+Cleanup@{io\+Doc\+Binding\+Cleanup}}
\index{io\+Doc\+Binding\+Cleanup@{io\+Doc\+Binding\+Cleanup}!io\+\_\+doc.\+c@{io\+\_\+doc.\+c}}
\subsubsection{\texorpdfstring{io\+Doc\+Binding\+Cleanup()}{ioDocBindingCleanup()}}
{\footnotesize\ttfamily int io\+Doc\+Binding\+Cleanup (\begin{DoxyParamCaption}\item[{\hyperlink{kdbio_8h_aabcd87b8c09d4d4c1033fc1baa417391}{Elektra\+Io\+Interface} $\ast$}]{binding }\end{DoxyParamCaption})}



Cleanup. 


\begin{DoxyParams}{Parameters}
{\em binding} & I/O binding \\
\hline
\end{DoxyParams}
\begin{DoxySeeAlso}{See also}
\hyperlink{kdbio_8h}{kdbio.\+h} \hyperlink{kdbio_8h_a08d3ce531bbd1c5acedbdb9822b24d6d}{Elektra\+Io\+Binding\+Cleanup} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{io__doc_8c_a1fce91400d38bed917cdb6dfc1bc1cf6}\label{io__doc_8c_a1fce91400d38bed917cdb6dfc1bc1cf6}} 
\index{io\+\_\+doc.\+c@{io\+\_\+doc.\+c}!io\+Doc\+Binding\+Fd\+Callback@{io\+Doc\+Binding\+Fd\+Callback}}
\index{io\+Doc\+Binding\+Fd\+Callback@{io\+Doc\+Binding\+Fd\+Callback}!io\+\_\+doc.\+c@{io\+\_\+doc.\+c}}
\subsubsection{\texorpdfstring{io\+Doc\+Binding\+Fd\+Callback()}{ioDocBindingFdCallback()}}
{\footnotesize\ttfamily void io\+Doc\+Binding\+Fd\+Callback (\begin{DoxyParamCaption}\item[{\hyperlink{structSomeIoLibHandle}{Some\+Io\+Lib\+Handle} $\ast$}]{handle,  }\item[{int}]{bitmask }\end{DoxyParamCaption})}



Calls the associated operation callback. 

Called by your I/O management library whenever a file descriptor status has changed.


\begin{DoxyParams}{Parameters}
{\em handle} & some I/O management handle \\
\hline
{\em flags} & flags bit mask\mbox{[}kdbio operation callback\mbox{]} \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{io__doc_8c_a256f282ea3b983f7054e153fb365629f}\label{io__doc_8c_a256f282ea3b983f7054e153fb365629f}} 
\index{io\+\_\+doc.\+c@{io\+\_\+doc.\+c}!io\+Doc\+Binding\+Idle\+Callback@{io\+Doc\+Binding\+Idle\+Callback}}
\index{io\+Doc\+Binding\+Idle\+Callback@{io\+Doc\+Binding\+Idle\+Callback}!io\+\_\+doc.\+c@{io\+\_\+doc.\+c}}
\subsubsection{\texorpdfstring{io\+Doc\+Binding\+Idle\+Callback()}{ioDocBindingIdleCallback()}}
{\footnotesize\ttfamily void io\+Doc\+Binding\+Idle\+Callback (\begin{DoxyParamCaption}\item[{\hyperlink{structSomeIoLibHandle}{Some\+Io\+Lib\+Handle} $\ast$}]{handle }\end{DoxyParamCaption})}



Calls the associated operation callback. 

Called by your I/O management library whenever an idle operation can run without interfering with other operations.


\begin{DoxyParams}{Parameters}
{\em handle} & some I/O management handle \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{io__doc_8c_ac5a985c3d54b2c06838d8af1719fcf09}\label{io__doc_8c_ac5a985c3d54b2c06838d8af1719fcf09}} 
\index{io\+\_\+doc.\+c@{io\+\_\+doc.\+c}!io\+Doc\+Binding\+Remove\+Fd@{io\+Doc\+Binding\+Remove\+Fd}}
\index{io\+Doc\+Binding\+Remove\+Fd@{io\+Doc\+Binding\+Remove\+Fd}!io\+\_\+doc.\+c@{io\+\_\+doc.\+c}}
\subsubsection{\texorpdfstring{io\+Doc\+Binding\+Remove\+Fd()}{ioDocBindingRemoveFd()}}
{\footnotesize\ttfamily int io\+Doc\+Binding\+Remove\+Fd (\begin{DoxyParamCaption}\item[{\hyperlink{kdbio_8h_af7fbb1df168155ef4bf0b8cd2dd1b0ff}{Elektra\+Io\+Fd\+Operation} $\ast$}]{fd\+Op }\end{DoxyParamCaption})}



Remove file descriptor from I/O binding. 

\begin{DoxySeeAlso}{See also}
\hyperlink{kdbio_8h}{kdbio.\+h} \hyperlink{kdbio_8h_af1d03ff367130892ec3d1f4788eb8277}{Elektra\+Io\+Binding\+Remove\+Fd} 
\end{DoxySeeAlso}
\mbox{[}kdbio operation getdata\mbox{]}

\mbox{[}kdbio operation getdata\mbox{]} \mbox{\Hypertarget{io__doc_8c_ad813afce995620df6542c3cdd32b23e6}\label{io__doc_8c_ad813afce995620df6542c3cdd32b23e6}} 
\index{io\+\_\+doc.\+c@{io\+\_\+doc.\+c}!io\+Doc\+Binding\+Remove\+Idle@{io\+Doc\+Binding\+Remove\+Idle}}
\index{io\+Doc\+Binding\+Remove\+Idle@{io\+Doc\+Binding\+Remove\+Idle}!io\+\_\+doc.\+c@{io\+\_\+doc.\+c}}
\subsubsection{\texorpdfstring{io\+Doc\+Binding\+Remove\+Idle()}{ioDocBindingRemoveIdle()}}
{\footnotesize\ttfamily int io\+Doc\+Binding\+Remove\+Idle (\begin{DoxyParamCaption}\item[{\hyperlink{kdbio_8h_aca5dd0703de86779b04036ce75d0cce9}{Elektra\+Io\+Idle\+Operation} $\ast$}]{idle\+Op }\end{DoxyParamCaption})}



Remove idle operation from I/O binding. 

\begin{DoxySeeAlso}{See also}
\hyperlink{kdbio_8h}{kdbio.\+h} \hyperlink{kdbio_8h_a23b523b54e70df91a85c95583b6c958f}{Elektra\+Io\+Binding\+Remove\+Idle} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{io__doc_8c_afc27d1f174e30aab500a9e94a366f8ec}\label{io__doc_8c_afc27d1f174e30aab500a9e94a366f8ec}} 
\index{io\+\_\+doc.\+c@{io\+\_\+doc.\+c}!io\+Doc\+Binding\+Remove\+Timer@{io\+Doc\+Binding\+Remove\+Timer}}
\index{io\+Doc\+Binding\+Remove\+Timer@{io\+Doc\+Binding\+Remove\+Timer}!io\+\_\+doc.\+c@{io\+\_\+doc.\+c}}
\subsubsection{\texorpdfstring{io\+Doc\+Binding\+Remove\+Timer()}{ioDocBindingRemoveTimer()}}
{\footnotesize\ttfamily int io\+Doc\+Binding\+Remove\+Timer (\begin{DoxyParamCaption}\item[{\hyperlink{kdbio_8h_a09c40c890207a8244fc39bb930fee1fa}{Elektra\+Io\+Timer\+Operation} $\ast$}]{timer\+Op }\end{DoxyParamCaption})}



Remove timer from I/O binding. 

\begin{DoxySeeAlso}{See also}
\hyperlink{kdbio_8h}{kdbio.\+h} \hyperlink{kdbio_8h_a00c0ffb60386fd65869367280d1ffe62}{Elektra\+Io\+Binding\+Remove\+Timer} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{io__doc_8c_a03cc71687c51945590a6f852e330702f}\label{io__doc_8c_a03cc71687c51945590a6f852e330702f}} 
\index{io\+\_\+doc.\+c@{io\+\_\+doc.\+c}!io\+Doc\+Binding\+Timer\+Callback@{io\+Doc\+Binding\+Timer\+Callback}}
\index{io\+Doc\+Binding\+Timer\+Callback@{io\+Doc\+Binding\+Timer\+Callback}!io\+\_\+doc.\+c@{io\+\_\+doc.\+c}}
\subsubsection{\texorpdfstring{io\+Doc\+Binding\+Timer\+Callback()}{ioDocBindingTimerCallback()}}
{\footnotesize\ttfamily void io\+Doc\+Binding\+Timer\+Callback (\begin{DoxyParamCaption}\item[{\hyperlink{structSomeIoLibHandle}{Some\+Io\+Lib\+Handle} $\ast$}]{handle }\end{DoxyParamCaption})}



\mbox{[}kdbio operation callback\mbox{]} 

Calls the associated operation callback. Called by your I/O management library whenever a timer interval has passed.


\begin{DoxyParams}{Parameters}
{\em handle} & some I/O management handle \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{io__doc_8c_a172a781f21310745a16cb24c578c4656}\label{io__doc_8c_a172a781f21310745a16cb24c578c4656}} 
\index{io\+\_\+doc.\+c@{io\+\_\+doc.\+c}!io\+Doc\+Binding\+Update\+Fd@{io\+Doc\+Binding\+Update\+Fd}}
\index{io\+Doc\+Binding\+Update\+Fd@{io\+Doc\+Binding\+Update\+Fd}!io\+\_\+doc.\+c@{io\+\_\+doc.\+c}}
\subsubsection{\texorpdfstring{io\+Doc\+Binding\+Update\+Fd()}{ioDocBindingUpdateFd()}}
{\footnotesize\ttfamily int io\+Doc\+Binding\+Update\+Fd (\begin{DoxyParamCaption}\item[{\hyperlink{kdbio_8h_af7fbb1df168155ef4bf0b8cd2dd1b0ff}{Elektra\+Io\+Fd\+Operation} $\ast$}]{fd\+Op }\end{DoxyParamCaption})}



Update information about a file descriptor watched by I/O binding. 

\begin{DoxySeeAlso}{See also}
\hyperlink{kdbio_8h}{kdbio.\+h} \hyperlink{kdbio_8h_acdb75b8df54c2b64980cf541b2704f37}{Elektra\+Io\+Binding\+Update\+Fd} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{io__doc_8c_a9b8faf0861123676a0a826987962552f}\label{io__doc_8c_a9b8faf0861123676a0a826987962552f}} 
\index{io\+\_\+doc.\+c@{io\+\_\+doc.\+c}!io\+Doc\+Binding\+Update\+Idle@{io\+Doc\+Binding\+Update\+Idle}}
\index{io\+Doc\+Binding\+Update\+Idle@{io\+Doc\+Binding\+Update\+Idle}!io\+\_\+doc.\+c@{io\+\_\+doc.\+c}}
\subsubsection{\texorpdfstring{io\+Doc\+Binding\+Update\+Idle()}{ioDocBindingUpdateIdle()}}
{\footnotesize\ttfamily int io\+Doc\+Binding\+Update\+Idle (\begin{DoxyParamCaption}\item[{\hyperlink{kdbio_8h_aca5dd0703de86779b04036ce75d0cce9}{Elektra\+Io\+Idle\+Operation} $\ast$}]{idle\+Op }\end{DoxyParamCaption})}



Update idle operation in I/O binding. 

\begin{DoxySeeAlso}{See also}
\hyperlink{kdbio_8h}{kdbio.\+h} \hyperlink{kdbio_8h_af4fa5e05e59022b5d5421932882fc966}{Elektra\+Io\+Binding\+Update\+Idle} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{io__doc_8c_a1ed16f0e61d2c7c59735b321b7080dec}\label{io__doc_8c_a1ed16f0e61d2c7c59735b321b7080dec}} 
\index{io\+\_\+doc.\+c@{io\+\_\+doc.\+c}!io\+Doc\+Binding\+Update\+Timer@{io\+Doc\+Binding\+Update\+Timer}}
\index{io\+Doc\+Binding\+Update\+Timer@{io\+Doc\+Binding\+Update\+Timer}!io\+\_\+doc.\+c@{io\+\_\+doc.\+c}}
\subsubsection{\texorpdfstring{io\+Doc\+Binding\+Update\+Timer()}{ioDocBindingUpdateTimer()}}
{\footnotesize\ttfamily int io\+Doc\+Binding\+Update\+Timer (\begin{DoxyParamCaption}\item[{\hyperlink{kdbio_8h_a09c40c890207a8244fc39bb930fee1fa}{Elektra\+Io\+Timer\+Operation} $\ast$}]{timer\+Op }\end{DoxyParamCaption})}



Update timer in I/O binding. 

\begin{DoxySeeAlso}{See also}
\hyperlink{kdbio_8h}{kdbio.\+h} \hyperlink{kdbio_8h_ab50f6288380aba507d27a0d66e00d8b4}{Elektra\+Io\+Binding\+Update\+Timer} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{io__doc_8c_a18494b019c975b4212d39c9d83ff1e02}\label{io__doc_8c_a18494b019c975b4212d39c9d83ff1e02}} 
\index{io\+\_\+doc.\+c@{io\+\_\+doc.\+c}!new\+Operation\+Data@{new\+Operation\+Data}}
\index{new\+Operation\+Data@{new\+Operation\+Data}!io\+\_\+doc.\+c@{io\+\_\+doc.\+c}}
\subsubsection{\texorpdfstring{new\+Operation\+Data()}{newOperationData()}}
{\footnotesize\ttfamily \hyperlink{structDocOperationData}{Doc\+Operation\+Data}$\ast$ new\+Operation\+Data (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})}



\mbox{[}kdbio binding data\mbox{]} 

A little helper function for allocating our custom operation data structure \begin{DoxyReturn}{Returns}
New data structure, remember to call \hyperlink{internal_8c_a7f572149d2e0bfe18023a6ac969f195c}{elektra\+Free()} 
\end{DoxyReturn}
\mbox{\Hypertarget{io__doc_8c_a3765fc3222ed7bd10910575f3fa700be}\label{io__doc_8c_a3765fc3222ed7bd10910575f3fa700be}} 
\index{io\+\_\+doc.\+c@{io\+\_\+doc.\+c}!some\+Bit\+Mask\+To\+Elektra\+Io\+Flags@{some\+Bit\+Mask\+To\+Elektra\+Io\+Flags}}
\index{some\+Bit\+Mask\+To\+Elektra\+Io\+Flags@{some\+Bit\+Mask\+To\+Elektra\+Io\+Flags}!io\+\_\+doc.\+c@{io\+\_\+doc.\+c}}
\subsubsection{\texorpdfstring{some\+Bit\+Mask\+To\+Elektra\+Io\+Flags()}{someBitMaskToElektraIoFlags()}}
{\footnotesize\ttfamily int some\+Bit\+Mask\+To\+Elektra\+Io\+Flags (\begin{DoxyParamCaption}\item[{int}]{bitmask }\end{DoxyParamCaption})}



Convert your I/O library bit mask to Elektra\textquotesingle{}s I/O flags. 


\begin{DoxyParams}{Parameters}
{\em bitmask} & bit mask from I/O management library \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
bit mask with Elektra\textquotesingle{}s I/O flags (\hyperlink{kdbio_8h_ac46f42188abb1fa28c3116b8cb755825}{Elektra\+Io\+Fd\+Flags}) 
\end{DoxyReturn}
