blob: 82dad729445b2f711979087f912413656d83cbc1 [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.18.1: http://docutils.sourceforge.net/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>OS Data Structures &mdash; NuttX latest documentation</title>
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../_static/copybutton.css" type="text/css" />
<link rel="stylesheet" href="../../_static/tabs.css" type="text/css" />
<link rel="stylesheet" href="../../_static/custom.css" type="text/css" />
<link rel="shortcut icon" href="../../_static/favicon.ico"/>
<!--[if lt IE 9]>
<script src="../../_static/js/html5shiv.min.js"></script>
<![endif]-->
<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/js/theme.js"></script>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="Architecture APIs" href="../os/index.html" />
<link rel="prev" title="Logging" href="13_logging.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>
</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 current"><a class="reference internal" href="../index.html">API Reference</a><ul class="current">
<li class="toctree-l2 current"><a class="reference internal" href="index.html">Userspace API</a><ul class="current">
<li class="toctree-l3"><a class="reference internal" href="01_task_control.html">Task Control Interfaces</a></li>
<li class="toctree-l3"><a class="reference internal" href="02_task_scheduling.html">Task Scheduling Interfaces</a></li>
<li class="toctree-l3"><a class="reference internal" href="03_task_control.html">Task Control Interfaces</a></li>
<li class="toctree-l3"><a class="reference internal" href="04_message_queue.html">Named Message Queue Interfaces</a></li>
<li class="toctree-l3"><a class="reference internal" href="05_counting_semaphore.html">Counting Semaphore Interfaces</a></li>
<li class="toctree-l3"><a class="reference internal" href="06_clocks_timers.html">Clocks and Timers</a></li>
<li class="toctree-l3"><a class="reference internal" href="07_signals.html">Signal Interfaces</a></li>
<li class="toctree-l3"><a class="reference internal" href="08_pthread.html">Pthread Interfaces</a></li>
<li class="toctree-l3"><a class="reference internal" href="09_env_vars.html">Environment Variables</a></li>
<li class="toctree-l3"><a class="reference internal" href="10_filesystem.html">File System Interfaces</a></li>
<li class="toctree-l3"><a class="reference internal" href="11_network.html">Network Interfaces</a></li>
<li class="toctree-l3"><a class="reference internal" href="12_shared_memory.html">Shared Memory Interfaces</a></li>
<li class="toctree-l3"><a class="reference internal" href="13_boardctl.html">Board IOCTL</a></li>
<li class="toctree-l3"><a class="reference internal" href="13_logging.html">Logging</a></li>
<li class="toctree-l3 current"><a class="current reference internal" href="#">OS Data Structures</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#scalar-types">Scalar Types</a></li>
<li class="toctree-l4"><a class="reference internal" href="#hidden-interface-structures">Hidden Interface Structures</a></li>
<li class="toctree-l4"><a class="reference internal" href="#access-to-the-errno-variable">Access to the <code class="docutils literal notranslate"><span class="pre">errno</span></code> Variable</a></li>
<li class="toctree-l4"><a class="reference internal" href="#user-interface-structures">User Interface Structures</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../os/index.html">Architecture APIs</a></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="../../guides/index.html">Guides</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../glossary.html">Glossary</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">Userspace API</a></li>
<li class="breadcrumb-item active">OS Data Structures</li>
<li class="wy-breadcrumbs-aside">
<a href="../../_sources/reference/user/structures.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="os-data-structures">
<h1>OS Data Structures<a class="headerlink" href="#os-data-structures" title="Permalink to this heading"></a></h1>
<section id="scalar-types">
<h2>Scalar Types<a class="headerlink" href="#scalar-types" title="Permalink to this heading"></a></h2>
<p>Many of the types used to communicate with NuttX are simple scalar
types. These types are used to provide architecture independence of the
OS from the application. The scalar types used at the NuttX interface
include:</p>
<dl class="c type">
<dt class="sig sig-object c" id="c.pid_t">
<span class="k"><span class="pre">type</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">pid_t</span></span></span><a class="headerlink" href="#c.pid_t" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c type">
<dt class="sig sig-object c" id="c.size_t">
<span class="k"><span class="pre">type</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">size_t</span></span></span><a class="headerlink" href="#c.size_t" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c type">
<dt class="sig sig-object c" id="c.sigset_t">
<span class="k"><span class="pre">type</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">sigset_t</span></span></span><a class="headerlink" href="#c.sigset_t" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c type">
<dt class="sig sig-object c" id="c.time_t">
<span class="k"><span class="pre">type</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">time_t</span></span></span><a class="headerlink" href="#c.time_t" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</section>
<section id="hidden-interface-structures">
<h2>Hidden Interface Structures<a class="headerlink" href="#hidden-interface-structures" title="Permalink to this heading"></a></h2>
<p>Several of the types used to interface with NuttX are structures that
are intended to be hidden from the application. From the standpoint of
the application, these structures (and structure pointers) should be
treated as simple handles to reference OS resources. These hidden
structures include:</p>
<dl class="c struct">
<dt class="sig sig-object c" id="c.tcb_s">
<span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">tcb_s</span></span></span><a class="headerlink" href="#c.tcb_s" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c type">
<dt class="sig sig-object c" id="c.mqd_t">
<span class="k"><span class="pre">type</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">mqd_t</span></span></span><a class="headerlink" href="#c.mqd_t" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c type">
<dt class="sig sig-object c" id="c.sem_t">
<span class="k"><span class="pre">type</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">sem_t</span></span></span><a class="headerlink" href="#c.sem_t" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c type">
<dt class="sig sig-object c" id="c.pthread_key_t">
<span class="k"><span class="pre">type</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">pthread_key_t</span></span></span><a class="headerlink" href="#c.pthread_key_t" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<p>In order to maintain portability, applications should not reference
specific elements within these hidden structures. These hidden
structures will not be described further in this user’s manual.</p>
</section>
<section id="access-to-the-errno-variable">
<h2>Access to the <code class="docutils literal notranslate"><span class="pre">errno</span></code> Variable<a class="headerlink" href="#access-to-the-errno-variable" title="Permalink to this heading"></a></h2>
<p>A pointer to the thread-specific <code class="docutils literal notranslate"><span class="pre">errno</span></code> value is available through a
function call:</p>
<dl class="c function">
<dt class="sig sig-object c" id="c.__errno">
<span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">__errno</span></span></span><span class="sig-paren">(</span><span class="kt"><span class="pre">void</span></span><span class="sig-paren">)</span><a class="headerlink" href="#c.__errno" title="Permalink to this definition"></a><br /></dt>
<dd><p><code class="docutils literal notranslate"><span class="pre">__errno()</span></code> returns a pointer to the thread-specific
<code class="docutils literal notranslate"><span class="pre">errno</span></code> value. Note that the symbol <code class="docutils literal notranslate"><span class="pre">errno</span></code> is defined to be
<code class="docutils literal notranslate"><span class="pre">__errno()</span></code> so that the usual access by referencing the symbol
<code class="docutils literal notranslate"><span class="pre">errno</span></code> will work as expected.</p>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;errno.h&gt;</span>
<span class="cp">#define errno *__errno()</span>
<span class="kt">int</span><span class="w"> </span><span class="o">*</span><span class="nf">__errno</span><span class="p">(</span><span class="kt">void</span><span class="p">);</span>
</pre></div>
</div>
<p>There is a unique, private <code class="docutils literal notranslate"><span class="pre">errno</span></code> value for each NuttX task. However,
the implementation of <code class="docutils literal notranslate"><span class="pre">errno</span></code> differs somewhat from the use of
<code class="docutils literal notranslate"><span class="pre">errno</span></code> in most multi-threaded process environments: In NuttX, each
pthread will also have its own private copy of <code class="docutils literal notranslate"><span class="pre">errno</span></code> and the
<code class="docutils literal notranslate"><span class="pre">errno</span></code> will not be shared between pthreads. This is, perhaps,
non-standard but promotes better thread independence.</p>
<blockquote>
<div><dl class="field-list simple">
<dt class="field-odd">return<span class="colon">:</span></dt>
<dd class="field-odd"><p>A pointer to the thread-specific <code class="docutils literal notranslate"><span class="pre">errno</span></code> value.</p>
</dd>
</dl>
</div></blockquote>
</dd></dl>
</section>
<section id="user-interface-structures">
<h2>User Interface Structures<a class="headerlink" href="#user-interface-structures" title="Permalink to this heading"></a></h2>
<dl class="c type">
<dt class="sig sig-object c" id="c.main_t">
<span class="k"><span class="pre">typedef</span></span><span class="w"> </span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="p"><span class="pre">(</span></span><span class="p"><span class="pre">*</span></span><span class="sig-name descname"><span class="n"><span class="pre">main_t</span></span></span><span class="p"><span class="pre">)</span></span><span class="p"><span class="pre">(</span></span><span class="kt"><span class="pre">int</span></span><span class="w"> </span><span class="n"><span class="pre">argc</span></span><span class="p"><span class="pre">,</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">argv</span></span><span class="p"><span class="pre">[</span></span><span class="p"><span class="pre">]</span></span><span class="p"><span class="pre">)</span></span><a class="headerlink" href="#c.main_t" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<p><a class="reference internal" href="#c.main_t" title="main_t"><code class="xref c c-type docutils literal notranslate"><span class="pre">main_t</span></code></a> defines the type of a task entry point. <a class="reference internal" href="#c.main_t" title="main_t"><code class="xref c c-type docutils literal notranslate"><span class="pre">main_t</span></code></a> is declared in
<code class="docutils literal notranslate"><span class="pre">sys/types.h</span></code>.</p>
<dl class="c struct">
<dt class="sig sig-object c" id="c.sched_param">
<span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">sched_param</span></span></span><a class="headerlink" href="#c.sched_param" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<p>This structure is used to pass scheduling priorities to and from NuttX:</p>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="k">struct</span><span class="w"> </span><span class="nc">sched_param</span>
<span class="p">{</span>
<span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">sched_priority</span><span class="p">;</span>
<span class="p">};</span>
</pre></div>
</div>
<dl class="c struct">
<dt class="sig sig-object c" id="c.timespec">
<span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">timespec</span></span></span><a class="headerlink" href="#c.timespec" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<p>This structure is used to pass timing information between the NuttX and
a user application:</p>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="k">struct</span><span class="w"> </span><span class="nc">timespec</span>
<span class="p">{</span>
<span class="w"> </span><span class="kt">time_t</span><span class="w"> </span><span class="n">tv_sec</span><span class="p">;</span><span class="w"> </span><span class="cm">/* Seconds */</span>
<span class="w"> </span><span class="kt">long</span><span class="w"> </span><span class="n">tv_nsec</span><span class="p">;</span><span class="w"> </span><span class="cm">/* Nanoseconds */</span>
<span class="p">};</span>
</pre></div>
</div>
<dl class="c struct">
<dt class="sig sig-object c" id="c.mq_attr">
<span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">mq_attr</span></span></span><a class="headerlink" href="#c.mq_attr" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<p>This structure is used to communicate message queue attributes between
NuttX and a MoBY application:</p>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="k">struct</span><span class="w"> </span><span class="nc">mq_attr</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">mq_maxmsg</span><span class="p">;</span><span class="w"> </span><span class="cm">/* Max number of messages in queue */</span>
<span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">mq_msgsize</span><span class="p">;</span><span class="w"> </span><span class="cm">/* Max message size */</span>
<span class="w"> </span><span class="kt">unsigned</span><span class="w"> </span><span class="n">mq_flags</span><span class="p">;</span><span class="w"> </span><span class="cm">/* Queue flags */</span>
<span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">mq_curmsgs</span><span class="p">;</span><span class="w"> </span><span class="cm">/* Number of messages currently in queue */</span>
<span class="p">};</span>
</pre></div>
</div>
<dl class="c struct">
<dt class="sig sig-object c" id="c.sigaction">
<span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">sigaction</span></span></span><br /></dt>
<dd></dd></dl>
<p>The following structure defines the action to take for given signal:</p>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="k">struct</span><span class="w"> </span><span class="nc">sigaction</span>
<span class="p">{</span>
<span class="w"> </span><span class="k">union</span>
<span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="p">(</span><span class="o">*</span><span class="n">_sa_handler</span><span class="p">)(</span><span class="kt">int</span><span class="p">);</span>
<span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="p">(</span><span class="o">*</span><span class="n">_sa_sigaction</span><span class="p">)(</span><span class="kt">int</span><span class="p">,</span><span class="w"> </span><span class="kt">siginfo_t</span><span class="w"> </span><span class="o">*</span><span class="p">,</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="p">);</span>
<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="n">sa_u</span><span class="p">;</span>
<span class="w"> </span><span class="kt">sigset_t</span><span class="w"> </span><span class="n">sa_mask</span><span class="p">;</span>
<span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">sa_flags</span><span class="p">;</span>
<span class="p">};</span>
<span class="cp">#define sa_handler sa_u._sa_handler</span>
<span class="cp">#define sa_sigaction sa_u._sa_sigaction</span>
</pre></div>
</div>
<dl class="c struct">
<dt class="sig sig-object c" id="c.siginfo">
<span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">siginfo</span></span></span><a class="headerlink" href="#c.siginfo" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c type">
<dt class="sig sig-object c" id="c.siginfo_t">
<span class="k"><span class="pre">type</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">siginfo_t</span></span></span><a class="headerlink" href="#c.siginfo_t" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<p>The following types is used to pass parameters to/from signal handlers:</p>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="k">typedef</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">siginfo</span>
<span class="p">{</span>
<span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">si_signo</span><span class="p">;</span>
<span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">si_code</span><span class="p">;</span>
<span class="w"> </span><span class="k">union</span><span class="w"> </span><span class="nc">sigval</span><span class="w"> </span><span class="n">si_value</span><span class="p">;</span>
<span class="p">}</span><span class="w"> </span><span class="kt">siginfo_t</span><span class="p">;</span>
</pre></div>
</div>
<dl class="c union">
<dt class="sig sig-object c" id="c.sigval">
<span class="k"><span class="pre">union</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">sigval</span></span></span><a class="headerlink" href="#c.sigval" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<p>This defines the type of the struct siginfo si_value field and is used
to pass parameters with signals.</p>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="k">union</span><span class="w"> </span><span class="nc">sigval</span>
<span class="p">{</span>
<span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">sival_int</span><span class="p">;</span>
<span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="n">sival_ptr</span><span class="p">;</span>
<span class="p">};</span>
</pre></div>
</div>
<dl class="c struct">
<dt class="sig sig-object c" id="c.sigevent">
<span class="k"><span class="pre">struct</span></span><span class="w"> </span><span class="sig-name descname"><span class="n"><span class="pre">sigevent</span></span></span><a class="headerlink" href="#c.sigevent" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<p>The following is used to attach a signal to a message queue to notify a
task when a message is available on a queue.</p>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="k">struct</span><span class="w"> </span><span class="nc">sigevent</span>
<span class="p">{</span>
<span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">sigev_signo</span><span class="p">;</span>
<span class="w"> </span><span class="k">union</span><span class="w"> </span><span class="nc">sigval</span><span class="w"> </span><span class="n">sigev_value</span><span class="p">;</span>
<span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">sigev_notify</span><span class="p">;</span>
<span class="p">};</span>
</pre></div>
</div>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="13_logging.html" class="btn btn-neutral float-left" title="Logging" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="../os/index.html" class="btn btn-neutral float-right" title="Architecture APIs" 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 2020, The Apache Software Foundation.</p>
</div>
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>