blob: e09ebbbf04258a8ba65313efb563640015fe8e78 [file] [log] [blame]
<!--
Documentation/_templates/layout.html
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership. The
ASF licenses this file to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance with the
License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations
under the License.
-->
<!DOCTYPE html>
<html class="writer-html5" lang="en">
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Events &mdash; NuttX latest documentation</title>
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css" />
<link rel="stylesheet" type="text/css" href="../../_static/css/theme.css" />
<link rel="stylesheet" type="text/css" href="../../_static/copybutton.css" />
<link rel="stylesheet" type="text/css" href="../../_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css" />
<link rel="stylesheet" type="text/css" href="../../_static/custom.css" />
<link rel="shortcut icon" href="../../_static/favicon.ico"/>
<script src="../../_static/jquery.js"></script>
<script src="../../_static/_sphinx_javascript_frameworks_compat.js"></script>
<script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
<script src="../../_static/doctools.js"></script>
<script src="../../_static/sphinx_highlight.js"></script>
<script src="../../_static/clipboard.min.js"></script>
<script src="../../_static/copybutton.js"></script>
<script src="../../_static/design-tabs.js"></script>
<script src="../../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="FAQ" href="../../faq/index.html" />
<link rel="prev" title="Work Queues" href="wqueue.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../../index.html" class="icon icon-home"> NuttX
</a>
<!-- this version selector is quite ugly, should be probably replaced by something
more modern -->
<div class="version-selector">
<select onchange="javascript:location.href = this.value;">
<option value="../../../latest" selected="selected">latest</option>
<option value="../../../10.0.0" >10.0.0</option>
<option value="../../../10.0.1" >10.0.1</option>
<option value="../../../10.1.0" >10.1.0</option>
<option value="../../../10.2.0" >10.2.0</option>
<option value="../../../10.3.0" >10.3.0</option>
<option value="../../../11.0.0" >11.0.0</option>
<option value="../../../12.0.0" >12.0.0</option>
<option value="../../../12.1.0" >12.1.0</option>
<option value="../../../12.2.0" >12.2.0</option>
<option value="../../../12.2.1" >12.2.1</option>
<option value="../../../12.3.0" >12.3.0</option>
<option value="../../../12.4.0" >12.4.0</option>
<option value="../../../12.5.0" >12.5.0</option>
<option value="../../../12.5.1" >12.5.1</option>
<option value="../../../12.6.0" >12.6.0</option>
<option value="../../../12.7.0" >12.7.0</option>
<option value="../../../12.8.0" >12.8.0</option>
<option value="../../../12.9.0" >12.9.0</option>
<option value="../../../12.10.0" >12.10.0</option>
<option value="../../../12.11.0" >12.11.0</option>
</select>
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption" role="heading"><span class="caption-text">Table of Contents</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../index.html">Home</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../introduction/index.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../quickstart/index.html">Getting Started</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../contributing/index.html">Contributing</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../introduction/inviolables.html">The Inviolable Principles of NuttX</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../platforms/index.html">Supported Platforms</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../components/index.html">OS Components</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../applications/index.html">Applications</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../implementation/index.html">Implementation Details</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../index.html">API Reference</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../user/index.html">Userspace API</a></li>
<li class="toctree-l2 current"><a class="reference internal" href="index.html">Architecture APIs</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="addrenv.html">Address Environments</a></li>
<li class="toctree-l3"><a class="reference internal" href="app_vs_os.html">Application OS vs. Internal OS Interfaces</a></li>
<li class="toctree-l3"><a class="reference internal" href="arch.html">APIs Exported by Architecture-Specific Logic to NuttX</a></li>
<li class="toctree-l3"><a class="reference internal" href="board.html">APIs Exported by Board-Specific Logic to NuttX</a></li>
<li class="toctree-l3"><a class="reference internal" href="conventions.html">Naming and Header File Conventions</a></li>
<li class="toctree-l3"><a class="reference internal" href="iob.html">I/O Buffer Management</a></li>
<li class="toctree-l3"><a class="reference internal" href="led.html">LED Support</a></li>
<li class="toctree-l3"><a class="reference internal" href="mutex.html">Mutual Exclusion lock</a></li>
<li class="toctree-l3"><a class="reference internal" href="newreno.html">Congestion Control NewReno</a></li>
<li class="toctree-l3"><a class="reference internal" href="notifier.html">Notifier Chain</a></li>
<li class="toctree-l3"><a class="reference internal" href="nuttx.html">APIs Exported by NuttX to Architecture-Specific Logic</a></li>
<li class="toctree-l3"><a class="reference internal" href="paging.html">On-Demand Paging</a></li>
<li class="toctree-l3"><a class="reference internal" href="shm.html">Shared Memory</a></li>
<li class="toctree-l3"><a class="reference internal" href="smp.html">Symmetric Multiprocessing (SMP) Application</a></li>
<li class="toctree-l3"><a class="reference internal" href="time_clock.html">System Time and Clock</a></li>
<li class="toctree-l3"><a class="reference internal" href="wqueue.html">Work Queues</a></li>
<li class="toctree-l3 current"><a class="current reference internal" href="#">Events</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#overview">Overview</a></li>
<li class="toctree-l4"><a class="reference internal" href="#configuration-options">Configuration Options</a></li>
<li class="toctree-l4"><a class="reference internal" href="#common-events-interfaces">Common Events Interfaces</a><ul>
<li class="toctree-l5"><a class="reference internal" href="#events-types">Events Types</a></li>
<li class="toctree-l5"><a class="reference internal" href="#notifier-chain-interfaces">Notifier Chain Interfaces</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../faq/index.html">FAQ</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../debugging/index.html">Debugging</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../guides/index.html">Guides</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../glossary.html">Glossary</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../logos/index.html">NuttX Logos</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../_tags/tagsindex.html">Tags</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../index.html">NuttX</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="../index.html">API Reference</a></li>
<li class="breadcrumb-item"><a href="index.html">Architecture APIs</a></li>
<li class="breadcrumb-item active">Events</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/apache/nuttx/blob/master/Documentation/reference/os/events.rst" class="fa fa-github"> Edit on GitHub</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="events">
<h1>Events<a class="headerlink" href="#events" title="Permalink to this heading"></a></h1>
<p>Events groups are synchronization primitives that allow tasks to wait
for multiple conditions to be met before proceeding. They are particularly
useful in scenarios where a task needs to wait for several events to occur
simultaneously.
This concept can be particularly powerful in real-time operating systems (RTOS).</p>
<section id="overview">
<h2>Overview<a class="headerlink" href="#overview" title="Permalink to this heading"></a></h2>
<p>An event group consists of a set of binary flags, each representing a
specific event. Tasks can set, clear, and wait on these flags. When a
task waits on an event group, it can specify which flags it is interested
in and whether it wants to wait for all specified flags to be set or just
any one of them.</p>
</section>
<section id="configuration-options">
<h2>Configuration Options<a class="headerlink" href="#configuration-options" title="Permalink to this heading"></a></h2>
<dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">CONFIG_SCHED_EVENTS</span></code></dt><dd><p>This option enables event objects. Threads may wait on event
objects for specific events, but both threads and ISRs may deliver
events to event objects.</p>
</dd>
</dl>
</section>
<section id="common-events-interfaces">
<h2>Common Events Interfaces<a class="headerlink" href="#common-events-interfaces" title="Permalink to this heading"></a></h2>
<section id="events-types">
<h3>Events Types<a class="headerlink" href="#events-types" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">nxevent_t</span></code>. Defines one event group entry.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">nxevent_mask_t</span></code>. Defines one events mask value.</p></li>
</ul>
</section>
<section id="notifier-chain-interfaces">
<h3>Notifier Chain Interfaces<a class="headerlink" href="#notifier-chain-interfaces" title="Permalink to this heading"></a></h3>
<dl class="c function">
<dt class="sig sig-object c" id="c.nxevent_init">
<span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">nxevent_init</span></span></span><span class="sig-paren">(</span><span class="pre">FAR</span><span class="w"> </span><span class="n"><span class="pre">nxevent_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">event</span></span>, <span class="n"><span class="pre">nxevent_mask_t</span></span><span class="w"> </span><span class="n"><span class="pre">events</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.nxevent_init" title="Permalink to this definition"></a><br /></dt>
<dd><p>Initializes an event object, Set of default events to post
to event.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>event</strong> – Address of the event object</p></li>
<li><p><strong>events</strong> – Set of events to post to event</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.nxevent_destroy">
<span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">nxevent_destroy</span></span></span><span class="sig-paren">(</span><span class="pre">FAR</span><span class="w"> </span><span class="n"><span class="pre">nxevent_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">event</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.nxevent_destroy" title="Permalink to this definition"></a><br /></dt>
<dd><p>This function is used to destroy the event.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>event</strong> – Address of the event object</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.nxevent_reset">
<span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">nxevent_reset</span></span></span><span class="sig-paren">(</span><span class="pre">FAR</span><span class="w"> </span><span class="n"><span class="pre">nxevent_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">event</span></span>, <span class="n"><span class="pre">nxevent_mask_t</span></span><span class="w"> </span><span class="n"><span class="pre">events</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.nxevent_reset" title="Permalink to this definition"></a><br /></dt>
<dd><p>Reset events mask to a specific value.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>event</strong> – Address of the event object</p></li>
<li><p><strong>events</strong> – Set of events to post to event</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.nxevent_post">
<span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">nxevent_post</span></span></span><span class="sig-paren">(</span><span class="pre">FAR</span><span class="w"> </span><span class="n"><span class="pre">nxevent_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">event</span></span>, <span class="n"><span class="pre">nxevent_mask_t</span></span><span class="w"> </span><span class="n"><span class="pre">events</span></span>, <span class="n"><span class="pre">nxevent_flags_t</span></span><span class="w"> </span><span class="n"><span class="pre">eflags</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.nxevent_post" title="Permalink to this definition"></a><br /></dt>
<dd><p>Post one or more events to an event object.</p>
<p>This routine posts one or more events to an event object. All tasks
waiting on the event object event whose waiting conditions become
met by this posting immediately unpend.</p>
<p>Posting differs from setting in that posted events are merged together
with the current set of events tracked by the event object.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>event</strong> – Address of the event object</p></li>
<li><p><strong>events</strong> – Set of events to post to event
Set events to 0 will be considered as any,
waking up the waiting thread immediately.</p></li>
<li><p><strong>eflags</strong> – Events flags</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.nxevent_wait">
<span class="n"><span class="pre">nxevent_mask_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">nxevent_wait</span></span></span><span class="sig-paren">(</span><span class="pre">FAR</span><span class="w"> </span><span class="n"><span class="pre">nxevent_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">event</span></span>, <span class="n"><span class="pre">nxevent_mask_t</span></span><span class="w"> </span><span class="n"><span class="pre">events</span></span>, <span class="n"><span class="pre">nxevent_flags_t</span></span><span class="w"> </span><span class="n"><span class="pre">eflags</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.nxevent_wait" title="Permalink to this definition"></a><br /></dt>
<dd><p>Wait for all of the specified events.</p>
<p>This routine waits on event object event until all of the specified
events have been delivered to the event object. A thread may wait on
up to 32 distinctly numbered events that are expressed as bits in a
single 32-bit word.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>event</strong> – Address of the event object</p></li>
<li><p><strong>events</strong> – Set of events to wait, 0 will indicate wait from any events</p></li>
<li><p><strong>eflags</strong> – Events flags</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.nxevent_tickwait">
<span class="n"><span class="pre">nxevent_mask_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">nxevent_tickwait</span></span></span><span class="sig-paren">(</span><span class="pre">FAR</span><span class="w"> </span><span class="n"><span class="pre">nxevent_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">event</span></span>, <span class="n"><span class="pre">nxevent_mask_t</span></span><span class="w"> </span><span class="n"><span class="pre">events</span></span>, <span class="n"><span class="pre">nxevent_flags_t</span></span><span class="w"> </span><span class="n"><span class="pre">eflags</span></span>, <span class="n"><span class="pre">uint32_t</span></span><span class="w"> </span><span class="n"><span class="pre">delay</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.nxevent_tickwait" title="Permalink to this definition"></a><br /></dt>
<dd><p>Wait for all of the specified events for the specified tick time.</p>
<p>This routine waits on event object event until all of the specified
events have been delivered to the event object, or the maximum wait time
timeout has expired. A thread may wait on up to 32 distinctly numbered
events that are expressed as bits in a single 32-bit word.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>event</strong> – Address of the event object.</p></li>
<li><p><strong>events</strong> – Set of events to wait, 0 will indicate wait from any events</p></li>
<li><p><strong>eflags</strong> – Events flags</p></li>
<li><p><strong>delay</strong> – Ticks to wait from the start time until the event is posted,
If ticks is zero, then this function is equivalent to nxevent_trywait().</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.nxevent_trywait">
<span class="n"><span class="pre">nxevent_mask_t</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">nxevent_trywait</span></span></span><span class="sig-paren">(</span><span class="pre">FAR</span><span class="w"> </span><span class="n"><span class="pre">nxevent_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">event</span></span>, <span class="n"><span class="pre">nxevent_mask_t</span></span><span class="w"> </span><span class="n"><span class="pre">events</span></span>, <span class="n"><span class="pre">nxevent_flags_t</span></span><span class="w"> </span><span class="n"><span class="pre">eflags</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.nxevent_trywait" title="Permalink to this definition"></a><br /></dt>
<dd><p>Try wait for all of the specified events.</p>
<p>This routine try to waits on event object event if any of the specified
events have been delivered to the event object. A thread may wait on
up to 32 distinctly numbered events that are expressed as bits in a
single 32-bit word.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>event</strong> – Address of the event object</p></li>
<li><p><strong>events</strong> – Set of events to wait, 0 will indicate wait from any events</p></li>
<li><p><strong>eflags</strong> – Events flags</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.nxevent_open">
<span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">nxevent_open</span></span></span><span class="sig-paren">(</span><span class="pre">FAR</span><span class="w"> </span><span class="n"><span class="pre">nxevent_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">event</span></span>, <span class="pre">FAR</span><span class="w"> </span><span class="k"><span class="pre">const</span></span><span class="w"> </span><span class="kt"><span class="pre">char</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">name</span></span>, <span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">oflags</span></span>, <span class="p"><span class="pre">...</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.nxevent_open" title="Permalink to this definition"></a><br /></dt>
<dd><p>This function establishes a connection between named event groups and a
task. the task may reference the event group associated with name using
the address returned by this call. The event group may be used in a
subsequent calls to nxevent_wait(), or nxevent_post(). And the event
group remains usable until the event group is closed by a successful
call to nxevent_close().</p>
<p>If a task makes multiple calls to event_open() with the same name, then
the same event group address is returned.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>event</strong> – Location to return the event group reference.</p></li>
<li><p><strong>name</strong> – Event group name.</p></li>
<li><p><strong>oflags</strong><p>Event group creation options. This may the following settings:</p>
<ul>
<li><p><code class="docutils literal notranslate"><span class="pre">oflags</span></code> = 0: Connect to the event group only if it already exists.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">oflags</span></code> = O_CREAT: Connect to the event group if it exists, otherwise create the event group.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">oflags</span></code> = O_CREAT|O_EXCL: Create a new event group unless already exists.</p></li>
</ul>
</p></li>
<li><p><strong>...</strong><dl class="simple">
<dt>Optional parameters. When the O_CREAT flag is specified,</dt><dd><p>the two optional parameters are expected:</p>
</dd>
</dl>
<ul>
<li><dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">mode</span></code>: The mode parameter is of type mode_t. This parameter is</dt><dd><p>required but not used in the present implementation.</p>
</dd>
</dl>
</li>
<li><dl class="simple">
<dt><code class="docutils literal notranslate"><span class="pre">events</span></code>: The events parameter is type unsigned. The event group</dt><dd><p>is created with an initial value of <code class="docutils literal notranslate"><span class="pre">events</span></code>.</p>
</dd>
</dl>
</li>
</ul>
</p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>0 (OK), or negated errno if unsuccessful.</p>
</dd>
</dl>
</dd></dl>
<dl class="c function">
<dt class="sig sig-object c" id="c.nxevent_close">
<span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">nxevent_close</span></span></span><span class="sig-paren">(</span><span class="pre">FAR</span><span class="w"> </span><span class="n"><span class="pre">nxevent_t</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="n"><span class="pre">event</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.nxevent_close" title="Permalink to this definition"></a><br /></dt>
<dd><blockquote>
<div><p>This function is called to indicate that the calling task is finished
with the specified named event group. The event_close() deallocates
any system resources allocated by the system for this named event group.</p>
</div></blockquote>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>event</strong> – event descriptor</p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>0 (OK), or negated errno if unsuccessful.</p>
</dd>
</dl>
</dd></dl>
</section>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="wqueue.html" class="btn btn-neutral float-left" title="Work Queues" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="../../faq/index.html" class="btn btn-neutral float-right" title="FAQ" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2023, The Apache Software Foundation.</p>
</div>
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>