\hypertarget{io__doc_8c}{}\doxysection{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}
\doxysubsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct \mbox{\hyperlink{structSomeIoLibHandle}{Some\+Io\+Lib\+Handle}}
\begin{DoxyCompactList}\small\item\em Example I/O management library data structure. \end{DoxyCompactList}\item 
struct \mbox{\hyperlink{structDocOperationData}{Doc\+Operation\+Data}}
\begin{DoxyCompactList}\small\item\em \mbox{[}kdbio operation data\mbox{]} \end{DoxyCompactList}\item 
struct \mbox{\hyperlink{structDocBindingData}{Doc\+Binding\+Data}}
\begin{DoxyCompactList}\small\item\em \mbox{[}kdbio operation data\mbox{]} \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{io__doc_8c_a0fef0bc4051951fcb5c98a1de16fc81f}\label{io__doc_8c_a0fef0bc4051951fcb5c98a1de16fc81f}} 
typedef struct \mbox{\hyperlink{structSomeIoLibHandle}{Some\+Io\+Lib\+Handle}} \mbox{\hyperlink{io__doc_8c_a0fef0bc4051951fcb5c98a1de16fc81f}{Some\+Io\+Lib\+Handle}}
\begin{DoxyCompactList}\small\item\em Example I/O management library data structure. \end{DoxyCompactList}\item 
typedef struct \mbox{\hyperlink{structDocOperationData}{Doc\+Operation\+Data}} \mbox{\hyperlink{io__doc_8c_a98f626ef4a6e7a09780ea66d3e0b10e1}{Doc\+Operation\+Data}}
\begin{DoxyCompactList}\small\item\em \mbox{[}kdbio operation data\mbox{]} \end{DoxyCompactList}\item 
typedef struct \mbox{\hyperlink{structDocBindingData}{Doc\+Binding\+Data}} \mbox{\hyperlink{io__doc_8c_a3e79cb58a2092e9b78e5491680201386}{Doc\+Binding\+Data}}
\begin{DoxyCompactList}\small\item\em \mbox{[}kdbio operation data\mbox{]} \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
enum \mbox{\hyperlink{io__doc_8c_afd6a0d2d89dbd201d1ab5d227b3bbfda}{Some\+Io\+Lib\+Flags}} \{ \mbox{\hyperlink{io__doc_8c_afd6a0d2d89dbd201d1ab5d227b3bbfdaa4a977b1dbada6560b2b931c64568dfca}{SOME\+\_\+\+IOLIB\+\_\+\+READABLE}} = 1 $<$$<$ 0
, \mbox{\hyperlink{io__doc_8c_afd6a0d2d89dbd201d1ab5d227b3bbfdaa900bfee99bd0ffb2972880e2834304fe}{SOME\+\_\+\+IOLIB\+\_\+\+WRITABLE}} = 1 $<$$<$ 1
 \}
\begin{DoxyCompactList}\small\item\em Example I/O mangement library bitmask flags. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{structDocOperationData}{Doc\+Operation\+Data}} $\ast$ \mbox{\hyperlink{io__doc_8c_a18494b019c975b4212d39c9d83ff1e02}{new\+Operation\+Data}} (void)
\begin{DoxyCompactList}\small\item\em \mbox{[}kdbio binding data\mbox{]} \end{DoxyCompactList}\item 
int \mbox{\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 \mbox{\hyperlink{io__doc_8c_a1fce91400d38bed917cdb6dfc1bc1cf6}{io\+Doc\+Binding\+Fd\+Callback}} (\mbox{\hyperlink{structSomeIoLibHandle}{Some\+Io\+Lib\+Handle}} $\ast$handle, int bitmask)
\begin{DoxyCompactList}\small\item\em Calls the associated operation callback. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{io__doc_8c_a03cc71687c51945590a6f852e330702f}{io\+Doc\+Binding\+Timer\+Callback}} (\mbox{\hyperlink{structSomeIoLibHandle}{Some\+Io\+Lib\+Handle}} $\ast$handle)
\begin{DoxyCompactList}\small\item\em \mbox{[}kdbio operation callback\mbox{]} \end{DoxyCompactList}\item 
void \mbox{\hyperlink{io__doc_8c_a256f282ea3b983f7054e153fb365629f}{io\+Doc\+Binding\+Idle\+Callback}} (\mbox{\hyperlink{structSomeIoLibHandle}{Some\+Io\+Lib\+Handle}} $\ast$handle)
\begin{DoxyCompactList}\small\item\em Calls the associated operation callback. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{io__doc_8c_a172a781f21310745a16cb24c578c4656}{io\+Doc\+Binding\+Update\+Fd}} (\mbox{\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 \mbox{\hyperlink{io__doc_8c_ae9b5f4e891829f3af8563e8160e1bd02}{io\+Doc\+Binding\+Add\+Fd}} (\mbox{\hyperlink{kdbio_8h_aabcd87b8c09d4d4c1033fc1baa417391}{Elektra\+Io\+Interface}} $\ast$binding, \mbox{\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 \mbox{\hyperlink{io__doc_8c_ac5a985c3d54b2c06838d8af1719fcf09}{io\+Doc\+Binding\+Remove\+Fd}} (\mbox{\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 \mbox{\hyperlink{io__doc_8c_a1ed16f0e61d2c7c59735b321b7080dec}{io\+Doc\+Binding\+Update\+Timer}} (\mbox{\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 \mbox{\hyperlink{io__doc_8c_a4392a7bfa23513cf4cff7bcf4b0c4c68}{io\+Doc\+Binding\+Add\+Timer}} (\mbox{\hyperlink{kdbio_8h_aabcd87b8c09d4d4c1033fc1baa417391}{Elektra\+Io\+Interface}} $\ast$binding, \mbox{\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 \mbox{\hyperlink{io__doc_8c_afc27d1f174e30aab500a9e94a366f8ec}{io\+Doc\+Binding\+Remove\+Timer}} (\mbox{\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 \mbox{\hyperlink{io__doc_8c_a9b8faf0861123676a0a826987962552f}{io\+Doc\+Binding\+Update\+Idle}} (\mbox{\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 \mbox{\hyperlink{io__doc_8c_ae7db8c833350176d2570cc4a010c2692}{io\+Doc\+Binding\+Add\+Idle}} (\mbox{\hyperlink{kdbio_8h_aabcd87b8c09d4d4c1033fc1baa417391}{Elektra\+Io\+Interface}} $\ast$binding, \mbox{\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 \mbox{\hyperlink{io__doc_8c_ad813afce995620df6542c3cdd32b23e6}{io\+Doc\+Binding\+Remove\+Idle}} (\mbox{\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 \mbox{\hyperlink{io__doc_8c_a8bfb50f3c81b02ba9f0ad1a2f24afb6d}{io\+Doc\+Binding\+Cleanup}} (\mbox{\hyperlink{kdbio_8h_aabcd87b8c09d4d4c1033fc1baa417391}{Elektra\+Io\+Interface}} $\ast$binding)
\begin{DoxyCompactList}\small\item\em Cleanup. \end{DoxyCompactList}\item 
\mbox{\hyperlink{kdbio_8h_aabcd87b8c09d4d4c1033fc1baa417391}{Elektra\+Io\+Interface}} $\ast$ \mbox{\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}


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

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

\doxysubsection{Typedef Documentation}
\mbox{\Hypertarget{io__doc_8c_a3e79cb58a2092e9b78e5491680201386}\label{io__doc_8c_a3e79cb58a2092e9b78e5491680201386}} 
\index{io\_doc.c@{io\_doc.c}!DocBindingData@{DocBindingData}}
\index{DocBindingData@{DocBindingData}!io\_doc.c@{io\_doc.c}}
\doxysubsubsection{\texorpdfstring{DocBindingData}{DocBindingData}}
{\footnotesize\ttfamily typedef struct \mbox{\hyperlink{structDocBindingData}{Doc\+Binding\+Data}} \mbox{\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_a98f626ef4a6e7a09780ea66d3e0b10e1}\label{io__doc_8c_a98f626ef4a6e7a09780ea66d3e0b10e1}} 
\index{io\_doc.c@{io\_doc.c}!DocOperationData@{DocOperationData}}
\index{DocOperationData@{DocOperationData}!io\_doc.c@{io\_doc.c}}
\doxysubsubsection{\texorpdfstring{DocOperationData}{DocOperationData}}
{\footnotesize\ttfamily typedef struct \mbox{\hyperlink{structDocOperationData}{Doc\+Operation\+Data}} \mbox{\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 

\doxysubsection{Enumeration Type Documentation}
\mbox{\Hypertarget{io__doc_8c_afd6a0d2d89dbd201d1ab5d227b3bbfda}\label{io__doc_8c_afd6a0d2d89dbd201d1ab5d227b3bbfda}} 
\index{io\_doc.c@{io\_doc.c}!SomeIoLibFlags@{SomeIoLibFlags}}
\index{SomeIoLibFlags@{SomeIoLibFlags}!io\_doc.c@{io\_doc.c}}
\doxysubsubsection{\texorpdfstring{SomeIoLibFlags}{SomeIoLibFlags}}
{\footnotesize\ttfamily enum \mbox{\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{SOME\_IOLIB\_READABLE@{SOME\_IOLIB\_READABLE}!io\_doc.c@{io\_doc.c}}\index{io\_doc.c@{io\_doc.c}!SOME\_IOLIB\_READABLE@{SOME\_IOLIB\_READABLE}}}\mbox{\Hypertarget{io__doc_8c_afd6a0d2d89dbd201d1ab5d227b3bbfdaa4a977b1dbada6560b2b931c64568dfca}\label{io__doc_8c_afd6a0d2d89dbd201d1ab5d227b3bbfdaa4a977b1dbada6560b2b931c64568dfca}} 
SOME\+\_\+\+IOLIB\+\_\+\+READABLE&indicates that the file descriptor is readable \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{SOME\_IOLIB\_WRITABLE@{SOME\_IOLIB\_WRITABLE}!io\_doc.c@{io\_doc.c}}\index{io\_doc.c@{io\_doc.c}!SOME\_IOLIB\_WRITABLE@{SOME\_IOLIB\_WRITABLE}}}\mbox{\Hypertarget{io__doc_8c_afd6a0d2d89dbd201d1ab5d227b3bbfdaa900bfee99bd0ffb2972880e2834304fe}\label{io__doc_8c_afd6a0d2d89dbd201d1ab5d227b3bbfdaa900bfee99bd0ffb2972880e2834304fe}} 
SOME\+\_\+\+IOLIB\+\_\+\+WRITABLE&indicates that the file descriptor is readable \\
\hline

\end{DoxyEnumFields}


\doxysubsection{Function Documentation}
\mbox{\Hypertarget{io__doc_8c_af4bd586146acfbb1c1324483b79f0cc3}\label{io__doc_8c_af4bd586146acfbb1c1324483b79f0cc3}} 
\index{io\_doc.c@{io\_doc.c}!elektraIoDocNew@{elektraIoDocNew}}
\index{elektraIoDocNew@{elektraIoDocNew}!io\_doc.c@{io\_doc.c}}
\doxysubsubsection{\texorpdfstring{elektraIoDocNew()}{elektraIoDocNew()}}
{\footnotesize\ttfamily \mbox{\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}!ioDocBindingAddFd@{ioDocBindingAddFd}}
\index{ioDocBindingAddFd@{ioDocBindingAddFd}!io\_doc.c@{io\_doc.c}}
\doxysubsubsection{\texorpdfstring{ioDocBindingAddFd()}{ioDocBindingAddFd()}}
{\footnotesize\ttfamily int io\+Doc\+Binding\+Add\+Fd (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{kdbio_8h_aabcd87b8c09d4d4c1033fc1baa417391}{Elektra\+Io\+Interface}} $\ast$}]{binding,  }\item[{\mbox{\hyperlink{kdbio_8h_af7fbb1df168155ef4bf0b8cd2dd1b0ff}{Elektra\+Io\+Fd\+Operation}} $\ast$}]{fd\+Op }\end{DoxyParamCaption})}



Add file descriptor to I/O binding. 

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{kdbio_8h}{kdbio.\+h}} \mbox{\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}!ioDocBindingAddIdle@{ioDocBindingAddIdle}}
\index{ioDocBindingAddIdle@{ioDocBindingAddIdle}!io\_doc.c@{io\_doc.c}}
\doxysubsubsection{\texorpdfstring{ioDocBindingAddIdle()}{ioDocBindingAddIdle()}}
{\footnotesize\ttfamily int io\+Doc\+Binding\+Add\+Idle (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{kdbio_8h_aabcd87b8c09d4d4c1033fc1baa417391}{Elektra\+Io\+Interface}} $\ast$}]{binding,  }\item[{\mbox{\hyperlink{kdbio_8h_aca5dd0703de86779b04036ce75d0cce9}{Elektra\+Io\+Idle\+Operation}} $\ast$}]{idle\+Op }\end{DoxyParamCaption})}



Add idle operation to I/O binding. 

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{kdbio_8h}{kdbio.\+h}} \mbox{\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}!ioDocBindingAddTimer@{ioDocBindingAddTimer}}
\index{ioDocBindingAddTimer@{ioDocBindingAddTimer}!io\_doc.c@{io\_doc.c}}
\doxysubsubsection{\texorpdfstring{ioDocBindingAddTimer()}{ioDocBindingAddTimer()}}
{\footnotesize\ttfamily int io\+Doc\+Binding\+Add\+Timer (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{kdbio_8h_aabcd87b8c09d4d4c1033fc1baa417391}{Elektra\+Io\+Interface}} $\ast$}]{binding,  }\item[{\mbox{\hyperlink{kdbio_8h_a09c40c890207a8244fc39bb930fee1fa}{Elektra\+Io\+Timer\+Operation}} $\ast$}]{timer\+Op }\end{DoxyParamCaption})}



Add timer for I/O binding. 

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{kdbio_8h}{kdbio.\+h}} \mbox{\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}!ioDocBindingCleanup@{ioDocBindingCleanup}}
\index{ioDocBindingCleanup@{ioDocBindingCleanup}!io\_doc.c@{io\_doc.c}}
\doxysubsubsection{\texorpdfstring{ioDocBindingCleanup()}{ioDocBindingCleanup()}}
{\footnotesize\ttfamily int io\+Doc\+Binding\+Cleanup (\begin{DoxyParamCaption}\item[{\mbox{\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}
\mbox{\hyperlink{kdbio_8h}{kdbio.\+h}} \mbox{\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}!ioDocBindingFdCallback@{ioDocBindingFdCallback}}
\index{ioDocBindingFdCallback@{ioDocBindingFdCallback}!io\_doc.c@{io\_doc.c}}
\doxysubsubsection{\texorpdfstring{ioDocBindingFdCallback()}{ioDocBindingFdCallback()}}
{\footnotesize\ttfamily void io\+Doc\+Binding\+Fd\+Callback (\begin{DoxyParamCaption}\item[{\mbox{\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}!ioDocBindingIdleCallback@{ioDocBindingIdleCallback}}
\index{ioDocBindingIdleCallback@{ioDocBindingIdleCallback}!io\_doc.c@{io\_doc.c}}
\doxysubsubsection{\texorpdfstring{ioDocBindingIdleCallback()}{ioDocBindingIdleCallback()}}
{\footnotesize\ttfamily void io\+Doc\+Binding\+Idle\+Callback (\begin{DoxyParamCaption}\item[{\mbox{\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}!ioDocBindingRemoveFd@{ioDocBindingRemoveFd}}
\index{ioDocBindingRemoveFd@{ioDocBindingRemoveFd}!io\_doc.c@{io\_doc.c}}
\doxysubsubsection{\texorpdfstring{ioDocBindingRemoveFd()}{ioDocBindingRemoveFd()}}
{\footnotesize\ttfamily int io\+Doc\+Binding\+Remove\+Fd (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{kdbio_8h_af7fbb1df168155ef4bf0b8cd2dd1b0ff}{Elektra\+Io\+Fd\+Operation}} $\ast$}]{fd\+Op }\end{DoxyParamCaption})}



Remove file descriptor from I/O binding. 

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{kdbio_8h}{kdbio.\+h}} \mbox{\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}!ioDocBindingRemoveIdle@{ioDocBindingRemoveIdle}}
\index{ioDocBindingRemoveIdle@{ioDocBindingRemoveIdle}!io\_doc.c@{io\_doc.c}}
\doxysubsubsection{\texorpdfstring{ioDocBindingRemoveIdle()}{ioDocBindingRemoveIdle()}}
{\footnotesize\ttfamily int io\+Doc\+Binding\+Remove\+Idle (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{kdbio_8h_aca5dd0703de86779b04036ce75d0cce9}{Elektra\+Io\+Idle\+Operation}} $\ast$}]{idle\+Op }\end{DoxyParamCaption})}



Remove idle operation from I/O binding. 

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{kdbio_8h}{kdbio.\+h}} \mbox{\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}!ioDocBindingRemoveTimer@{ioDocBindingRemoveTimer}}
\index{ioDocBindingRemoveTimer@{ioDocBindingRemoveTimer}!io\_doc.c@{io\_doc.c}}
\doxysubsubsection{\texorpdfstring{ioDocBindingRemoveTimer()}{ioDocBindingRemoveTimer()}}
{\footnotesize\ttfamily int io\+Doc\+Binding\+Remove\+Timer (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{kdbio_8h_a09c40c890207a8244fc39bb930fee1fa}{Elektra\+Io\+Timer\+Operation}} $\ast$}]{timer\+Op }\end{DoxyParamCaption})}



Remove timer from I/O binding. 

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{kdbio_8h}{kdbio.\+h}} \mbox{\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}!ioDocBindingTimerCallback@{ioDocBindingTimerCallback}}
\index{ioDocBindingTimerCallback@{ioDocBindingTimerCallback}!io\_doc.c@{io\_doc.c}}
\doxysubsubsection{\texorpdfstring{ioDocBindingTimerCallback()}{ioDocBindingTimerCallback()}}
{\footnotesize\ttfamily void io\+Doc\+Binding\+Timer\+Callback (\begin{DoxyParamCaption}\item[{\mbox{\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}!ioDocBindingUpdateFd@{ioDocBindingUpdateFd}}
\index{ioDocBindingUpdateFd@{ioDocBindingUpdateFd}!io\_doc.c@{io\_doc.c}}
\doxysubsubsection{\texorpdfstring{ioDocBindingUpdateFd()}{ioDocBindingUpdateFd()}}
{\footnotesize\ttfamily int io\+Doc\+Binding\+Update\+Fd (\begin{DoxyParamCaption}\item[{\mbox{\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}
\mbox{\hyperlink{kdbio_8h}{kdbio.\+h}} \mbox{\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}!ioDocBindingUpdateIdle@{ioDocBindingUpdateIdle}}
\index{ioDocBindingUpdateIdle@{ioDocBindingUpdateIdle}!io\_doc.c@{io\_doc.c}}
\doxysubsubsection{\texorpdfstring{ioDocBindingUpdateIdle()}{ioDocBindingUpdateIdle()}}
{\footnotesize\ttfamily int io\+Doc\+Binding\+Update\+Idle (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{kdbio_8h_aca5dd0703de86779b04036ce75d0cce9}{Elektra\+Io\+Idle\+Operation}} $\ast$}]{idle\+Op }\end{DoxyParamCaption})}



Update idle operation in I/O binding. 

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{kdbio_8h}{kdbio.\+h}} \mbox{\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}!ioDocBindingUpdateTimer@{ioDocBindingUpdateTimer}}
\index{ioDocBindingUpdateTimer@{ioDocBindingUpdateTimer}!io\_doc.c@{io\_doc.c}}
\doxysubsubsection{\texorpdfstring{ioDocBindingUpdateTimer()}{ioDocBindingUpdateTimer()}}
{\footnotesize\ttfamily int io\+Doc\+Binding\+Update\+Timer (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{kdbio_8h_a09c40c890207a8244fc39bb930fee1fa}{Elektra\+Io\+Timer\+Operation}} $\ast$}]{timer\+Op }\end{DoxyParamCaption})}



Update timer in I/O binding. 

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{kdbio_8h}{kdbio.\+h}} \mbox{\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}!newOperationData@{newOperationData}}
\index{newOperationData@{newOperationData}!io\_doc.c@{io\_doc.c}}
\doxysubsubsection{\texorpdfstring{newOperationData()}{newOperationData()}}
{\footnotesize\ttfamily \mbox{\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 \mbox{\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}!someBitMaskToElektraIoFlags@{someBitMaskToElektraIoFlags}}
\index{someBitMaskToElektraIoFlags@{someBitMaskToElektraIoFlags}!io\_doc.c@{io\_doc.c}}
\doxysubsubsection{\texorpdfstring{someBitMaskToElektraIoFlags()}{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 (\mbox{\hyperlink{kdbio_8h_ac46f42188abb1fa28c3116b8cb755825}{Elektra\+Io\+Fd\+Flags}}) 
\end{DoxyReturn}
