\doxysubsection{SVM memory operations}
\hypertarget{group__operationsmemory}{}\label{group__operationsmemory}\index{SVM memory operations@{SVM memory operations}}


This module contains API functions to handle SVM memory operations.  


\doxysubsubsubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{group__apimacros_ga0d0dae93534c2ba22499a92705a4e391}{SVM\+\_\+\+FUNCTION}} void \mbox{\hyperlink{group__operationsmemory_ga105d835318f721d4fff3cf06b77097db}{svm\+\_\+memory\+\_\+copy}} (const void \texorpdfstring{$\ast$}{*}svm, const \mbox{\hyperlink{group__api__types_ga19af2c6060f3ae282ea4e73121fac69c}{SVM\+\_\+\+Kernel}} kernel, const \mbox{\hyperlink{group__api__types_ga613f7430f76ab41fd47f6a386c370828}{SVM\+\_\+\+Value\+\_\+\+Pointer}} origin, const \mbox{\hyperlink{group__api__types_ga19af2c6060f3ae282ea4e73121fac69c}{SVM\+\_\+\+Kernel}} remote, const \mbox{\hyperlink{group__api__types_ga613f7430f76ab41fd47f6a386c370828}{SVM\+\_\+\+Value\+\_\+\+Pointer}} target)
\begin{DoxyCompactList}\small\item\em This function copies a memory zone to another. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__apimacros_ga0d0dae93534c2ba22499a92705a4e391}{SVM\+\_\+\+FUNCTION}} void \mbox{\hyperlink{group__operationsmemory_gafcdf1b2211f484ede4d1af23842b1a59}{svm\+\_\+memory\+\_\+move}} (const void \texorpdfstring{$\ast$}{*}svm, const \mbox{\hyperlink{group__api__types_ga19af2c6060f3ae282ea4e73121fac69c}{SVM\+\_\+\+Kernel}} kernel, const \mbox{\hyperlink{group__api__types_ga613f7430f76ab41fd47f6a386c370828}{SVM\+\_\+\+Value\+\_\+\+Pointer}} origin, const \mbox{\hyperlink{group__api__types_ga19af2c6060f3ae282ea4e73121fac69c}{SVM\+\_\+\+Kernel}} remote, const \mbox{\hyperlink{group__api__types_ga613f7430f76ab41fd47f6a386c370828}{SVM\+\_\+\+Value\+\_\+\+Pointer}} target)
\begin{DoxyCompactList}\small\item\em This function moves a memory zone to another. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__apimacros_ga0d0dae93534c2ba22499a92705a4e391}{SVM\+\_\+\+FUNCTION}} void \mbox{\hyperlink{group__operationsmemory_gaed3bdfa2e5495e2265a29fd74e780f9a}{svm\+\_\+memory\+\_\+share}} (const void \texorpdfstring{$\ast$}{*}svm, const \mbox{\hyperlink{group__api__types_ga19af2c6060f3ae282ea4e73121fac69c}{SVM\+\_\+\+Kernel}} kernel, const \mbox{\hyperlink{group__api__types_ga613f7430f76ab41fd47f6a386c370828}{SVM\+\_\+\+Value\+\_\+\+Pointer}} origin, const \mbox{\hyperlink{group__api__types_ga19af2c6060f3ae282ea4e73121fac69c}{SVM\+\_\+\+Kernel}} remote, const \mbox{\hyperlink{group__api__types_ga613f7430f76ab41fd47f6a386c370828}{SVM\+\_\+\+Value\+\_\+\+Pointer}} target)
\begin{DoxyCompactList}\small\item\em This function shares a memory zone to another. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__apimacros_ga0d0dae93534c2ba22499a92705a4e391}{SVM\+\_\+\+FUNCTION}} void \mbox{\hyperlink{group__operationsmemory_ga9090b93a2547bf21d3e60c77ed323887}{svm\+\_\+memory\+\_\+translate}} (const void \texorpdfstring{$\ast$}{*}svm, const \mbox{\hyperlink{group__api__types_ga19af2c6060f3ae282ea4e73121fac69c}{SVM\+\_\+\+Kernel}} kernel, const \mbox{\hyperlink{group__api__types_ga613f7430f76ab41fd47f6a386c370828}{SVM\+\_\+\+Value\+\_\+\+Pointer}} zone, const \mbox{\hyperlink{group__api__types_ga613f7430f76ab41fd47f6a386c370828}{SVM\+\_\+\+Value\+\_\+\+Pointer}} origin, const \mbox{\hyperlink{group__api__types_ga613f7430f76ab41fd47f6a386c370828}{SVM\+\_\+\+Value\+\_\+\+Pointer}} target)
\begin{DoxyCompactList}\small\item\em This function translates pointers within a memory zone. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__apimacros_ga0d0dae93534c2ba22499a92705a4e391}{SVM\+\_\+\+FUNCTION}} void \mbox{\hyperlink{group__operationsmemory_gaf5e2146d5750bd3b408762f345433a61}{svm\+\_\+memory\+\_\+address\+\_\+shift}} (const void \texorpdfstring{$\ast$}{*}svm, const \mbox{\hyperlink{group__api__types_ga19af2c6060f3ae282ea4e73121fac69c}{SVM\+\_\+\+Kernel}} kernel, const \mbox{\hyperlink{group__api__types_gae19c9a8c6077446e11c34dd11059f647}{SVM\+\_\+\+Address}} address, const \mbox{\hyperlink{group__api__types_gaffdbc5928860a9f9c0f1db65bfb63b30}{SVM\+\_\+\+Value\+\_\+\+Integer}} shift)
\begin{DoxyCompactList}\small\item\em This function increases or decreases an integer in a memory by an integer value. \end{DoxyCompactList}\item 
\mbox{\hyperlink{group__apimacros_ga0d0dae93534c2ba22499a92705a4e391}{SVM\+\_\+\+FUNCTION}} void \mbox{\hyperlink{group__operationsmemory_ga5f20a8cee74011b24999d4de23a6b758}{svm\+\_\+memory\+\_\+address\+\_\+shift\+\_\+\+\_\+raw}} (const void \texorpdfstring{$\ast$}{*}svm, const \mbox{\hyperlink{group__api__types_ga19af2c6060f3ae282ea4e73121fac69c}{SVM\+\_\+\+Kernel}} kernel, const \mbox{\hyperlink{group__api__types_gae19c9a8c6077446e11c34dd11059f647}{SVM\+\_\+\+Address}} address, signed long int shift)
\begin{DoxyCompactList}\small\item\em This function increases or decreases an integer in a memory by a raw integer. \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsubsection{Detailed Description}
This module contains API functions to handle SVM memory operations. 



\doxysubsubsection{Function Documentation}
\Hypertarget{group__operationsmemory_gaf5e2146d5750bd3b408762f345433a61}\label{group__operationsmemory_gaf5e2146d5750bd3b408762f345433a61} 
\index{SVM memory operations@{SVM memory operations}!svm\_memory\_address\_shift@{svm\_memory\_address\_shift}}
\index{svm\_memory\_address\_shift@{svm\_memory\_address\_shift}!SVM memory operations@{SVM memory operations}}
\doxysubsubsubsection{\texorpdfstring{svm\_memory\_address\_shift()}{svm\_memory\_address\_shift()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__apimacros_ga0d0dae93534c2ba22499a92705a4e391}{SVM\+\_\+\+FUNCTION}} void svm\+\_\+memory\+\_\+address\+\_\+shift (\begin{DoxyParamCaption}\item[{const void \texorpdfstring{$\ast$}{*}}]{svm,  }\item[{const \mbox{\hyperlink{group__api__types_ga19af2c6060f3ae282ea4e73121fac69c}{SVM\+\_\+\+Kernel}}}]{kernel,  }\item[{const \mbox{\hyperlink{group__api__types_gae19c9a8c6077446e11c34dd11059f647}{SVM\+\_\+\+Address}}}]{address,  }\item[{const \mbox{\hyperlink{group__api__types_gaffdbc5928860a9f9c0f1db65bfb63b30}{SVM\+\_\+\+Value\+\_\+\+Integer}}}]{shift }\end{DoxyParamCaption})}



This function increases or decreases an integer in a memory by 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}}  & {\em kernel} & The kernel in which the targeted memory is. \\
\hline
\mbox{\texttt{ in}}  & {\em address} & The local address to modify. \\
\hline
\mbox{\texttt{ in}}  & {\em shift} & The shift value.\\
\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
{\em MEMORY} & interruption when the address is not defined. \\
\hline
{\em MEMORY} & interruption when the type of the address is not INTEGER.\\
\hline
\end{DoxyExceptions}
\begin{DoxySeeAlso}{See also}
\doxylink{group__addressmemory_ga21f8c43c2b1503cc785618c462ac7661}{svm\+\_\+memory\+\_\+address\+\_\+is\+\_\+defined} 

\doxylink{group__addressmemory_ga01cd117746123ca78ec0f373816dd130}{svm\+\_\+memory\+\_\+address\+\_\+get\+\_\+type} 

\doxylink{group__ownershipprocesses_ga535796c3203a2baa8095c951b9b2c205}{svm\+\_\+process\+\_\+ownership\+\_\+lock} 

\doxylink{group__getkernels_gad6a03dbf0dd283278cdc4bbc2266efa5}{svm\+\_\+kernel\+\_\+get\+\_\+current} 
\end{DoxySeeAlso}
\Hypertarget{group__operationsmemory_ga5f20a8cee74011b24999d4de23a6b758}\label{group__operationsmemory_ga5f20a8cee74011b24999d4de23a6b758} 
\index{SVM memory operations@{SVM memory operations}!svm\_memory\_address\_shift\_\_raw@{svm\_memory\_address\_shift\_\_raw}}
\index{svm\_memory\_address\_shift\_\_raw@{svm\_memory\_address\_shift\_\_raw}!SVM memory operations@{SVM memory operations}}
\doxysubsubsubsection{\texorpdfstring{svm\_memory\_address\_shift\_\_raw()}{svm\_memory\_address\_shift\_\_raw()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__apimacros_ga0d0dae93534c2ba22499a92705a4e391}{SVM\+\_\+\+FUNCTION}} void svm\+\_\+memory\+\_\+address\+\_\+shift\+\_\+\+\_\+raw (\begin{DoxyParamCaption}\item[{const void \texorpdfstring{$\ast$}{*}}]{svm,  }\item[{const \mbox{\hyperlink{group__api__types_ga19af2c6060f3ae282ea4e73121fac69c}{SVM\+\_\+\+Kernel}}}]{kernel,  }\item[{const \mbox{\hyperlink{group__api__types_gae19c9a8c6077446e11c34dd11059f647}{SVM\+\_\+\+Address}}}]{address,  }\item[{signed long int}]{shift }\end{DoxyParamCaption})}



This function increases or decreases an integer in a memory by 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}}  & {\em kernel} & The kernel in which the targeted memory is. \\
\hline
\mbox{\texttt{ in}}  & {\em address} & The local address to modify. \\
\hline
\mbox{\texttt{ in}}  & {\em shift} & The shift value.\\
\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
{\em MEMORY} & interruption when the address is not defined. \\
\hline
{\em MEMORY} & interruption when the type of the address is not INTEGER.\\
\hline
\end{DoxyExceptions}
\begin{DoxySeeAlso}{See also}
\doxylink{group__addressmemory_ga21f8c43c2b1503cc785618c462ac7661}{svm\+\_\+memory\+\_\+address\+\_\+is\+\_\+defined} 

\doxylink{group__addressmemory_ga01cd117746123ca78ec0f373816dd130}{svm\+\_\+memory\+\_\+address\+\_\+get\+\_\+type} 

\doxylink{group__ownershipprocesses_ga535796c3203a2baa8095c951b9b2c205}{svm\+\_\+process\+\_\+ownership\+\_\+lock} 

\doxylink{group__getkernels_gad6a03dbf0dd283278cdc4bbc2266efa5}{svm\+\_\+kernel\+\_\+get\+\_\+current} 
\end{DoxySeeAlso}
\Hypertarget{group__operationsmemory_ga105d835318f721d4fff3cf06b77097db}\label{group__operationsmemory_ga105d835318f721d4fff3cf06b77097db} 
\index{SVM memory operations@{SVM memory operations}!svm\_memory\_copy@{svm\_memory\_copy}}
\index{svm\_memory\_copy@{svm\_memory\_copy}!SVM memory operations@{SVM memory operations}}
\doxysubsubsubsection{\texorpdfstring{svm\_memory\_copy()}{svm\_memory\_copy()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__apimacros_ga0d0dae93534c2ba22499a92705a4e391}{SVM\+\_\+\+FUNCTION}} void svm\+\_\+memory\+\_\+copy (\begin{DoxyParamCaption}\item[{const void \texorpdfstring{$\ast$}{*}}]{svm,  }\item[{const \mbox{\hyperlink{group__api__types_ga19af2c6060f3ae282ea4e73121fac69c}{SVM\+\_\+\+Kernel}}}]{kernel,  }\item[{const \mbox{\hyperlink{group__api__types_ga613f7430f76ab41fd47f6a386c370828}{SVM\+\_\+\+Value\+\_\+\+Pointer}}}]{origin,  }\item[{const \mbox{\hyperlink{group__api__types_ga19af2c6060f3ae282ea4e73121fac69c}{SVM\+\_\+\+Kernel}}}]{remote,  }\item[{const \mbox{\hyperlink{group__api__types_ga613f7430f76ab41fd47f6a386c370828}{SVM\+\_\+\+Value\+\_\+\+Pointer}}}]{target }\end{DoxyParamCaption})}



This function copies a memory zone to another. 


\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 origin memory is. \\
\hline
\mbox{\texttt{ in}}  & {\em origin} & The origin memory zone to copy. \\
\hline
\mbox{\texttt{ in}}  & {\em remote} & The kernel in which the destination memory is. \\
\hline
\mbox{\texttt{ in}}  & {\em target} & The target memory zone.\\
\hline
\end{DoxyParams}
The two kernels can be equal.

Pointers indicating a sub-\/part of the zone are updated to reflect the new location.


\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
{\em FAILURE} & interruption when the remote kernel is not owned by our process or is not in a process locked by ours. \\
\hline
{\em MEMORY} & interruption when the two memory zones are incompatibles.\\
\hline
\end{DoxyExceptions}
\begin{DoxySeeAlso}{See also}
\doxylink{group__ownershipprocesses_ga535796c3203a2baa8095c951b9b2c205}{svm\+\_\+process\+\_\+ownership\+\_\+lock} 

\doxylink{group__getkernels_gad6a03dbf0dd283278cdc4bbc2266efa5}{svm\+\_\+kernel\+\_\+get\+\_\+current} 
\end{DoxySeeAlso}
\Hypertarget{group__operationsmemory_gafcdf1b2211f484ede4d1af23842b1a59}\label{group__operationsmemory_gafcdf1b2211f484ede4d1af23842b1a59} 
\index{SVM memory operations@{SVM memory operations}!svm\_memory\_move@{svm\_memory\_move}}
\index{svm\_memory\_move@{svm\_memory\_move}!SVM memory operations@{SVM memory operations}}
\doxysubsubsubsection{\texorpdfstring{svm\_memory\_move()}{svm\_memory\_move()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__apimacros_ga0d0dae93534c2ba22499a92705a4e391}{SVM\+\_\+\+FUNCTION}} void svm\+\_\+memory\+\_\+move (\begin{DoxyParamCaption}\item[{const void \texorpdfstring{$\ast$}{*}}]{svm,  }\item[{const \mbox{\hyperlink{group__api__types_ga19af2c6060f3ae282ea4e73121fac69c}{SVM\+\_\+\+Kernel}}}]{kernel,  }\item[{const \mbox{\hyperlink{group__api__types_ga613f7430f76ab41fd47f6a386c370828}{SVM\+\_\+\+Value\+\_\+\+Pointer}}}]{origin,  }\item[{const \mbox{\hyperlink{group__api__types_ga19af2c6060f3ae282ea4e73121fac69c}{SVM\+\_\+\+Kernel}}}]{remote,  }\item[{const \mbox{\hyperlink{group__api__types_ga613f7430f76ab41fd47f6a386c370828}{SVM\+\_\+\+Value\+\_\+\+Pointer}}}]{target }\end{DoxyParamCaption})}



This function moves a memory zone to another. 


\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 origin memory is. \\
\hline
\mbox{\texttt{ in}}  & {\em origin} & The origin memory zone to move. \\
\hline
\mbox{\texttt{ in}}  & {\em remote} & The kernel in which the destination memory is. \\
\hline
\mbox{\texttt{ in}}  & {\em target} & The target memory zone.\\
\hline
\end{DoxyParams}
The two kernels can be equal.

After the move, the original zone is left non-\/initialised. Pointers indicating a sub-\/part of the zone are updated to reflect the new location.


\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
{\em FAILURE} & interruption when the remote kernel is not owned by our process or is not in a process locked by ours. \\
\hline
{\em MEMORY} & interruption when the two memory zones are incompatibles.\\
\hline
\end{DoxyExceptions}
\begin{DoxySeeAlso}{See also}
\doxylink{group__ownershipprocesses_ga535796c3203a2baa8095c951b9b2c205}{svm\+\_\+process\+\_\+ownership\+\_\+lock} 

\doxylink{group__getkernels_gad6a03dbf0dd283278cdc4bbc2266efa5}{svm\+\_\+kernel\+\_\+get\+\_\+current} 
\end{DoxySeeAlso}
\Hypertarget{group__operationsmemory_gaed3bdfa2e5495e2265a29fd74e780f9a}\label{group__operationsmemory_gaed3bdfa2e5495e2265a29fd74e780f9a} 
\index{SVM memory operations@{SVM memory operations}!svm\_memory\_share@{svm\_memory\_share}}
\index{svm\_memory\_share@{svm\_memory\_share}!SVM memory operations@{SVM memory operations}}
\doxysubsubsubsection{\texorpdfstring{svm\_memory\_share()}{svm\_memory\_share()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__apimacros_ga0d0dae93534c2ba22499a92705a4e391}{SVM\+\_\+\+FUNCTION}} void svm\+\_\+memory\+\_\+share (\begin{DoxyParamCaption}\item[{const void \texorpdfstring{$\ast$}{*}}]{svm,  }\item[{const \mbox{\hyperlink{group__api__types_ga19af2c6060f3ae282ea4e73121fac69c}{SVM\+\_\+\+Kernel}}}]{kernel,  }\item[{const \mbox{\hyperlink{group__api__types_ga613f7430f76ab41fd47f6a386c370828}{SVM\+\_\+\+Value\+\_\+\+Pointer}}}]{origin,  }\item[{const \mbox{\hyperlink{group__api__types_ga19af2c6060f3ae282ea4e73121fac69c}{SVM\+\_\+\+Kernel}}}]{remote,  }\item[{const \mbox{\hyperlink{group__api__types_ga613f7430f76ab41fd47f6a386c370828}{SVM\+\_\+\+Value\+\_\+\+Pointer}}}]{target }\end{DoxyParamCaption})}



This function shares a memory zone to another. 


\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 origin memory is. \\
\hline
\mbox{\texttt{ in}}  & {\em origin} & The origin memory zone to share. \\
\hline
\mbox{\texttt{ in}}  & {\em remote} & The kernel in which the destination memory is. \\
\hline
\mbox{\texttt{ in}}  & {\em target} & The target memory zone.\\
\hline
\end{DoxyParams}
The two kernels can be equal.

If the two kernels are different, the synchronisation is enabled on the shared memory.

After the share, any change to one memory zone will be automatically reflected to the other one.


\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
{\em FAILURE} & interruption when the remote kernel is not owned by our process or is not in a process locked by ours. \\
\hline
{\em MEMORY} & interruption when the two memory zones are incompatibles.\\
\hline
\end{DoxyExceptions}
\begin{DoxySeeAlso}{See also}
\doxylink{group__ownershipprocesses_ga535796c3203a2baa8095c951b9b2c205}{svm\+\_\+process\+\_\+ownership\+\_\+lock} 

\doxylink{group__getkernels_gad6a03dbf0dd283278cdc4bbc2266efa5}{svm\+\_\+kernel\+\_\+get\+\_\+current} 

\doxylink{group__synchronisationmemory_gadfa509bc428e9055774d79d33a3527f7}{svm\+\_\+memory\+\_\+synchronisation\+\_\+enable} 

\doxylink{group__synchronisationmemory_ga86d1557ff72b52a7af8ca1c4ab03d16f}{svm\+\_\+memory\+\_\+synchronisation\+\_\+disable} 
\end{DoxySeeAlso}
\Hypertarget{group__operationsmemory_ga9090b93a2547bf21d3e60c77ed323887}\label{group__operationsmemory_ga9090b93a2547bf21d3e60c77ed323887} 
\index{SVM memory operations@{SVM memory operations}!svm\_memory\_translate@{svm\_memory\_translate}}
\index{svm\_memory\_translate@{svm\_memory\_translate}!SVM memory operations@{SVM memory operations}}
\doxysubsubsubsection{\texorpdfstring{svm\_memory\_translate()}{svm\_memory\_translate()}}
{\footnotesize\ttfamily \mbox{\hyperlink{group__apimacros_ga0d0dae93534c2ba22499a92705a4e391}{SVM\+\_\+\+FUNCTION}} void svm\+\_\+memory\+\_\+translate (\begin{DoxyParamCaption}\item[{const void \texorpdfstring{$\ast$}{*}}]{svm,  }\item[{const \mbox{\hyperlink{group__api__types_ga19af2c6060f3ae282ea4e73121fac69c}{SVM\+\_\+\+Kernel}}}]{kernel,  }\item[{const \mbox{\hyperlink{group__api__types_ga613f7430f76ab41fd47f6a386c370828}{SVM\+\_\+\+Value\+\_\+\+Pointer}}}]{zone,  }\item[{const \mbox{\hyperlink{group__api__types_ga613f7430f76ab41fd47f6a386c370828}{SVM\+\_\+\+Value\+\_\+\+Pointer}}}]{origin,  }\item[{const \mbox{\hyperlink{group__api__types_ga613f7430f76ab41fd47f6a386c370828}{SVM\+\_\+\+Value\+\_\+\+Pointer}}}]{target }\end{DoxyParamCaption})}



This function translates pointers within 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 memory is. \\
\hline
\mbox{\texttt{ in}}  & {\em zone} & The memory zone where pointers are modified. \\
\hline
\mbox{\texttt{ in}}  & {\em origin} & The origin memory zone targeted by pointers. \\
\hline
\mbox{\texttt{ in}}  & {\em target} & The target memory zone in which pointers shall reference.\\
\hline
\end{DoxyParams}
Only non-\/null pointers are modified within the memory zone. Other values are ignored. All addresses shall be defined within the memory zone.

When a pointer is read and is pointing towards the origin memory zone, its address is changed to the same offset within the target memory zone. If the pointer destination exceeds the origin and target zones, the pointer is not modified.


\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
{\em MEMORY} & interruption when a wrong memory access is performed.\\
\hline
\end{DoxyExceptions}
\begin{DoxySeeAlso}{See also}
\doxylink{group__ownershipprocesses_ga535796c3203a2baa8095c951b9b2c205}{svm\+\_\+process\+\_\+ownership\+\_\+lock} 

\doxylink{group__getkernels_gad6a03dbf0dd283278cdc4bbc2266efa5}{svm\+\_\+kernel\+\_\+get\+\_\+current} 

\doxylink{group__operationsmemory_ga105d835318f721d4fff3cf06b77097db}{svm\+\_\+memory\+\_\+copy} 

\doxylink{group__operationsmemory_gafcdf1b2211f484ede4d1af23842b1a59}{svm\+\_\+memory\+\_\+move} 

\doxylink{group__operationsmemory_gaed3bdfa2e5495e2265a29fd74e780f9a}{svm\+\_\+memory\+\_\+share} 
\end{DoxySeeAlso}
