1\section{Introduction} 2 3\subsection{Closure Data-Structures} 4 5Let assume we are defining an interface named \emph{if}, with the 6following \emph{call} messages: 7\begin{itemize} 8 \item \verb!init_device_irq! 9 \item \verb!init_device! 10 \item \verb!get_cap! 11\end{itemize} 12 13And the following \emph{response} messages: 14\begin{itemize} 15 \item \verb!transmit_next_cap_response! 16 \item \verb!transmit_next_cap_error! 17 \item \verb!init_device_error! 18 \item \verb!init_device_response! 19\end{itemize} 20 21This will generates the following data-structures in \verb!if.h!. 22 23\subsubsection{Server-side} 24 25\begin{description} 26 \item \verb!if_service_response!: 27 \begin{itemize} 28 \item \verb!if_server_response_vtbl *! \verb!f! 29 \begin{description} 30 \item \verb!if_server_response_vtbl!: (auto-generated) 31 \begin{itemize} 32 \item \verb!if_transmit_next_cap_response_fn *! \verb!transmit_next_cap_response! 33 \item \verb!if_transmit_next_cap_error_fn *! \verb!transmit_next_cap_error! 34 \item \verb!if_init_device_error_fn *! \verb!init_device_error! 35 \item \verb!if_init_device_response_fn *! \verb!init_device_response! 36 \item \verb!chips_disconnect_handler_t! \verb!_disconnect! 37 \end{itemize} 38 \end{description} 39 \item \verb!chips_connection *! conn 40 \item \verb!if_service *! clp 41 \begin{description} 42 \item \verb!if_service!: 43 \begin{itemize} 44 \item \verb!if_server_call_vtbl *! \verb!f! 45 \begin{description} 46 \item \verb!if_server_call_vtbl!: (to be filled) 47 \begin{itemize} 48 \item \verb!if_init_device_fn *! \verb!init_device! 49 \item \verb!if_get_cap_fn *! \verb!get_cap! 50 \item \verb!chips_disconnect_handler_t! \verb!_disconnect! 51 \item \verb!chips_listen_callback_t! \verb!_listening! 52 \end{itemize} 53 \end{description} 54 \item \verb!void *! \verb!st! 55 \end{itemize} 56 \end{description} 57 \end{itemize} 58\end{description} 59 60 61\subsubsection{Client-side} 62 63\begin{description} 64 \item \verb!if_client_response!: 65 \begin{itemize} 66 \item \verb!if_client_response_vtbl *! \verb!f! 67 \begin{description} 68 \item \verb!if_client_response_vtbl!: (to be filled) 69 \begin{itemize} 70 \item \verb!if_transmit_next_cap_response_fn *! \verb!transmit_next_cap_response! 71 \item \verb!if_transmit_next_cap_error_fn *! \verb!transmit_next_cap_error! 72 \item \verb!if_init_device_error_fn *! \verb!init_device_error! 73 \item \verb!if_init_device_response_fn *! \verb!init_device_response! 74 \item \verb!chips_disconnect_handler_t! \verb!_disconnect! 75 \item \verb!if_connected_cb! \verb!_connected! 76 \end{itemize} 77 \end{description} 78 \item \verb!if_client_call_vtbl *! \verb!f! 79 \begin{description} 80 \item \verb!if_client_call_vtbl!: (auto-generated) 81 \begin{itemize} 82 \item \verb!if_init_device_fn *! \verb!init_device! 83 \item \verb!if_get_cap_fn *! \verb!get_cap! 84 \item \verb!chips_disconnect_handler! \verb!_disconnect! 85 \end{itemize} 86 \end{description} 87 \item \verb!chips_connection *! \verb!conn! 88 \item \verb!void *! \verb!st! 89 \end{itemize} 90\end{description} 91