\hypertarget{group__eventssynchronization}{}\doxysection{SVM synchronisation events}
\label{group__eventssynchronization}\index{SVM synchronisation events@{SVM synchronisation events}}


This module contains API functions to handle SVM synchronisation events.  


\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{group__apimacros_ga0d0dae93534c2ba22499a92705a4e391}{SVM\+\_\+\+FUNCTION}} \mbox{\hyperlink{group__api__types_ga1b628e5d67deb5adfcacb232c78388cb}{SVM\+\_\+\+Event\+\_\+\+Queue}} \mbox{\hyperlink{group__eventssynchronization_ga57f6d9d513e2746dfd83c9e014ee559a}{svm\+\_\+event\+\_\+queue\+\_\+new}} (const void $\ast$svm)
\begin{DoxyCompactList}\small\item\em This function creates an event queue. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__apimacros_ga0d0dae93534c2ba22499a92705a4e391}{SVM\+\_\+\+FUNCTION}} \mbox{\hyperlink{group__api__types_ga0961ca26fac1df3a61c4f488e8de76a2}{SVM\+\_\+\+Event\+\_\+\+Queue\+\_\+\+Address}} \mbox{\hyperlink{group__eventssynchronization_ga04d55b3d3ff34a3f8612c2c64245ab26}{svm\+\_\+event\+\_\+address\+\_\+new}} (const void $\ast$svm)
\begin{DoxyCompactList}\small\item\em This function creates an event queue address. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__apimacros_ga0d0dae93534c2ba22499a92705a4e391}{SVM\+\_\+\+FUNCTION}} \mbox{\hyperlink{group__api__types_ga0961ca26fac1df3a61c4f488e8de76a2}{SVM\+\_\+\+Event\+\_\+\+Queue\+\_\+\+Address}} \mbox{\hyperlink{group__eventssynchronization_ga5ef80032206d8363839224afb03f143d}{svm\+\_\+event\+\_\+address\+\_\+new\+\_\+struct}} (const void $\ast$svm, const \mbox{\hyperlink{group__api__types_ga69ff4bdc03f61848ca94b7c2c4d30347}{SVM\+\_\+\+Structure}} structure)
\begin{DoxyCompactList}\small\item\em This function creates an event queue address. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__apimacros_ga0d0dae93534c2ba22499a92705a4e391}{SVM\+\_\+\+FUNCTION}} \mbox{\hyperlink{group__api__types_ga872facc2eea0e7296e689134f568b804}{SVM\+\_\+\+Boolean}} \mbox{\hyperlink{group__eventssynchronization_gab18fd1b03ca3a819c3a1aa6fbe706218}{svm\+\_\+event\+\_\+address\+\_\+has\+\_\+struct}} (const void $\ast$svm, const \mbox{\hyperlink{group__api__types_ga0961ca26fac1df3a61c4f488e8de76a2}{SVM\+\_\+\+Event\+\_\+\+Queue\+\_\+\+Address}} address)
\begin{DoxyCompactList}\small\item\em This function checks whether an event queue address has an owner. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__apimacros_ga0d0dae93534c2ba22499a92705a4e391}{SVM\+\_\+\+FUNCTION}} \mbox{\hyperlink{group__api__types_ga69ff4bdc03f61848ca94b7c2c4d30347}{SVM\+\_\+\+Structure}} \mbox{\hyperlink{group__eventssynchronization_ga3c88a17d77f15eeeebf7c05256d2b75e}{svm\+\_\+event\+\_\+address\+\_\+get\+\_\+struct}} (const void $\ast$svm, const \mbox{\hyperlink{group__api__types_ga0961ca26fac1df3a61c4f488e8de76a2}{SVM\+\_\+\+Event\+\_\+\+Queue\+\_\+\+Address}} address)
\begin{DoxyCompactList}\small\item\em This function retrieves the owner of an event queue address. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__apimacros_ga0d0dae93534c2ba22499a92705a4e391}{SVM\+\_\+\+FUNCTION}} void \mbox{\hyperlink{group__eventssynchronization_ga9a7c0d94d395633b09efa3f0f935de53}{svm\+\_\+event\+\_\+queue\+\_\+join}} (const void $\ast$svm, \mbox{\hyperlink{group__api__types_ga1b628e5d67deb5adfcacb232c78388cb}{SVM\+\_\+\+Event\+\_\+\+Queue}} event\+\_\+queue, const \mbox{\hyperlink{group__api__types_ga0961ca26fac1df3a61c4f488e8de76a2}{SVM\+\_\+\+Event\+\_\+\+Queue\+\_\+\+Address}} address)
\begin{DoxyCompactList}\small\item\em This function lets an address to join the event queue. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__apimacros_ga0d0dae93534c2ba22499a92705a4e391}{SVM\+\_\+\+FUNCTION}} void \mbox{\hyperlink{group__eventssynchronization_ga79063b7e1c999f31c1b9c379ac0e6be1}{svm\+\_\+event\+\_\+queue\+\_\+leave}} (const void $\ast$svm, \mbox{\hyperlink{group__api__types_ga1b628e5d67deb5adfcacb232c78388cb}{SVM\+\_\+\+Event\+\_\+\+Queue}} event\+\_\+queue, const \mbox{\hyperlink{group__api__types_ga0961ca26fac1df3a61c4f488e8de76a2}{SVM\+\_\+\+Event\+\_\+\+Queue\+\_\+\+Address}} address)
\begin{DoxyCompactList}\small\item\em This function lets an address to leave the event queue. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__apimacros_ga0d0dae93534c2ba22499a92705a4e391}{SVM\+\_\+\+FUNCTION}} void \mbox{\hyperlink{group__eventssynchronization_gaada079154097b7872a9b673969c919f9}{svm\+\_\+event\+\_\+queue\+\_\+push}} (const void $\ast$svm, \mbox{\hyperlink{group__api__types_ga1b628e5d67deb5adfcacb232c78388cb}{SVM\+\_\+\+Event\+\_\+\+Queue}} event\+\_\+queue, const \mbox{\hyperlink{group__api__types_ga0961ca26fac1df3a61c4f488e8de76a2}{SVM\+\_\+\+Event\+\_\+\+Queue\+\_\+\+Address}} destination, const \mbox{\hyperlink{group__api__types_ga0961ca26fac1df3a61c4f488e8de76a2}{SVM\+\_\+\+Event\+\_\+\+Queue\+\_\+\+Address}} origin, const \mbox{\hyperlink{group__api__types_ga69ff4bdc03f61848ca94b7c2c4d30347}{SVM\+\_\+\+Structure}} event)
\begin{DoxyCompactList}\small\item\em This function pushes an event on a queue from an address to another address. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__apimacros_ga0d0dae93534c2ba22499a92705a4e391}{SVM\+\_\+\+FUNCTION}} void \mbox{\hyperlink{group__eventssynchronization_gaf4a5053377592f8044efdc3d4d4d7bf4}{svm\+\_\+event\+\_\+queue\+\_\+broadcast}} (const void $\ast$svm, \mbox{\hyperlink{group__api__types_ga1b628e5d67deb5adfcacb232c78388cb}{SVM\+\_\+\+Event\+\_\+\+Queue}} event\+\_\+queue, const \mbox{\hyperlink{group__api__types_ga0961ca26fac1df3a61c4f488e8de76a2}{SVM\+\_\+\+Event\+\_\+\+Queue\+\_\+\+Address}} origin, const \mbox{\hyperlink{group__api__types_ga69ff4bdc03f61848ca94b7c2c4d30347}{SVM\+\_\+\+Structure}} event)
\begin{DoxyCompactList}\small\item\em This function pushes an event on a queue from an address to all addresses. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__apimacros_ga0d0dae93534c2ba22499a92705a4e391}{SVM\+\_\+\+FUNCTION}} \mbox{\hyperlink{group__api__types_ga872facc2eea0e7296e689134f568b804}{SVM\+\_\+\+Boolean}} \mbox{\hyperlink{group__eventssynchronization_gafe810d35b9f9aa8b8fa2fd76a37a527c}{svm\+\_\+event\+\_\+queue\+\_\+pull}} (const void $\ast$svm, \mbox{\hyperlink{group__api__types_ga1b628e5d67deb5adfcacb232c78388cb}{SVM\+\_\+\+Event\+\_\+\+Queue}} event\+\_\+queue, const \mbox{\hyperlink{group__api__types_ga0961ca26fac1df3a61c4f488e8de76a2}{SVM\+\_\+\+Event\+\_\+\+Queue\+\_\+\+Address}} destination, \mbox{\hyperlink{group__api__types_ga0961ca26fac1df3a61c4f488e8de76a2}{SVM\+\_\+\+Event\+\_\+\+Queue\+\_\+\+Address}} $\ast$origin, \mbox{\hyperlink{group__api__types_ga69ff4bdc03f61848ca94b7c2c4d30347}{SVM\+\_\+\+Structure}} $\ast$event, const \mbox{\hyperlink{group__api__types_ga872facc2eea0e7296e689134f568b804}{SVM\+\_\+\+Boolean}} soft)
\begin{DoxyCompactList}\small\item\em This function pulls an event on a queue from an address. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__apimacros_ga0d0dae93534c2ba22499a92705a4e391}{SVM\+\_\+\+FUNCTION}} \mbox{\hyperlink{group__api__types_ga872facc2eea0e7296e689134f568b804}{SVM\+\_\+\+Boolean}} \mbox{\hyperlink{group__eventssynchronization_ga7a25810a92a9174812a83dc8e69e3957}{svm\+\_\+event\+\_\+queue\+\_\+check}} (const void $\ast$svm, \mbox{\hyperlink{group__api__types_ga1b628e5d67deb5adfcacb232c78388cb}{SVM\+\_\+\+Event\+\_\+\+Queue}} event\+\_\+queue, const \mbox{\hyperlink{group__api__types_ga0961ca26fac1df3a61c4f488e8de76a2}{SVM\+\_\+\+Event\+\_\+\+Queue\+\_\+\+Address}} destination, \mbox{\hyperlink{group__api__types_ga0961ca26fac1df3a61c4f488e8de76a2}{SVM\+\_\+\+Event\+\_\+\+Queue\+\_\+\+Address}} $\ast$origin, \mbox{\hyperlink{group__api__types_ga69ff4bdc03f61848ca94b7c2c4d30347}{SVM\+\_\+\+Structure}} $\ast$event, const \mbox{\hyperlink{group__api__types_gaffdbc5928860a9f9c0f1db65bfb63b30}{SVM\+\_\+\+Value\+\_\+\+Integer}} timeout, const \mbox{\hyperlink{group__api__types_ga872facc2eea0e7296e689134f568b804}{SVM\+\_\+\+Boolean}} soft)
\begin{DoxyCompactList}\small\item\em This function pulls an event on a queue from an address with a timeout in an integer value. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__apimacros_ga0d0dae93534c2ba22499a92705a4e391}{SVM\+\_\+\+FUNCTION}} \mbox{\hyperlink{group__api__types_ga872facc2eea0e7296e689134f568b804}{SVM\+\_\+\+Boolean}} \mbox{\hyperlink{group__eventssynchronization_gad4b5648c5868b959107d3017b83f5b16}{svm\+\_\+event\+\_\+queue\+\_\+check\+\_\+\+\_\+raw}} (const void $\ast$svm, \mbox{\hyperlink{group__api__types_ga1b628e5d67deb5adfcacb232c78388cb}{SVM\+\_\+\+Event\+\_\+\+Queue}} event\+\_\+queue, const \mbox{\hyperlink{group__api__types_ga0961ca26fac1df3a61c4f488e8de76a2}{SVM\+\_\+\+Event\+\_\+\+Queue\+\_\+\+Address}} destination, \mbox{\hyperlink{group__api__types_ga0961ca26fac1df3a61c4f488e8de76a2}{SVM\+\_\+\+Event\+\_\+\+Queue\+\_\+\+Address}} $\ast$origin, \mbox{\hyperlink{group__api__types_ga69ff4bdc03f61848ca94b7c2c4d30347}{SVM\+\_\+\+Structure}} $\ast$event, const unsigned long int timeout, const \mbox{\hyperlink{group__api__types_ga872facc2eea0e7296e689134f568b804}{SVM\+\_\+\+Boolean}} soft)
\begin{DoxyCompactList}\small\item\em This function pulls an event on a queue from an address with a timeout in a raw integer. \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
This module contains API functions to handle SVM synchronisation events. 



\doxysubsection{Function Documentation}
\mbox{\Hypertarget{group__eventssynchronization_ga3c88a17d77f15eeeebf7c05256d2b75e}\label{group__eventssynchronization_ga3c88a17d77f15eeeebf7c05256d2b75e}} 
\index{SVM synchronisation events@{SVM synchronisation events}!svm\_event\_address\_get\_struct@{svm\_event\_address\_get\_struct}}
\index{svm\_event\_address\_get\_struct@{svm\_event\_address\_get\_struct}!SVM synchronisation events@{SVM synchronisation events}}
\doxysubsubsection{\texorpdfstring{svm\_event\_address\_get\_struct()}{svm\_event\_address\_get\_struct()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__apimacros_ga0d0dae93534c2ba22499a92705a4e391}{SVM\+\_\+\+FUNCTION}} \mbox{\hyperlink{group__api__types_ga69ff4bdc03f61848ca94b7c2c4d30347}{SVM\+\_\+\+Structure}} svm\+\_\+event\+\_\+address\+\_\+get\+\_\+struct (\begin{DoxyParamCaption}\item[{const void $\ast$}]{svm,  }\item[{const \mbox{\hyperlink{group__api__types_ga0961ca26fac1df3a61c4f488e8de76a2}{SVM\+\_\+\+Event\+\_\+\+Queue\+\_\+\+Address}}}]{address }\end{DoxyParamCaption})}



This function retrieves the owner of an event queue address. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em svm} & The SVM pointer passed as first argument of the callback function. \\
\hline
\mbox{\texttt{ in}}  & {\em address} & The event queue address.\\
\hline
\end{DoxyParams}
The owner of the address is returned. If the address was not associated to an owner, a FAILURE interruption is raised.

\begin{DoxyReturn}{Returns}
The owner of the event queue address.
\end{DoxyReturn}

\begin{DoxyExceptions}{Exceptions}
{\em FAILURE} & interruption when a parameter is incorrect. (Please refer to the main description page of this API.) \\
\hline
{\em FAILURE} & interruption when the address has no owner.\\
\hline
\end{DoxyExceptions}
\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__structures_ga1228c29df2e2acf941b6bbea836e77ae}{svm\+\_\+structure\+\_\+get\+\_\+internal}} 

\mbox{\hyperlink{group__eventssynchronization_gab18fd1b03ca3a819c3a1aa6fbe706218}{svm\+\_\+event\+\_\+address\+\_\+has\+\_\+struct}} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{group__eventssynchronization_gab18fd1b03ca3a819c3a1aa6fbe706218}\label{group__eventssynchronization_gab18fd1b03ca3a819c3a1aa6fbe706218}} 
\index{SVM synchronisation events@{SVM synchronisation events}!svm\_event\_address\_has\_struct@{svm\_event\_address\_has\_struct}}
\index{svm\_event\_address\_has\_struct@{svm\_event\_address\_has\_struct}!SVM synchronisation events@{SVM synchronisation events}}
\doxysubsubsection{\texorpdfstring{svm\_event\_address\_has\_struct()}{svm\_event\_address\_has\_struct()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__apimacros_ga0d0dae93534c2ba22499a92705a4e391}{SVM\+\_\+\+FUNCTION}} \mbox{\hyperlink{group__api__types_ga872facc2eea0e7296e689134f568b804}{SVM\+\_\+\+Boolean}} svm\+\_\+event\+\_\+address\+\_\+has\+\_\+struct (\begin{DoxyParamCaption}\item[{const void $\ast$}]{svm,  }\item[{const \mbox{\hyperlink{group__api__types_ga0961ca26fac1df3a61c4f488e8de76a2}{SVM\+\_\+\+Event\+\_\+\+Queue\+\_\+\+Address}}}]{address }\end{DoxyParamCaption})}



This function checks whether an event queue address has an owner. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em svm} & The SVM pointer passed as first argument of the callback function. \\
\hline
\mbox{\texttt{ in}}  & {\em address} & The event queue address.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
TRUE when the address has an owner, FALSE otherwise.
\end{DoxyReturn}

\begin{DoxyExceptions}{Exceptions}
{\em FAILURE} & interruption when a parameter is incorrect. (Please refer to the main description page of this API.)\\
\hline
\end{DoxyExceptions}
\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__structures_ga1228c29df2e2acf941b6bbea836e77ae}{svm\+\_\+structure\+\_\+get\+\_\+internal}} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{group__eventssynchronization_ga04d55b3d3ff34a3f8612c2c64245ab26}\label{group__eventssynchronization_ga04d55b3d3ff34a3f8612c2c64245ab26}} 
\index{SVM synchronisation events@{SVM synchronisation events}!svm\_event\_address\_new@{svm\_event\_address\_new}}
\index{svm\_event\_address\_new@{svm\_event\_address\_new}!SVM synchronisation events@{SVM synchronisation events}}
\doxysubsubsection{\texorpdfstring{svm\_event\_address\_new()}{svm\_event\_address\_new()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__apimacros_ga0d0dae93534c2ba22499a92705a4e391}{SVM\+\_\+\+FUNCTION}} \mbox{\hyperlink{group__api__types_ga0961ca26fac1df3a61c4f488e8de76a2}{SVM\+\_\+\+Event\+\_\+\+Queue\+\_\+\+Address}} svm\+\_\+event\+\_\+address\+\_\+new (\begin{DoxyParamCaption}\item[{const void $\ast$}]{svm }\end{DoxyParamCaption})}



This function creates an event queue address. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em svm} & The SVM pointer passed as first argument of the callback function.\\
\hline
\end{DoxyParams}
The address is created without association to an owner.

\begin{DoxyReturn}{Returns}
The event queue address.
\end{DoxyReturn}

\begin{DoxyExceptions}{Exceptions}
{\em FAILURE} & interruption when a parameter is incorrect. (Please refer to the main description page of this API.) \\
\hline
\end{DoxyExceptions}
\mbox{\Hypertarget{group__eventssynchronization_ga5ef80032206d8363839224afb03f143d}\label{group__eventssynchronization_ga5ef80032206d8363839224afb03f143d}} 
\index{SVM synchronisation events@{SVM synchronisation events}!svm\_event\_address\_new\_struct@{svm\_event\_address\_new\_struct}}
\index{svm\_event\_address\_new\_struct@{svm\_event\_address\_new\_struct}!SVM synchronisation events@{SVM synchronisation events}}
\doxysubsubsection{\texorpdfstring{svm\_event\_address\_new\_struct()}{svm\_event\_address\_new\_struct()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__apimacros_ga0d0dae93534c2ba22499a92705a4e391}{SVM\+\_\+\+FUNCTION}} \mbox{\hyperlink{group__api__types_ga0961ca26fac1df3a61c4f488e8de76a2}{SVM\+\_\+\+Event\+\_\+\+Queue\+\_\+\+Address}} svm\+\_\+event\+\_\+address\+\_\+new\+\_\+struct (\begin{DoxyParamCaption}\item[{const void $\ast$}]{svm,  }\item[{const \mbox{\hyperlink{group__api__types_ga69ff4bdc03f61848ca94b7c2c4d30347}{SVM\+\_\+\+Structure}}}]{structure }\end{DoxyParamCaption})}



This function creates an event queue address. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em svm} & The SVM pointer passed as first argument of the callback function. \\
\hline
\mbox{\texttt{ in}}  & {\em structure} & The structure owner of the address.\\
\hline
\end{DoxyParams}
The address is created with an association to an owner. Creating an address with a reference to its owner allows an event puller to reach the pusher of the event.

\begin{DoxyNote}{Note}
The owner structure variable does not need to be set global.
\end{DoxyNote}
\begin{DoxyReturn}{Returns}
The event queue address.
\end{DoxyReturn}

\begin{DoxyExceptions}{Exceptions}
{\em FAILURE} & interruption when a parameter is incorrect. (Please refer to the main description page of this API.)\\
\hline
\end{DoxyExceptions}
\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__structures_ga78cb286c48c0d6d36625a6d16c13145e}{svm\+\_\+structure\+\_\+new}} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{group__eventssynchronization_gaf4a5053377592f8044efdc3d4d4d7bf4}\label{group__eventssynchronization_gaf4a5053377592f8044efdc3d4d4d7bf4}} 
\index{SVM synchronisation events@{SVM synchronisation events}!svm\_event\_queue\_broadcast@{svm\_event\_queue\_broadcast}}
\index{svm\_event\_queue\_broadcast@{svm\_event\_queue\_broadcast}!SVM synchronisation events@{SVM synchronisation events}}
\doxysubsubsection{\texorpdfstring{svm\_event\_queue\_broadcast()}{svm\_event\_queue\_broadcast()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__apimacros_ga0d0dae93534c2ba22499a92705a4e391}{SVM\+\_\+\+FUNCTION}} void svm\+\_\+event\+\_\+queue\+\_\+broadcast (\begin{DoxyParamCaption}\item[{const void $\ast$}]{svm,  }\item[{\mbox{\hyperlink{group__api__types_ga1b628e5d67deb5adfcacb232c78388cb}{SVM\+\_\+\+Event\+\_\+\+Queue}}}]{event\+\_\+queue,  }\item[{const \mbox{\hyperlink{group__api__types_ga0961ca26fac1df3a61c4f488e8de76a2}{SVM\+\_\+\+Event\+\_\+\+Queue\+\_\+\+Address}}}]{origin,  }\item[{const \mbox{\hyperlink{group__api__types_ga69ff4bdc03f61848ca94b7c2c4d30347}{SVM\+\_\+\+Structure}}}]{event }\end{DoxyParamCaption})}



This function pushes an event on a queue from an address to all addresses. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em svm} & The SVM pointer passed as first argument of the callback function. \\
\hline
\mbox{\texttt{ in,out}}  & {\em event\+\_\+queue} & The event queue on which the event will be pushed. \\
\hline
\mbox{\texttt{ in}}  & {\em origin} & The address from which the event is sent. \\
\hline
\mbox{\texttt{ in}}  & {\em event} & The structure containing the event.\\
\hline
\end{DoxyParams}
The event is pushed to the event queue.

\begin{DoxyNote}{Note}
The event structure variable does not need to be set global.
\end{DoxyNote}
\begin{DoxyWarning}{Warning}
The structure will be shared between all addresses.
\end{DoxyWarning}

\begin{DoxyExceptions}{Exceptions}
{\em FAILURE} & interruption when a parameter is incorrect. (Please refer to the main description page of this API.) \\
\hline
{\em FAILURE} & interruption when the origin address has not joined the event queue.\\
\hline
\end{DoxyExceptions}
\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__structures_ga78cb286c48c0d6d36625a6d16c13145e}{svm\+\_\+structure\+\_\+new}} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{group__eventssynchronization_ga7a25810a92a9174812a83dc8e69e3957}\label{group__eventssynchronization_ga7a25810a92a9174812a83dc8e69e3957}} 
\index{SVM synchronisation events@{SVM synchronisation events}!svm\_event\_queue\_check@{svm\_event\_queue\_check}}
\index{svm\_event\_queue\_check@{svm\_event\_queue\_check}!SVM synchronisation events@{SVM synchronisation events}}
\doxysubsubsection{\texorpdfstring{svm\_event\_queue\_check()}{svm\_event\_queue\_check()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__apimacros_ga0d0dae93534c2ba22499a92705a4e391}{SVM\+\_\+\+FUNCTION}} \mbox{\hyperlink{group__api__types_ga872facc2eea0e7296e689134f568b804}{SVM\+\_\+\+Boolean}} svm\+\_\+event\+\_\+queue\+\_\+check (\begin{DoxyParamCaption}\item[{const void $\ast$}]{svm,  }\item[{\mbox{\hyperlink{group__api__types_ga1b628e5d67deb5adfcacb232c78388cb}{SVM\+\_\+\+Event\+\_\+\+Queue}}}]{event\+\_\+queue,  }\item[{const \mbox{\hyperlink{group__api__types_ga0961ca26fac1df3a61c4f488e8de76a2}{SVM\+\_\+\+Event\+\_\+\+Queue\+\_\+\+Address}}}]{destination,  }\item[{\mbox{\hyperlink{group__api__types_ga0961ca26fac1df3a61c4f488e8de76a2}{SVM\+\_\+\+Event\+\_\+\+Queue\+\_\+\+Address}} $\ast$}]{origin,  }\item[{\mbox{\hyperlink{group__api__types_ga69ff4bdc03f61848ca94b7c2c4d30347}{SVM\+\_\+\+Structure}} $\ast$}]{event,  }\item[{const \mbox{\hyperlink{group__api__types_gaffdbc5928860a9f9c0f1db65bfb63b30}{SVM\+\_\+\+Value\+\_\+\+Integer}}}]{timeout,  }\item[{const \mbox{\hyperlink{group__api__types_ga872facc2eea0e7296e689134f568b804}{SVM\+\_\+\+Boolean}}}]{soft }\end{DoxyParamCaption})}



This function pulls an event on a queue from an address with a timeout in an integer value. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em svm} & The SVM pointer passed as first argument of the callback function. \\
\hline
\mbox{\texttt{ in,out}}  & {\em event\+\_\+queue} & The event queue on which the event will be pushed. \\
\hline
\mbox{\texttt{ in}}  & {\em destination} & The address to which the event will be sent. \\
\hline
\mbox{\texttt{ out}}  & {\em origin} & The address from which the event is sent. \\
\hline
\mbox{\texttt{ out}}  & {\em event} & The structure containing the event. \\
\hline
\mbox{\texttt{ in}}  & {\em timeout} & A timeout in milliseconds. \\
\hline
\mbox{\texttt{ in}}  & {\em soft} & The process is put in pause while waiting for an event.\\
\hline
\end{DoxyParams}
The API function waits until an event is ready to be pulled or the timeout is reached. A timeout of 0 exists immediately if no event is ready to be pulled. When this API function is called within a process accepting interruption notifications, any interruption will stop the event pulling without a delivered message.

\begin{DoxyWarning}{Warning}
Accessing to origin and event when the API function has returned FALSE will result in an undefined behavior.
\end{DoxyWarning}
\begin{DoxyReturn}{Returns}
TRUE when an event has been delivered to the destination address, FALSE otherwise.
\end{DoxyReturn}
\begin{DoxyNote}{Note}
The soft parameter shall be set to FALSE when the lock is used at least once inside a scheduler, and should be set to TRUE otherwise.
\end{DoxyNote}

\begin{DoxyExceptions}{Exceptions}
{\em FAILURE} & interruption when a parameter is incorrect. (Please refer to the main description page of this API.) \\
\hline
{\em FAILURE} & interruption when the destination address has not joined the event queue. \\
\hline
{\em FAILURE} & interruption when the timeout is a negative integer. \\
\hline
{\em FAILURE} & interruption when this API function is called outside a kernel.\\
\hline
\end{DoxyExceptions}
\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__structures_ga1228c29df2e2acf941b6bbea836e77ae}{svm\+\_\+structure\+\_\+get\+\_\+internal}} 

\mbox{\hyperlink{group__notifyprocesses_gafb5d1ede49e7f496cd9cc3b2ee867506}{svm\+\_\+process\+\_\+interruptionnotification\+\_\+enable}} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{group__eventssynchronization_gad4b5648c5868b959107d3017b83f5b16}\label{group__eventssynchronization_gad4b5648c5868b959107d3017b83f5b16}} 
\index{SVM synchronisation events@{SVM synchronisation events}!svm\_event\_queue\_check\_\_raw@{svm\_event\_queue\_check\_\_raw}}
\index{svm\_event\_queue\_check\_\_raw@{svm\_event\_queue\_check\_\_raw}!SVM synchronisation events@{SVM synchronisation events}}
\doxysubsubsection{\texorpdfstring{svm\_event\_queue\_check\_\_raw()}{svm\_event\_queue\_check\_\_raw()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__apimacros_ga0d0dae93534c2ba22499a92705a4e391}{SVM\+\_\+\+FUNCTION}} \mbox{\hyperlink{group__api__types_ga872facc2eea0e7296e689134f568b804}{SVM\+\_\+\+Boolean}} svm\+\_\+event\+\_\+queue\+\_\+check\+\_\+\+\_\+raw (\begin{DoxyParamCaption}\item[{const void $\ast$}]{svm,  }\item[{\mbox{\hyperlink{group__api__types_ga1b628e5d67deb5adfcacb232c78388cb}{SVM\+\_\+\+Event\+\_\+\+Queue}}}]{event\+\_\+queue,  }\item[{const \mbox{\hyperlink{group__api__types_ga0961ca26fac1df3a61c4f488e8de76a2}{SVM\+\_\+\+Event\+\_\+\+Queue\+\_\+\+Address}}}]{destination,  }\item[{\mbox{\hyperlink{group__api__types_ga0961ca26fac1df3a61c4f488e8de76a2}{SVM\+\_\+\+Event\+\_\+\+Queue\+\_\+\+Address}} $\ast$}]{origin,  }\item[{\mbox{\hyperlink{group__api__types_ga69ff4bdc03f61848ca94b7c2c4d30347}{SVM\+\_\+\+Structure}} $\ast$}]{event,  }\item[{const unsigned long int}]{timeout,  }\item[{const \mbox{\hyperlink{group__api__types_ga872facc2eea0e7296e689134f568b804}{SVM\+\_\+\+Boolean}}}]{soft }\end{DoxyParamCaption})}



This function pulls an event on a queue from an address with a timeout in a raw integer. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em svm} & The SVM pointer passed as first argument of the callback function. \\
\hline
\mbox{\texttt{ in,out}}  & {\em event\+\_\+queue} & The event queue on which the event will be pushed. \\
\hline
\mbox{\texttt{ in}}  & {\em destination} & The address to which the event will be sent. \\
\hline
\mbox{\texttt{ out}}  & {\em origin} & The address from which the event is sent. \\
\hline
\mbox{\texttt{ out}}  & {\em event} & The structure containing the event. \\
\hline
\mbox{\texttt{ in}}  & {\em timeout} & A timeout in milliseconds. \\
\hline
\mbox{\texttt{ in}}  & {\em soft} & The process is put in pause while waiting for an event.\\
\hline
\end{DoxyParams}
The API function waits until an event is ready to be pulled or the timeout is reached. A timeout of 0 exists immediately if no event is ready to be pulled.

\begin{DoxyWarning}{Warning}
Accessing to origin and event when the API function has returned FALSE will result in an undefined behavior.
\end{DoxyWarning}
\begin{DoxyReturn}{Returns}
TRUE when an event has been delivered to the destination address, FALSE otherwise.
\end{DoxyReturn}
\begin{DoxyNote}{Note}
The soft parameter shall be set to FALSE when the lock is used at least once inside a scheduler, and should be set to TRUE otherwise.
\end{DoxyNote}

\begin{DoxyExceptions}{Exceptions}
{\em FAILURE} & interruption when a parameter is incorrect. (Please refer to the main description page of this API.) \\
\hline
{\em FAILURE} & interruption when the destination address has not joined the event queue. \\
\hline
{\em FAILURE} & interruption when the timeout is a negative integer. \\
\hline
{\em FAILURE} & interruption when this API function is called outside a kernel.\\
\hline
\end{DoxyExceptions}
\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__structures_ga1228c29df2e2acf941b6bbea836e77ae}{svm\+\_\+structure\+\_\+get\+\_\+internal}} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{group__eventssynchronization_ga9a7c0d94d395633b09efa3f0f935de53}\label{group__eventssynchronization_ga9a7c0d94d395633b09efa3f0f935de53}} 
\index{SVM synchronisation events@{SVM synchronisation events}!svm\_event\_queue\_join@{svm\_event\_queue\_join}}
\index{svm\_event\_queue\_join@{svm\_event\_queue\_join}!SVM synchronisation events@{SVM synchronisation events}}
\doxysubsubsection{\texorpdfstring{svm\_event\_queue\_join()}{svm\_event\_queue\_join()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__apimacros_ga0d0dae93534c2ba22499a92705a4e391}{SVM\+\_\+\+FUNCTION}} void svm\+\_\+event\+\_\+queue\+\_\+join (\begin{DoxyParamCaption}\item[{const void $\ast$}]{svm,  }\item[{\mbox{\hyperlink{group__api__types_ga1b628e5d67deb5adfcacb232c78388cb}{SVM\+\_\+\+Event\+\_\+\+Queue}}}]{event\+\_\+queue,  }\item[{const \mbox{\hyperlink{group__api__types_ga0961ca26fac1df3a61c4f488e8de76a2}{SVM\+\_\+\+Event\+\_\+\+Queue\+\_\+\+Address}}}]{address }\end{DoxyParamCaption})}



This function lets an address to join the event queue. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em svm} & The SVM pointer passed as first argument of the callback function. \\
\hline
\mbox{\texttt{ in,out}}  & {\em event\+\_\+queue} & The event queue on which the address will be added. \\
\hline
\mbox{\texttt{ in}}  & {\em address} & The address.\\
\hline
\end{DoxyParams}
This step is done by the owner of the address. It is required to push events to this address and to pull events from this address.


\begin{DoxyExceptions}{Exceptions}
{\em FAILURE} & interruption when a parameter is incorrect. (Please refer to the main description page of this API.) \\
\hline
\end{DoxyExceptions}
\mbox{\Hypertarget{group__eventssynchronization_ga79063b7e1c999f31c1b9c379ac0e6be1}\label{group__eventssynchronization_ga79063b7e1c999f31c1b9c379ac0e6be1}} 
\index{SVM synchronisation events@{SVM synchronisation events}!svm\_event\_queue\_leave@{svm\_event\_queue\_leave}}
\index{svm\_event\_queue\_leave@{svm\_event\_queue\_leave}!SVM synchronisation events@{SVM synchronisation events}}
\doxysubsubsection{\texorpdfstring{svm\_event\_queue\_leave()}{svm\_event\_queue\_leave()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__apimacros_ga0d0dae93534c2ba22499a92705a4e391}{SVM\+\_\+\+FUNCTION}} void svm\+\_\+event\+\_\+queue\+\_\+leave (\begin{DoxyParamCaption}\item[{const void $\ast$}]{svm,  }\item[{\mbox{\hyperlink{group__api__types_ga1b628e5d67deb5adfcacb232c78388cb}{SVM\+\_\+\+Event\+\_\+\+Queue}}}]{event\+\_\+queue,  }\item[{const \mbox{\hyperlink{group__api__types_ga0961ca26fac1df3a61c4f488e8de76a2}{SVM\+\_\+\+Event\+\_\+\+Queue\+\_\+\+Address}}}]{address }\end{DoxyParamCaption})}



This function lets an address to leave the event queue. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em svm} & The SVM pointer passed as first argument of the callback function. \\
\hline
\mbox{\texttt{ in,out}}  & {\em event\+\_\+queue} & The event queue on which the address will be removed. \\
\hline
\mbox{\texttt{ in}}  & {\em address} & The address.\\
\hline
\end{DoxyParams}
This step is done by the owner of the address to close its participation to the event queue.

\begin{DoxyNote}{Note}
All pending events are discarded.
\end{DoxyNote}

\begin{DoxyExceptions}{Exceptions}
{\em FAILURE} & interruption when a parameter is incorrect. (Please refer to the main description page of this API.) \\
\hline
\end{DoxyExceptions}
\mbox{\Hypertarget{group__eventssynchronization_ga57f6d9d513e2746dfd83c9e014ee559a}\label{group__eventssynchronization_ga57f6d9d513e2746dfd83c9e014ee559a}} 
\index{SVM synchronisation events@{SVM synchronisation events}!svm\_event\_queue\_new@{svm\_event\_queue\_new}}
\index{svm\_event\_queue\_new@{svm\_event\_queue\_new}!SVM synchronisation events@{SVM synchronisation events}}
\doxysubsubsection{\texorpdfstring{svm\_event\_queue\_new()}{svm\_event\_queue\_new()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__apimacros_ga0d0dae93534c2ba22499a92705a4e391}{SVM\+\_\+\+FUNCTION}} \mbox{\hyperlink{group__api__types_ga1b628e5d67deb5adfcacb232c78388cb}{SVM\+\_\+\+Event\+\_\+\+Queue}} svm\+\_\+event\+\_\+queue\+\_\+new (\begin{DoxyParamCaption}\item[{const void $\ast$}]{svm }\end{DoxyParamCaption})}



This function creates an event queue. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em svm} & The SVM pointer passed as first argument of the callback function.\\
\hline
\end{DoxyParams}
This event queue allows synchronisation of a lot of concurrent processes by pushing events to this queue and pulling events from this queue.

Each process accessing the queue will be identified by an address linked to a structure.


\begin{DoxyExceptions}{Exceptions}
{\em FAILURE} & interruption when a parameter is incorrect. (Please refer to the main description page of this API.) \\
\hline
\end{DoxyExceptions}
\mbox{\Hypertarget{group__eventssynchronization_gafe810d35b9f9aa8b8fa2fd76a37a527c}\label{group__eventssynchronization_gafe810d35b9f9aa8b8fa2fd76a37a527c}} 
\index{SVM synchronisation events@{SVM synchronisation events}!svm\_event\_queue\_pull@{svm\_event\_queue\_pull}}
\index{svm\_event\_queue\_pull@{svm\_event\_queue\_pull}!SVM synchronisation events@{SVM synchronisation events}}
\doxysubsubsection{\texorpdfstring{svm\_event\_queue\_pull()}{svm\_event\_queue\_pull()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__apimacros_ga0d0dae93534c2ba22499a92705a4e391}{SVM\+\_\+\+FUNCTION}} \mbox{\hyperlink{group__api__types_ga872facc2eea0e7296e689134f568b804}{SVM\+\_\+\+Boolean}} svm\+\_\+event\+\_\+queue\+\_\+pull (\begin{DoxyParamCaption}\item[{const void $\ast$}]{svm,  }\item[{\mbox{\hyperlink{group__api__types_ga1b628e5d67deb5adfcacb232c78388cb}{SVM\+\_\+\+Event\+\_\+\+Queue}}}]{event\+\_\+queue,  }\item[{const \mbox{\hyperlink{group__api__types_ga0961ca26fac1df3a61c4f488e8de76a2}{SVM\+\_\+\+Event\+\_\+\+Queue\+\_\+\+Address}}}]{destination,  }\item[{\mbox{\hyperlink{group__api__types_ga0961ca26fac1df3a61c4f488e8de76a2}{SVM\+\_\+\+Event\+\_\+\+Queue\+\_\+\+Address}} $\ast$}]{origin,  }\item[{\mbox{\hyperlink{group__api__types_ga69ff4bdc03f61848ca94b7c2c4d30347}{SVM\+\_\+\+Structure}} $\ast$}]{event,  }\item[{const \mbox{\hyperlink{group__api__types_ga872facc2eea0e7296e689134f568b804}{SVM\+\_\+\+Boolean}}}]{soft }\end{DoxyParamCaption})}



This function pulls an event on a queue from an address. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em svm} & The SVM pointer passed as first argument of the callback function. \\
\hline
\mbox{\texttt{ in,out}}  & {\em event\+\_\+queue} & The event queue on which the event will be pushed. \\
\hline
\mbox{\texttt{ in}}  & {\em destination} & The address to which the event will be sent. \\
\hline
\mbox{\texttt{ out}}  & {\em origin} & The address from which the event is sent. \\
\hline
\mbox{\texttt{ out}}  & {\em event} & The structure containing the event. \\
\hline
\mbox{\texttt{ in}}  & {\em soft} & The process is put in pause while waiting for an event.\\
\hline
\end{DoxyParams}
The API function waits until an event is ready to be pulled. When this API function is called within a process accepting interruption notifications, any interruption will stop the event pulling without a delivered message.

\begin{DoxyWarning}{Warning}
Accessing to origin and event when the API function has returned FALSE will result in an undefined behavior.
\end{DoxyWarning}
\begin{DoxyReturn}{Returns}
TRUE when an event has been delivered to the destination address, FALSE otherwise.
\end{DoxyReturn}
\begin{DoxyNote}{Note}
The soft parameter shall be set to FALSE when the lock is used at least once inside a scheduler, and should be set to TRUE otherwise.
\end{DoxyNote}

\begin{DoxyExceptions}{Exceptions}
{\em FAILURE} & interruption when a parameter is incorrect. (Please refer to the main description page of this API.) \\
\hline
{\em FAILURE} & interruption when the destination address has not joined the event queue. \\
\hline
{\em FAILURE} & interruption when this API function is called outside a kernel.\\
\hline
\end{DoxyExceptions}
\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__structures_ga1228c29df2e2acf941b6bbea836e77ae}{svm\+\_\+structure\+\_\+get\+\_\+internal}} 

\mbox{\hyperlink{group__notifyprocesses_gafb5d1ede49e7f496cd9cc3b2ee867506}{svm\+\_\+process\+\_\+interruptionnotification\+\_\+enable}} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{group__eventssynchronization_gaada079154097b7872a9b673969c919f9}\label{group__eventssynchronization_gaada079154097b7872a9b673969c919f9}} 
\index{SVM synchronisation events@{SVM synchronisation events}!svm\_event\_queue\_push@{svm\_event\_queue\_push}}
\index{svm\_event\_queue\_push@{svm\_event\_queue\_push}!SVM synchronisation events@{SVM synchronisation events}}
\doxysubsubsection{\texorpdfstring{svm\_event\_queue\_push()}{svm\_event\_queue\_push()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__apimacros_ga0d0dae93534c2ba22499a92705a4e391}{SVM\+\_\+\+FUNCTION}} void svm\+\_\+event\+\_\+queue\+\_\+push (\begin{DoxyParamCaption}\item[{const void $\ast$}]{svm,  }\item[{\mbox{\hyperlink{group__api__types_ga1b628e5d67deb5adfcacb232c78388cb}{SVM\+\_\+\+Event\+\_\+\+Queue}}}]{event\+\_\+queue,  }\item[{const \mbox{\hyperlink{group__api__types_ga0961ca26fac1df3a61c4f488e8de76a2}{SVM\+\_\+\+Event\+\_\+\+Queue\+\_\+\+Address}}}]{destination,  }\item[{const \mbox{\hyperlink{group__api__types_ga0961ca26fac1df3a61c4f488e8de76a2}{SVM\+\_\+\+Event\+\_\+\+Queue\+\_\+\+Address}}}]{origin,  }\item[{const \mbox{\hyperlink{group__api__types_ga69ff4bdc03f61848ca94b7c2c4d30347}{SVM\+\_\+\+Structure}}}]{event }\end{DoxyParamCaption})}



This function pushes an event on a queue from an address to another address. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em svm} & The SVM pointer passed as first argument of the callback function. \\
\hline
\mbox{\texttt{ in,out}}  & {\em event\+\_\+queue} & The event queue on which the event will be pushed. \\
\hline
\mbox{\texttt{ in}}  & {\em destination} & The address to which the event will be sent. \\
\hline
\mbox{\texttt{ in}}  & {\em origin} & The address from which the event is sent. \\
\hline
\mbox{\texttt{ in}}  & {\em event} & The structure containing the event.\\
\hline
\end{DoxyParams}
The event is pushed to the event queue.

\begin{DoxyNote}{Note}
The event structure variable does not need to be set global.
\end{DoxyNote}

\begin{DoxyExceptions}{Exceptions}
{\em FAILURE} & interruption when a parameter is incorrect. (Please refer to the main description page of this API.) \\
\hline
{\em FAILURE} & interruption when the origin or the destination address has not joined the event queue.\\
\hline
\end{DoxyExceptions}
\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__structures_ga78cb286c48c0d6d36625a6d16c13145e}{svm\+\_\+structure\+\_\+new}} 
\end{DoxySeeAlso}
