\hypertarget{group__synchronisationmemory}{}\doxysection{SVM memory synchronisation}
\label{group__synchronisationmemory}\index{SVM memory synchronisation@{SVM memory synchronisation}}


This module contains API functions to handle SVM memory synchronisation.  


\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{group__apimacros_ga0d0dae93534c2ba22499a92705a4e391}{SVM\+\_\+\+FUNCTION}} void \mbox{\hyperlink{group__synchronisationmemory_gadfa509bc428e9055774d79d33a3527f7}{svm\+\_\+memory\+\_\+synchronisation\+\_\+enable}} (const void $\ast$svm, const \mbox{\hyperlink{group__api__types_ga19af2c6060f3ae282ea4e73121fac69c}{SVM\+\_\+\+Kernel}} kernel, const \mbox{\hyperlink{group__api__types_ga613f7430f76ab41fd47f6a386c370828}{SVM\+\_\+\+Value\+\_\+\+Pointer}} pointer)
\begin{DoxyCompactList}\small\item\em This function enables the synchronisation on a memory zone. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__apimacros_ga0d0dae93534c2ba22499a92705a4e391}{SVM\+\_\+\+FUNCTION}} void \mbox{\hyperlink{group__synchronisationmemory_ga86d1557ff72b52a7af8ca1c4ab03d16f}{svm\+\_\+memory\+\_\+synchronisation\+\_\+disable}} (const void $\ast$svm, const \mbox{\hyperlink{group__api__types_ga19af2c6060f3ae282ea4e73121fac69c}{SVM\+\_\+\+Kernel}} kernel, const \mbox{\hyperlink{group__api__types_ga613f7430f76ab41fd47f6a386c370828}{SVM\+\_\+\+Value\+\_\+\+Pointer}} pointer)
\begin{DoxyCompactList}\small\item\em This function disables the synchronisation on a memory zone. \end{DoxyCompactList}\end{DoxyCompactItemize}


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



\doxysubsection{Function Documentation}
\mbox{\Hypertarget{group__synchronisationmemory_ga86d1557ff72b52a7af8ca1c4ab03d16f}\label{group__synchronisationmemory_ga86d1557ff72b52a7af8ca1c4ab03d16f}} 
\index{SVM memory synchronisation@{SVM memory synchronisation}!svm\_memory\_synchronisation\_disable@{svm\_memory\_synchronisation\_disable}}
\index{svm\_memory\_synchronisation\_disable@{svm\_memory\_synchronisation\_disable}!SVM memory synchronisation@{SVM memory synchronisation}}
\doxysubsubsection{\texorpdfstring{svm\_memory\_synchronisation\_disable()}{svm\_memory\_synchronisation\_disable()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__apimacros_ga0d0dae93534c2ba22499a92705a4e391}{SVM\+\_\+\+FUNCTION}} void svm\+\_\+memory\+\_\+synchronisation\+\_\+disable (\begin{DoxyParamCaption}\item[{const void $\ast$}]{svm,  }\item[{const \mbox{\hyperlink{group__api__types_ga19af2c6060f3ae282ea4e73121fac69c}{SVM\+\_\+\+Kernel}}}]{kernel,  }\item[{const \mbox{\hyperlink{group__api__types_ga613f7430f76ab41fd47f6a386c370828}{SVM\+\_\+\+Value\+\_\+\+Pointer}}}]{pointer }\end{DoxyParamCaption})}



This function disables the synchronisation on a memory zone. 


\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 kernel} & The kernel in which the targeted memory is. \\
\hline
\mbox{\texttt{ in}}  & {\em pointer} & The memory zone to release from protection by synchronisation.\\
\hline
\end{DoxyParams}

\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 kernel is not owned by our process or is not in a process locked by ours.\\
\hline
\end{DoxyExceptions}
\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__ownershipprocesses_ga535796c3203a2baa8095c951b9b2c205}{svm\+\_\+process\+\_\+ownership\+\_\+lock}} 

\mbox{\hyperlink{group__getkernels_gad6a03dbf0dd283278cdc4bbc2266efa5}{svm\+\_\+kernel\+\_\+get\+\_\+current}} 

\mbox{\hyperlink{group__operationsmemory_gaed3bdfa2e5495e2265a29fd74e780f9a}{svm\+\_\+memory\+\_\+share}} 

\mbox{\hyperlink{group__lockssynchronisation_ga549ff0ec04049e7ed8363a606506717f}{svm\+\_\+lock\+\_\+new}} 

\mbox{\hyperlink{group__lockssynchronisation_ga2da66e1c3e1d5fe1401d3ee000cdd918}{svm\+\_\+lock\+\_\+readguard\+\_\+new}} 

\mbox{\hyperlink{group__lockssynchronisation_ga265ccd38f6ff80807c596b91d63f82bb}{svm\+\_\+lock\+\_\+writeguard\+\_\+new}} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{group__synchronisationmemory_gadfa509bc428e9055774d79d33a3527f7}\label{group__synchronisationmemory_gadfa509bc428e9055774d79d33a3527f7}} 
\index{SVM memory synchronisation@{SVM memory synchronisation}!svm\_memory\_synchronisation\_enable@{svm\_memory\_synchronisation\_enable}}
\index{svm\_memory\_synchronisation\_enable@{svm\_memory\_synchronisation\_enable}!SVM memory synchronisation@{SVM memory synchronisation}}
\doxysubsubsection{\texorpdfstring{svm\_memory\_synchronisation\_enable()}{svm\_memory\_synchronisation\_enable()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__apimacros_ga0d0dae93534c2ba22499a92705a4e391}{SVM\+\_\+\+FUNCTION}} void svm\+\_\+memory\+\_\+synchronisation\+\_\+enable (\begin{DoxyParamCaption}\item[{const void $\ast$}]{svm,  }\item[{const \mbox{\hyperlink{group__api__types_ga19af2c6060f3ae282ea4e73121fac69c}{SVM\+\_\+\+Kernel}}}]{kernel,  }\item[{const \mbox{\hyperlink{group__api__types_ga613f7430f76ab41fd47f6a386c370828}{SVM\+\_\+\+Value\+\_\+\+Pointer}}}]{pointer }\end{DoxyParamCaption})}



This function enables the synchronisation on a memory zone. 


\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 kernel} & The kernel in which the targeted memory is. \\
\hline
\mbox{\texttt{ in}}  & {\em pointer} & The memory zone to protect by synchronisation.\\
\hline
\end{DoxyParams}
\begin{DoxyNote}{Note}
The synchronisation applies to access to the memory itself, and not access to the value itself. If the value needs access synchronisation, it shall be done manually.
\end{DoxyNote}
The synchronisation mechanism applied to each address of the memory zone is equivalent to SVM\+\_\+\+Lock.
\begin{DoxyItemize}
\item When a read to the memory is done from a synchronised address, a read lock acquisition is done,
\item When a write or deletion of the memory is done on a synchronised address, a write lock acquisition is done.
\end{DoxyItemize}


\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 kernel is not owned by our process or is not in a process locked by ours.\\
\hline
\end{DoxyExceptions}
\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{group__ownershipprocesses_ga535796c3203a2baa8095c951b9b2c205}{svm\+\_\+process\+\_\+ownership\+\_\+lock}} 

\mbox{\hyperlink{group__getkernels_gad6a03dbf0dd283278cdc4bbc2266efa5}{svm\+\_\+kernel\+\_\+get\+\_\+current}} 

\mbox{\hyperlink{group__lockssynchronisation_ga549ff0ec04049e7ed8363a606506717f}{svm\+\_\+lock\+\_\+new}} 

\mbox{\hyperlink{group__lockssynchronisation_ga2da66e1c3e1d5fe1401d3ee000cdd918}{svm\+\_\+lock\+\_\+readguard\+\_\+new}} 

\mbox{\hyperlink{group__lockssynchronisation_ga265ccd38f6ff80807c596b91d63f82bb}{svm\+\_\+lock\+\_\+writeguard\+\_\+new}} 
\end{DoxySeeAlso}
