<?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>Event Built-In Functions</keyword>
        </keywordset>
    </refentryinfo>

    <refmeta>
        <refentrytitle>Event Built-In Functions</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>

    <refnamediv>
        <refname>Event Built-In Functions</refname>
        <refpurpose>Click an item in the table below for details about that function.</refpurpose>
    </refnamediv>

    <refsect1 id="springboard"><title></title>
      <informaltable frame="all">
      <tgroup cols="2" align="left" colsep="1" rowsep="1">
        <colspec colnum="1" colwidth="2*" colname="col1" />
        <colspec colnum="2" colwidth="8*" colname="col2" />

        <tbody>
          <row>
            <entry>
              <citerefentry><refentrytitle>retain_event</refentrytitle></citerefentry>
            </entry>
            <entry>
              <para>
                Increments the event reference count.
              </para>
            </entry>
          </row>

          <row>
            <entry>
              <citerefentry><refentrytitle>release_event</refentrytitle></citerefentry>
            </entry> 
            <entry>
               <para>Decrements the event reference count.</para>
            </entry>
          </row>

          <row>
            <entry>
              <citerefentry><refentrytitle>create_user_event</refentrytitle></citerefentry>
            </entry> 
            <entry>
               <para>Create a user event. Returns the user event.</para>
            </entry>
          </row>

          <row>
            <entry>
              <citerefentry><refentrytitle>is_valid_event</refentrytitle></citerefentry>
            </entry> 
            <entry>
               <para>Returns true if <varname>event</varname> is a valid event.</para>
            </entry>
          </row>

          <row>
            <entry>
              <citerefentry><refentrytitle>set_user_event_status</refentrytitle></citerefentry>
            </entry> 
            <entry>
               <para>Sets the execution status of a user event.</para>
            </entry>
          </row>

          <row>
            <entry>
              <citerefentry><refentrytitle>capture_event_profiling_info</refentrytitle></citerefentry>
            </entry> 
            <entry>
                <para>
                    Captures the profiling information for command
                    associated with <varname>event</varname> in <varname>value</varname>.
                </para>
            </entry>
          </row>
         
        </tbody>
        </tgroup>
      </informaltable>
    </refsect1>

<!-- ================================ DESCRIPTION  -->
    <refsect1 id="description"><title>Description</title>
    </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>
        </para>
    </refsect1>-->

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

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

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

