| <!-- |
| 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 — 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"><errno.h></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>© Copyright 2020, The Apache Software Foundation.</p> |
| </div> |
| |
| |
| |
| </footer> |
| </div> |
| </div> |
| </section> |
| </div> |
| <script> |
| jQuery(function () { |
| SphinxRtdTheme.Navigation.enable(true); |
| }); |
| </script> |
| |
| </body> |
| </html> |