<?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">[
<!ENTITY eventFunctionsInc SYSTEM "eventFunctionsInc.xml">
]>

<refentry>
    <refentryinfo>
        <keywordset>
            <keyword>capture_event_profiling_info</keyword>
        </keywordset>
    </refentryinfo>

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

        <refpurpose>
            Captures the profiling information for command associated with <varname>event</varname>.
        </refpurpose>
    </refnamediv>

    <refsynopsisdiv xmlns:xlink="http://www.w3.org/1999/xlink"><title></title>
        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    <link xlink:href="scalarDataTypes.html">void</link>
                    <function>
                        capture_event_profiling_info
                    </function>
                </funcdef>
            <paramdef>
                <link xlink:href="otherDataTypes.html">clk_event_t</link>
                <parameter>event</parameter>
            </paramdef>
            <paramdef>
                <link xlink:href="otherDataTypes.html">clk_profiling_info</link>
                <parameter>name</parameter>
            </paramdef>
            <paramdef>
                global <link xlink:href="scalarDataTypes.html">void</link>
                *<parameter>value</parameter>
            </paramdef>
            </funcprototype>
        </funcsynopsis>

    </refsynopsisdiv>

<!-- ================================ DESCRIPTION  -->

    <refsect1 id="description"><title>Description</title>

        <para>
            Captures the profiling information for functions
            that are enqueued as commands. The specific
            function being referred to is: enqueue_kernel.
            These enqueued commands are identified by
            unique event objects. The profiling information
            will be available in <varname>value</varname> once the command
            identified by <varname>event</varname> has completed.

        </para>

        <para>
            <varname>event</varname> must be an event returned by 
            <citerefentry><refentrytitle>enqueue_kernel</refentrytitle></citerefentry>.
        </para>

        <para>
           <varname>name</varname> identifies which profiling information is to 
           be queried and can be <constant>CLK_PROFILING_COMMAND_EXEC_TIME</constant>.
        </para>

        <para>
           <varname>value</varname> is a pointer to two 64-bit values. 
        </para>

        <para>
            The first 64-bit value describes the elapsed time
            <constant>CL_PROFILING_COMMAND_END</constant> –
            <constant>CL_PROFLING_COMMAND_START</constant> for the
            command identified by <varname>event</varname> in nanoseconds.
        </para>

        <para>
            The second 64-bit value describes the elapsed
            time <constant>CL_PROFILING_COMMAND_COMPLETE</constant>
            – <constant>CL_PROFILING_COMAMND_START</constant> for the 
            command identified by <varname>event</varname> in nanoseconds.
        </para>

        <para>
            NOTE: The behavior of 
            <function>capture_event_profling_info</function> when 
            called multiple times for the same <varname>event</varname> is 
            undefined
        </para>

    </refsect1>

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

    <refsect1 id="notes"><title>Notes</title>
        &eventFunctionsInc;

        <para>
          The behavior of <function>capture_event_profling_info</function> when 
          called multiple times for the same <varname>event</varname> is undefined.
        </para>
    </refsect1>

<!-- ================================ 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="eventFunctions">OpenCL Specification</olink>
        </para>
    </refsect1>

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

    <refsect1 id="seealso"><title>Also see</title>
        <para>
            <citerefentry href="eventFunctions"><refentrytitle>Event 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>

<!-- 19-Oct-2015, C lang 2.0 rev 29 -->
</refentry>

