blob: 3972fa99ab9fbe3879c634bd9ef74bdc5bfbfdde [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>Versioning and Task Names &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/sphinx_collapse.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="Logging to a RAM Buffer" href="logging_rambuffer.html" />
<link rel="prev" title="Kernel Threads with Custom Stacks" href="kernel_threads_with_custom_stacks.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"><a class="reference internal" href="../reference/index.html">API Reference</a></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 current"><a class="reference internal" href="index.html">Guides</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="nfs.html">NFS Client How-To</a></li>
<li class="toctree-l2"><a class="reference internal" href="nix_flake.html">Nix Flake for Reproducible Development</a></li>
<li class="toctree-l2"><a class="reference internal" href="usbtrace.html">USB Device Trace</a></li>
<li class="toctree-l2"><a class="reference internal" href="simulator.html">Simulator</a></li>
<li class="toctree-l2"><a class="reference internal" href="rndis.html">How to use RNDIS</a></li>
<li class="toctree-l2"><a class="reference internal" href="drivers.html">Drivers</a></li>
<li class="toctree-l2"><a class="reference internal" href="cpp_cmake.html">C++ Example using CMake</a></li>
<li class="toctree-l2"><a class="reference internal" href="pysimcoder.html">pysimCoder integration with NuttX</a></li>
<li class="toctree-l2"><a class="reference internal" href="customboards.html">Custom Boards How-To</a></li>
<li class="toctree-l2"><a class="reference internal" href="customapps.html">Custom Apps How-to</a></li>
<li class="toctree-l2"><a class="reference internal" href="citests.html">Running CI Test Locally</a></li>
<li class="toctree-l2"><a class="reference internal" href="zerolatencyinterrupts.html">High Performance: Zero Latency Interrupts, Maskable Nested Interrupts</a></li>
<li class="toctree-l2"><a class="reference internal" href="fortify.html">Fortify</a></li>
<li class="toctree-l2"><a class="reference internal" href="nestedinterrupts.html">Nested Interrupts</a></li>
<li class="toctree-l2"><a class="reference internal" href="ofloader.html">Open Flash Loader</a></li>
<li class="toctree-l2"><a class="reference internal" href="testingtcpip.html">Testing TCP/IP Network Stacks</a></li>
<li class="toctree-l2"><a class="reference internal" href="automounter.html">Auto-Mounter</a></li>
<li class="toctree-l2"><a class="reference internal" href="stm32nullpointer.html">STM32 Null Pointer Detection</a></li>
<li class="toctree-l2"><a class="reference internal" href="stm32ccm.html">STM32 CCM Allocator</a></li>
<li class="toctree-l2"><a class="reference internal" href="etcromfs.html">etc romfs</a></li>
<li class="toctree-l2"><a class="reference internal" href="thread_local_storage.html">Thread Local Storage</a></li>
<li class="toctree-l2"><a class="reference internal" href="devicetree.html">Device Tree</a></li>
<li class="toctree-l2"><a class="reference internal" href="changing_systemclockconfig.html">Changing the System Clock Configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="usingkernelthreads.html">Using Kernel Threads</a></li>
<li class="toctree-l2"><a class="reference internal" href="armv7m_runtimestackcheck.html">ARMv7-M Run Time Stack Checking</a></li>
<li class="toctree-l2"><a class="reference internal" href="include_files_board_h.html">Including Files in board.h</a></li>
<li class="toctree-l2"><a class="reference internal" href="specialstuff_in_nuttxheaderfiles.html">Why can’t I put my special stuff in NuttX header files?</a></li>
<li class="toctree-l2"><a class="reference internal" href="kernel_threads_with_custom_stacks.html">Kernel Threads with Custom Stacks</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Versioning and Task Names</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#question">Question</a></li>
<li class="toctree-l3"><a class="reference internal" href="#answer">Answer</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#versioning">Versioning</a></li>
<li class="toctree-l4"><a class="reference internal" href="#task-name-size">Task Name Size</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="logging_rambuffer.html">Logging to a RAM Buffer</a></li>
<li class="toctree-l2"><a class="reference internal" href="ipv6.html">IPv6</a></li>
<li class="toctree-l2"><a class="reference internal" href="integrate_newlib.html">Integrating with Newlib</a></li>
<li class="toctree-l2"><a class="reference internal" href="protected_build.html">NuttX Protected Build</a></li>
<li class="toctree-l2"><a class="reference internal" href="platform_directories.html">Platform Directories</a></li>
<li class="toctree-l2"><a class="reference internal" href="port_drivers_to_stm32f7.html">Porting Drivers to the STM32 F7</a></li>
<li class="toctree-l2"><a class="reference internal" href="semihosting.html">Semihosting</a></li>
<li class="toctree-l2"><a class="reference internal" href="renode.html">Run NuttX on Renode</a></li>
<li class="toctree-l2"><a class="reference internal" href="signal_events_interrupt_handlers.html">Signaling Events from Interrupt Handlers</a></li>
<li class="toctree-l2"><a class="reference internal" href="signaling_sem_priority_inheritance.html">Signaling Semaphores and Priority Inheritance</a></li>
<li class="toctree-l2"><a class="reference internal" href="smaller_vector_tables.html">Smaller Vector Tables</a></li>
<li class="toctree-l2"><a class="reference internal" href="port.html">How to port</a></li>
<li class="toctree-l2"><a class="reference internal" href="updating_release_system_elf.html">Updating a Release System with ELF Programs</a></li>
<li class="toctree-l2"><a class="reference internal" href="partially_linked_elf.html">ELF Programs – With Symbol Tables</a></li>
<li class="toctree-l2"><a class="reference internal" href="fully_linked_elf.html">ELF Programs – No Symbol Tables</a></li>
<li class="toctree-l2"><a class="reference internal" href="building_nuttx_with_app_out_of_src_tree.html">Building NuttX with Applications Outside the Source Tree</a></li>
<li class="toctree-l2"><a class="reference internal" href="building_uclibcpp.html">Building uClibc++</a></li>
<li class="toctree-l2"><a class="reference internal" href="custom_app_directories.html">Custom Application Directories</a></li>
<li class="toctree-l2"><a class="reference internal" href="multiple_nsh_sessions.html">Multiple NSH Sessions</a></li>
<li class="toctree-l2"><a class="reference internal" href="nsh_network_link_management.html">NSH Network Link Management</a></li>
<li class="toctree-l2"><a class="reference internal" href="ram_rom_disks.html">RAM Disks and ROM Disks</a></li>
<li class="toctree-l2"><a class="reference internal" href="reading_can_msgs.html">Reading CAN Messages</a></li>
<li class="toctree-l2"><a class="reference internal" href="remove_device_drivers_nsh.html">Removing Device Drivers with NSH</a></li>
<li class="toctree-l2"><a class="reference internal" href="rust.html">Rust in NuttX</a></li>
<li class="toctree-l2"><a class="reference internal" href="optee.html">Interfacing with OP-TEE</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../standards/index.html">Standards</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">Guides</a></li>
<li class="breadcrumb-item active">Versioning and Task Names</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/apache/nuttx/blob/master/Documentation/guides/versioning_and_task_names.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="versioning-and-task-names">
<h1>Versioning and Task Names<a class="headerlink" href="#versioning-and-task-names" title="Permalink to this heading"></a></h1>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>Migrated from:
<a class="reference external" href="https://cwiki.apache.org/confluence/display/NUTTX/Versioning+and+Task+Names">https://cwiki.apache.org/confluence/display/NUTTX/Versioning+and+Task+Names</a></p>
<p>And also seems outdated.</p>
</div>
<section id="question">
<h2>Question<a class="headerlink" href="#question" title="Permalink to this heading"></a></h2>
<p>I have strange output from the NSH:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>nsh&gt;<span class="w"> </span>sysinfo
System<span class="w"> </span>Information:
<span class="w"> </span>NuttX<span class="w"> </span>Version:<span class="w"> </span><span class="m">0</span>.0<span class="w"> </span>Build:<span class="w"> </span><span class="m">0</span>
<span class="w"> </span>System<span class="w"> </span>Time:<span class="w"> </span><span class="m">1325809119</span><span class="w"> </span><span class="o">[</span>s<span class="o">]</span><span class="w"> </span>UTC
nsh&gt;<span class="w"> </span>ps
PID<span class="w"> </span>PRI<span class="w"> </span>SCHD<span class="w"> </span>TYPE<span class="w"> </span>NP<span class="w"> </span>STATE<span class="w"> </span>NAME
<span class="w"> </span><span class="m">0</span><span class="w"> </span><span class="m">0</span><span class="w"> </span>FIFO<span class="w"> </span>KTHREAD<span class="w"> </span>READY<span class="w"> </span>&lt;noname&gt;<span class="o">()</span>
<span class="w"> </span><span class="m">1</span><span class="w"> </span><span class="m">50</span><span class="w"> </span>FIFO<span class="w"> </span>KTHREAD<span class="w"> </span>WAITSIG<span class="w"> </span>&lt;noname&gt;<span class="o">()</span>
<span class="w"> </span><span class="m">2</span><span class="w"> </span><span class="m">100</span><span class="w"> </span>FIFO<span class="w"> </span>TASK<span class="w"> </span>RUNNING<span class="w"> </span>&lt;noname&gt;<span class="o">()</span>
</pre></div>
</div>
<p>No NAME and no version / build number</p>
</section>
<section id="answer">
<h2>Answer<a class="headerlink" href="#answer" title="Permalink to this heading"></a></h2>
<p>This is probably normal behavior. There are two separate, unrelated issues here.</p>
<section id="versioning">
<span id="id1"></span><h3>Versioning<a class="headerlink" href="#versioning" title="Permalink to this heading"></a></h3>
<p>There are two different ways to get NuttX: (1) You can download the versioned
releases at <a class="reference external" href="https://bitbucket.org/nuttx/nuttx/downloads">https://bitbucket.org/nuttx/nuttx/downloads</a>, or you can (2) take
un-versioned snapshots from the GIT repository at
<a class="reference external" href="https://github.com/apache/nuttx">https://github.com/apache/nuttx</a>. Since you have no version information,
I am assuming that you are using a un-versioned copy.</p>
<p>The version number you are looking at comes from the header file
<code class="docutils literal notranslate"><span class="pre">nuttx/include/nuttx/version.h</span></code>. That header file was created at build time
from a hidden file that you can find in the top-level nuttx directory called
.version. For NuttX-7.10, that file looks like this:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="ch">#!/bin/bash</span>
<span class="nv">CONFIG_VERSION_STRING</span><span class="o">=</span><span class="s2">&quot;7.10&quot;</span>
<span class="nv">CONFIG_VERSION_MAJOR</span><span class="o">=</span><span class="m">7</span>
<span class="nv">CONFIG_VERSION_MINOR</span><span class="o">=</span><span class="m">10</span>
<span class="nv">CONFIG_VERSION_BUILD</span><span class="o">=</span><span class="s2">&quot;85981b37acc215ab795ef4ea4045f3e85a49a7af&quot;</span>
</pre></div>
</div>
<p>The <code class="docutils literal notranslate"><span class="pre">.version</span></code> file does not exist in the GIT repository; it is was added to
the <code class="docutils literal notranslate"><span class="pre">nuttx-7.10.tar.gz</span></code> tarball when the NuttX-7.10 version was created.</p>
<p>The <code class="docutils literal notranslate"><span class="pre">version.h</span></code> header file is then generated by <code class="docutils literal notranslate"><span class="pre">tools/mkversion</span></code> the
first time that you build the RTOS. That tool generates this <code class="docutils literal notranslate"><span class="pre">version.h</span></code>
header file for the above <code class="docutils literal notranslate"><span class="pre">.version</span></code> file:</p>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="cm">/* version.h -- Autogenerated! Do not edit. */</span>
<span class="cp">#ifndef __INCLUDE_NUTTX_VERSION_H</span>
<span class="cp">#define __INCLUDE_NUTTX_VERSION_H</span>
<span class="cp">#define CONFIG_VERSION_STRING &quot;7.10&quot;</span>
<span class="cp">#define CONFIG_VERSION_MAJOR 7</span>
<span class="cp">#define CONFIG_VERSION_MINOR 10</span>
<span class="cp">#define CONFIG_VERSION_BUILD &quot;85981b37acc215ab795ef4ea4045f3e85a49a7af&quot;</span>
<span class="cp">#define CONFIG_VERSION ((CONFIG_VERSION_MAJOR &lt;&lt; 8) | (CONFIG_VERSION_MINOR))</span>
<span class="cp">#endif </span><span class="cm">/* __INCLUDE_NUTTX_VERSION_H */</span>
</pre></div>
</div>
<p>And that is where the sysinfo command gets the version information that it
prints.</p>
<p>If you are using an un-versioned snapshot of NuttX from the GIT repository,
then the <code class="docutils literal notranslate"><span class="pre">.version</span></code> file will not exist. The make system will check if there
is <code class="docutils literal notranslate"><span class="pre">.version</span></code> file every time you build. If there is no <code class="docutils literal notranslate"><span class="pre">.version</span></code> in the
top-level nuttx directory, then the make system will use the script at
<code class="docutils literal notranslate"><span class="pre">tools/version.sh</span></code> to create one with version 0.0:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="k">$(</span>TOPDIR<span class="k">)</span>/.version:
<span class="w"> </span><span class="k">$(</span>Q<span class="k">)</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="o">[</span><span class="w"> </span>!<span class="w"> </span>-f<span class="w"> </span>.version<span class="w"> </span><span class="o">]</span><span class="p">;</span><span class="w"> </span><span class="k">then</span><span class="w"> </span><span class="se">\</span>
<span class="w"> </span><span class="nb">echo</span><span class="w"> </span><span class="s2">&quot;No .version file found, creating one&quot;</span><span class="p">;</span><span class="w"> </span><span class="se">\</span>
<span class="w"> </span>tools/version.sh<span class="w"> </span>-v<span class="w"> </span><span class="m">0</span>.0<span class="w"> </span>-b<span class="w"> </span><span class="m">0</span><span class="w"> </span>.version<span class="p">;</span><span class="w"> </span><span class="se">\</span>
<span class="w"> </span>chmod<span class="w"> </span><span class="m">755</span><span class="w"> </span>.version<span class="p">;</span><span class="w"> </span><span class="se">\</span>
<span class="w"> </span><span class="k">fi</span>
</pre></div>
</div>
<p>This is completely appropriate if you are using un-versioned code. You are,
however, free to edit the top-level <code class="docutils literal notranslate"><span class="pre">.version</span></code> file to generate any kind of
custom versioning information that you would like. It would, however,
probably be inappropriate to say you are using a released version when you
are not.</p>
</section>
<section id="task-name-size">
<h3>Task Name Size<a class="headerlink" href="#task-name-size" title="Permalink to this heading"></a></h3>
<p>This one is easy. The size of a task name is controlled by the following
setting in your <code class="docutils literal notranslate"><span class="pre">.config</span></code> file:</p>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="n">CONFIG_TASK_NAME_SIZE</span><span class="o">=</span><span class="mi">0</span>
</pre></div>
</div>
<p>It provides the maximum length of a task name. Zero, of course, then means no
task names are supported.</p>
</section>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="kernel_threads_with_custom_stacks.html" class="btn btn-neutral float-left" title="Kernel Threads with Custom Stacks" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="logging_rambuffer.html" class="btn btn-neutral float-right" title="Logging to a RAM Buffer" 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>