<?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>
        <keywordset>
            <keyword>clGetEventInfo</keyword>
        </keywordset>
    </refentryinfo>

    <refmeta>
        <refentrytitle>clGetEventInfo</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="clGetEventInfo">
        <refname>clGetEventInfo</refname>

        <refpurpose>
            Returns information about the event object.
        </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>
                        clGetEventInfo
                    </function>
                </funcdef>

                <paramdef><link xlink:href="abstractDataTypes.html">cl_event</link><parameter>event</parameter></paramdef>
                <paramdef><link xlink:href="enums.html#cl_event_info">cl_event_info</link><parameter>param_name</parameter></paramdef>
                <paramdef><link xlink:href="scalarDataTypes.html">size_t</link><parameter>param_value_size</parameter></paramdef>
                <paramdef><link xlink:href="scalarDataTypes.html">void</link><parameter>*param_value</parameter></paramdef>
                <paramdef><link xlink:href="scalarDataTypes.html">size_t</link><parameter>*param_value_size_ret</parameter></paramdef>

            </funcprototype>
        </funcsynopsis>
    </refsynopsisdiv>

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

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

        <varlistentry>
          <term><varname> event </varname> </term>
          <listitem>
            <para>
              Specifies the event object being queried.
            </para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term> <varname>param_value </varname> </term>
          <listitem>
            <para>
               A pointer to memory where the appropriate result being queried is returned.
               If <varname>param_value</varname> is NULL, it is ignored.
            </para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term> <varname>param_value_size </varname> </term>
          <listitem>
            <para>
              Specifies the size in bytes of memory pointed to by <varname>param_value</varname>.
              This size must be &ge; size of the return type as described in the table below.
            </para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term> <varname>param_value_size_ret </varname> </term>
          <listitem>
            <para>
              Returns the actual size in bytes of data copied to <varname>param_value</varname>. If
              <varname>param_value_size_ret</varname> is NULL, it is ignored.
            </para>
          </listitem>
        </varlistentry>

        <!-- ================================ PARAMETER TABLE (OPTIONAL) -->

        <varlistentry>
          <term> <varname>param_name </varname> </term>
          <listitem>
            <para>
              Specifies the information to query. The list of supported
              <varname>param_name</varname> types and the information returned in
              <varname>param_value</varname> by <function>clGetEventInfo</function> is described
              in the table below (Table 5.22):
            </para>

            <!-- Table 5.24 -->
            <informaltable frame="all">
              <tgroup cols="3" align="left" colsep="1" rowsep="1">
                <colspec colname="col1" colnum="1" />
                <colspec colname="col2" colnum="2" />
                <colspec colname="col3" colnum="3" />

                <thead>
                  <row>
                    <entry>cl_event_info</entry>
                    <entry>Return Type</entry>
                    <entry>Information returned in <varname>param_value</varname></entry>
                  </row>
                </thead>

                <tbody>
                  <row>
                    <entry><constant>CL_EVENT_COMMAND_QUEUE</constant></entry>
                    <entry>cl_command_queue</entry>
                    <entry>
                      Return the command-queue associated with <varname>event</varname>.
                      For user event objects, a NULL value is returned.
                        If the <citerefentry><refentrytitle>cl_khr_gl_sharing</refentrytitle></citerefentry> 
                        extension is enabled, the command queue of a linked event NULL, because the event is not 
                        associated with any OpenCL command queue.
                        If the <citerefentry><refentrytitle>cl_khr_egl_event</refentrytitle></citerefentry> 
                        extension is enabled, 
                        the <constant>CL_EVENT_COMMAND_QUEUE</constant> of a linked event is 
                        <code>NULL</code>, because the event is not associated with any OpenCL 
                        command queue.
                    </entry>
                  </row>

                  <row>
                    <entry><constant>CL_EVENT_CONTEXT</constant></entry>
                    <entry>cl_context</entry>
                    <entry>
                      Return the context associated with <varname>event</varname>.
                    </entry>
                  </row>

                  <row>
                    <entry><constant>CL_EVENT_COMMAND_TYPE</constant></entry>
                    <entry>cl_command_type</entry>
                    <entry>Return the command associated with <varname>event</varname>.
                                    Can be one of the following values:
<literallayout><constant>CL_COMMAND_NDRANGE_KERNEL
CL_COMMAND_NATIVE_KERNEL
CL_COMMAND_READ_BUFFER
CL_COMMAND_WRITE_BUFFER
CL_COMMAND_COPY_BUFFER
CL_COMMAND_READ_IMAGE
CL_COMMAND_WRITE_IMAGE
CL_COMMAND_COPY_IMAGE
CL_COMMAND_COPY_BUFFER_TO_IMAGE
CL_COMMAND_COPY_IMAGE_TO_BUFFER
CL_COMMAND_MAP_BUFFER
CL_COMMAND_MAP_IMAGE
CL_COMMAND_UNMAP_MEM_OBJECT
CL_COMMAND_MARKER
CL_COMMAND_ACQUIRE_GL_OBJECTS
CL_COMMAND_RELEASE_GL_OBJECTS

CL_COMMAND_READ_BUFFER_RECT
CL_COMMAND_WRITE_BUFFER_RECT
CL_COMMAND_COPY_BUFFER_RECT
CL_COMMAND_USER
CL_COMMAND_BARRIER
CL_COMMAND_MIGRATE_MEM_OBJECTS
CL_COMMAND_FILL_BUFFER
CL_COMMAND_FILL_IMAGE

CL_COMMAND_SVM_FREE
CL_COMMAND_SVM_MEMCPY
CL_COMMAND_SVM_MEMFILL
CL_COMMAND_SVM_MAP
CL_COMMAND_SVM_UNMAP

CL_COMMAND_GL_FENCE_SYNC_OBJECT_KHR</constant>
  (if <citerefentry><refentrytitle>cl_khr_gl_event</refentrytitle></citerefentry> 
is enabled, indicating that the event is 
associated with a GL sync object, rather than an OpenCL command)
<constant>CL_COMMAND_ACQUIRE_D3D10_OBJECTS_KHR</constant>
  (if <citerefentry><refentrytitle>cl_khr_d3d10_sharing</refentrytitle></citerefentry> is enabled)
<constant>CL_COMMAND_RELEASE_D3D10_OBJECTS_KHR</constant>
  (if <citerefentry><refentrytitle>cl_khr_d3d10_sharing</refentrytitle></citerefentry> is enabled)
<constant>CL_COMMAND_ACQUIRE_DX9_MEDIA_SURFACES_KHR</constant>
  (if <citerefentry><refentrytitle>cl_khr_dx9_media_sharing</refentrytitle></citerefentry> is enabled)
<constant>CL_COMMAND_RELEASE_DX9_MEDIA_SURFACES_KHR</constant>
  (if <citerefentry><refentrytitle>cl_khr_dx9_media_sharing</refentrytitle></citerefentry> is enabled)
<constant>CL_COMMAND_ACQUIRE_D3D11_OBJECTS_KHR</constant>
  (if  <citerefentry><refentrytitle>cl_khr_d3d11_sharing</refentrytitle></citerefentry> is enabled)
<constant>CL_COMMAND_RELEASE_D3D11_OBJECTS_KHR</constant>
  (if  <citerefentry><refentrytitle>cl_khr_d3d11_sharing</refentrytitle></citerefentry> is enabled)
<constant>CL_COMMAND_EGL_FENCE_SYNC_OBJECT_KHR</constant>
  (if  <citerefentry><refentrytitle>cl_khr_egl_event</refentrytitle></citerefentry> is enabled)
  </literallayout>
                    </entry>
                  </row>

                  <row>
                    <entry><constant>CL_EVENT_COMMAND_ EXECUTION_STATUS</constant></entry>
                    <entry>cl_int</entry>
                    <entry>
                      Return the execution status of the command identified by <varname>event</varname>.
                      The valid values are:

                      <para>
                        <constant>CL_QUEUED</constant> (command has been enqueued in the
                        command-queue),
                      </para>

                      <para>
                        <constant>CL_SUBMITTED</constant> (enqueued command has been submitted
                        by the host to the device associated with the command-queue),
                      </para>

                      <para>
                        <constant>CL_RUNNING</constant> (device is currently executing this
                        command),
                      </para>

                      <para>
                        <constant>CL_COMPLETE</constant> (the command has completed), or
                      </para>

                      <para>
                        Error code given by a negative integer value. (command was
                        abnormally terminated – this may be caused by a bad memory access
                        etc.) These error codes come from the same set of error codes that are
                        returned from the platform or runtime API calls as return values or
                        <varname>errcode_ret</varname> values.
                      </para>

                      <para>
                        The error code values are negative, and event state values are
                        positive. The event state values are ordered from the largest
                        value (<constant>CL_QUEUED</constant>) for the first or initial
                        state to the smallest value (<constant>CL_COMPLETE</constant> or
                        negative integer value) for the last or complete state. The value of
                        <constant>CL_COMPLETE</constant> and <constant>CL_SUCCESS</constant>
                        are the same.
                      </para>

                      <para>
                        If the <citerefentry><refentrytitle>cl_khr_gl_event</refentrytitle></citerefentry> 
                        extension is enabled,
                        the status of a linked event is either 
                        <constant>CL_SUBMITTED</constant>, indicating that 
                        the fence command associated with the sync object has 
                        not yet completed, or <constant>CL_COMPLETE</constant>, 
                        indicating that the fence command has completed.
                      </para>

                      <para>
                        If the <citerefentry><refentrytitle>cl_khr_egl_event</refentrytitle></citerefentry> 
                        extension is enabled,
                        the status of a linked event is either 
                        <constant>CL_SUBMITTED</constant>, indicating that 
                        the fence command associated with the sync object has 
                        not yet completed, or <constant>CL_COMPLETE</constant>, 
                        indicating that the fence command has completed.
                      </para>
                    </entry>
                  </row>

                  <row>
                    <entry><constant>CL_EVENT_REFERENCE_COUNT</constant></entry>
                    <entry>cl_uint</entry>
                    <entry>
                      Return the <varname>event</varname> reference count. The reference count
                      returned should be considered immediately stale. It is unsuitable for general
                      use in applications.  This feature is provided for identifying memory leaks.
                    </entry>
                  </row>

                </tbody>
              </tgroup>
            </informaltable>
          </listitem>
        </varlistentry>
        <!-- END PARAMETER TABLE  -->
      </variablelist>
    </refsect1>

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

    <refsect1 id="notes"><title>Notes</title>
        <para>
          Using <function>clGetEventInfo</function> to determine if a command
          identified by <varname>event</varname> has finished execution
          (i.e. <constant>CL_EVENT_COMMAND_EXECUTION_STATUS</constant> returns
          <constant>CL_COMPLETE</constant>) is not a synchronization point. There are no
          guarantees that the memory objects being modified by command associated with
          <varname>event</varname> will be visible to other enqueued commands.
        </para>
    </refsect1>

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

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

        <itemizedlist mark="disc">
            <listitem>
              <errorname>CL_INVALID_VALUE</errorname> if <varname>param_name</varname> is not
              valid, or if size in bytes specified by <varname>param_value_size</varname>
              is &lt; size of return type as described in the table above and
              <varname>param_value</varname> is not NULL.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_VALUE</errorname> if information to query given in
              <varname>param_name</varname> cannot be queried for event.
            </listitem>

            <listitem>
              <errorname>CL_INVALID_EVENT</errorname> if <varname>event</varname> is not a
              valid <varname>event</varname> object.
            </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="clGetEventInfo">OpenCL Specification</olink>
        </para>
    </refsect1>

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

    <refsect1 id="seealso"><title>Also see</title>
        <para>
            <citerefentry><refentrytitle>enums</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>clReleaseEvent</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>clRetainEvent</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>clWaitForEvents</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>cl_khr_gl_event</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>

<!-- 4-Nov-2015, API ver 2.1 rev 19; Ext ver 2.1 rev 10; C lang ver 2.0 rev 30 -->
</refentry>

