<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
              "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">

<refentry>
    <refentryinfo>clEnqueueSVMFree
        <keywordset>
            <keyword>clEnqueueSVMFree</keyword>
        </keywordset>
    </refentryinfo>

    <refmeta>
        <refentrytitle>
            clEnqueueSVMFree
        </refentrytitle>

        <refmiscinfo>
            <copyright>
                <year>2007-2013</year>
                <holder>The Khronos Group Inc.
 Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and/or associated documentation files (the
"Materials"), to deal in the Materials without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Materials, and to
permit persons to whom the Materials are furnished to do so, subject to
the condition that this copyright notice and permission notice shall be included
in all copies or substantial portions of the Materials.</holder>
            </copyright>
        </refmiscinfo>
        <manvolnum>3</manvolnum>
    </refmeta>

<!-- ================================ SYNOPSIS -->

    <refnamediv id="clEnqueueSVMFree">
        <refname>
            clEnqueueSVMFree
        </refname>

        <refpurpose>
            Enqueues a command to free the shared virtual memory allocated using clSVMAlloc or a shared system memory pointer.
        </refpurpose>
    </refnamediv>

    <refsynopsisdiv xmlns:xlink="http://www.w3.org/1999/xlink"><title></title>
        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    <link xlink:href="scalarDataTypes.html">cl_int</link> <function>clEnqueueSVMFree</function>
                </funcdef>

                <paramdef><link xlink:href="abstractDataTypes.html">cl_command_queue</link><parameter>command_queue</parameter></paramdef>

                <paramdef>
                    <link xlink:href="scalarDataTypes.html">cl_uint</link>
                    <parameter>num_svm_pointers</parameter>
                </paramdef>

                <paramdef>
                    <link xlink:href="scalarDataTypes.html">void</link>
                    <parameter>*svm_pointers[]</parameter>
                </paramdef>

                <paramdef><link xlink:href="scalarDataTypes.html">void</link> (CL_CALLBACK <parameter>*pfn_free_func)
                (<link xlink:href="abstractDataTypes.html">    cl_command_queue</link> queue, <link xlink:href="scalarDataTypes.html">    cl_uint</link> num_svm_pointers,
                 <link xlink:href="scalarDataTypes.html">    void</link> *svm_pointers[]</parameter>)</paramdef>
                <paramdef><link xlink:href="scalarDataTypes.html">    void</link><parameter> *user_data</parameter>)</paramdef>

                <paramdef><link xlink:href="scalarDataTypes.html">void</link><parameter>*user_data</parameter></paramdef>

                <paramdef><link xlink:href="scalarDataTypes.html">cl_uint</link><parameter>num_events_in_wait_list</parameter></paramdef>

                <paramdef>const <link xlink:href="abstractDataTypes.html">cl_event</link><parameter>*event_wait_list</parameter></paramdef>

                <paramdef><link xlink:href="abstractDataTypes.html">cl_event</link><parameter>*event</parameter></paramdef>
            </funcprototype>
        </funcsynopsis>
    </refsynopsisdiv>

<!-- ================================ PARAMETERS -->

    <refsect1 id="parameters">
        <title>Parameters</title>
        <variablelist>

            <varlistentry>
                <term><varname>command_queue</varname></term>
                <listitem>
                    <para>A valid host command-queue.</para>
               </listitem>
            </varlistentry>

            <varlistentry>
                <term><varname>svm_pointers and num_svm_pointers</varname></term>
                <listitem>
                    <para>
                        Specify shared virtual memory pointers to be freed. Each 
                        pointer in <varname>svm_pointers</varname> that was 
                        allocated using 
                        <citerefentry><refentrytitle>clSVMAlloc</refentrytitle></citerefentry> 
                        must have been allocated from the 
                        same context from which <varname>command_queue</varname> 
                        was created. The memory associated with 
                        <varname>svm_pointers</varname> can be reused or 
                        freed after the function returns.
                    </para>
               </listitem>
            </varlistentry>

             <varlistentry>
                <term><varname>pfn_free_func</varname></term>
                <listitem>
                    <para>
                        Specifies the callback 
                        function to be called to free the SVM pointers. 
                        <varname>pfn_free_func</varname> takes four arguments: 
                        <varname>queue</varname> which is the command queue in which 
                        <function>clEnqueueSVMFree</function> was enqueued, the 
                        count and list of SVM pointers to free and <varname>user_data</varname>
                        which is a pointer to user specified data. 
                        If <varname>pfn_free_func</varname> is NULL, all pointers specified in 
                        <varname>svm_pointers</varname> must be allocated using 
                        <citerefentry><refentrytitle>clSVMAlloc</refentrytitle></citerefentry> 
                        and the OpenCL implementation will free 
                        these SVM pointers. <varname>pfn_free_func</varname> must 
                        be a valid callback function if any SVM pointer to be 
                        freed is a shared system memory pointer i.e. not allocated 
                        using <citerefentry><refentrytitle>clSVMAlloc</refentrytitle></citerefentry>. 
                        If <varname>pfn_free_func</varname>
                        is a valid callback function, the OpenCL implementation 
                        will call <varname>pfn_free_func</varname> to free all the 
                        SVM pointers specified in <varname>svm_pointers</varname>.
                    </para>
               </listitem>
            </varlistentry>

            <varlistentry>
                <term><varname>user_data</varname></term>
                <listitem>
                    <para>
                      Will be passed as the
                      <varname>user_data</varname> argument when <varname>pfn_free_func</varname>
                      is called. <varname>user_data</varname> can be NULL.
                    </para>
               </listitem>
            </varlistentry>

            <varlistentry>
                <term><varname>event_wait_list</varname> and <varname>num_events_in_wait_list</varname></term>
                <listitem>
                    <para>
                        Specify events that need to complete before 
                        <function>clEnqueueSVMFree</function> can be executed. If 
                        <varname>event_wait_list</varname> is NULL, then 
                        <function>clEnqueueSVMFree</function>
                        does not wait on any event to complete. If 
                        <varname>event_wait_list</varname> is NULL, 
                        <varname>num_events_in_wait_list</varname>
                        must be 0. If <varname>event_wait_list</varname> is not 
                        NULL, the list of events pointed to by 
                        <varname>event_wait_list</varname> must 
                        be valid and <varname>num_events_in_wait_list</varname> 
                        must be greater than 0. The events specified in 
                        <varname>event_wait_list</varname> act as synchronization 
                        points. The context associated with events in 
                        <varname>event_wait_list</varname> and 
                        <varname>command_queue</varname> must be the same. 
                        The memory associated with 
                        <varname>event_wait_list</varname> can be 
                        reused or freed after the function returns.
                    </para>
               </listitem>
            </varlistentry>

            <varlistentry>
                <term><varname>event</varname></term>
                <listitem>
                    <para>
                        Returns an event object that 
                        identifies this particular command and can be used to query or 
                        queue a wait for this particular command to complete. 
                        <varname>event</varname> can be NULL in which case it will 
                        not be possible for the application to query the 
                        status of this command or queue a wait for this 
                        command to complete. If the <varname>event_wait_list</varname> 
                        and the <varname>event</varname> arguments are not NULL, 
                        the <varname>event</varname>
                        argument should not refer to an element of the 
                        <varname>event_wait_list</varname> array.
                    </para>
               </listitem>
            </varlistentry>

        </variablelist>
    </refsect1>

<!-- ================================ NOTES  -->

<!--
   <refsect1 id="notes"><title>Notes</title>
   </refsect1>
-->

<!-- ================================ ERRORS  -->

    <refsect1 id="errors"><title>Errors</title>
        <para>
          Returns <errorname>CL_SUCCESS</errorname> if the function is executed
          successfully. Otherwise, it returns one of the following errors:
        </para>

        <itemizedlist mark="disc">
            <listitem>
                <errorname>CL_INVALID_COMMAND_QUEUE</errorname> if 
                <varname>command_queue</varname> is not a valid host command-queue.
            </listitem>

            <listitem>
                <errorname>CL_INVALID_VALUE</errorname> if 
                <varname>num_svm_pointers</varname> is 0 and 
                <varname>svm_pointers</varname> is non-NULL, or if <varname>svm_pointers</varname> 
                is NULL and <varname>num_svm_pointers</varname> is not 0.
            </listitem>

            <listitem>
                <errorname>CL_INVALID_EVENT_WAIT_LIST</errorname> if 
                <varname>event_wait_list</varname> is NULL and 
                <varname>num_events_in_wait_list</varname> > 0, or 
                <varname>event_wait_list</varname> is not NULL and 
                <varname>num_events_in_wait_list</varname> is 0, or 
                if event objects in <varname>event_wait_list</varname> 
                are not valid events. 
            </listitem>

            <listitem>
                <errorname>CL_OUT_OF_RESOURCES</errorname> if there 
                is a failure to allocate resources required
                by the OpenCL implementation on the device.
            </listitem>

            <listitem>
                <errorname>CL_OUT_OF_HOST_MEMORY</errorname> if there 
                is a failure to allocate resources
                required by the OpenCL implementation on the host.
            </listitem>
        </itemizedlist>
    </refsect1>

<!-- ================================ EXAMPLE  -->
<!-- DO NOT DELETE IN CASE AN EXAMPLE IS ADDED IN THE FUTURE -->
<!--
    <refsect2 id="example1">
        <title>
            Example
        </title>

        <informaltable frame="none">
            <tgroup cols="1" align="left" colsep="0" rowsep="0">
                <colspec colname="col1" colnum="1" />
                <tbody>
                    <row>
                        <entry>
                            Example goes here - it will be set in "code" type with white space preserved.
                        </entry>
                    </row>
                </tbody>
            </tgroup>
        </informaltable>
    </refsect2>
-->

<!-- ================================ SPECIFICATION  -->
<!-- Set the "uri" attribute in the <olink /> element to the "named destination" for the PDF page
-->
    <refsect1 id="specification"><title>Specification</title>
        <para>
            <imageobject>
                <imagedata fileref="pdficon_small1.gif" format="gif" />
            </imageobject>

            <olink uri="clEnqueueSVMFree">OpenCL Specification</olink>
        </para>
    </refsect1>

<!-- ================================ ALSO SEE -->

    <refsect1 id="seealso"><title>Also see</title>
        <para>
            <citerefentry href="sharedVirtualMemory"><refentrytitle>Shared Virtual Memory Functions</refentrytitle></citerefentry>
        </para>
    </refsect1>

<!-- ================================ COPYRIGHT  -->
<!-- Content included from copyright.inc.xsl -->

    <refsect3 id="Copyright"><title></title>
        <imageobject>
                <imagedata fileref="KhronosLogo.jpg" format="jpg" />
        </imageobject>
        <para />
    </refsect3>

 <!-- 24-Oct-2015, API rev. 19 -->
</refentry>

