<?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.22 -->
            <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.
                    </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>

<!-- 25-Dec-2013, rev. 19 -->
</refentry>

