This is an automated email from the ASF dual-hosted git repository.
github-bot pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/nuttx-website.git
The following commit(s) were added to refs/heads/asf-site by this push:
new b0e8be374 Publishing web: c0bb376dae649378f137872f2791869ca6c6876c
docs: 85e8536fbe7f7544b26eaaedc4daa26641be49f0
b0e8be374 is described below
commit b0e8be37473229c8e96174e433cdcc3aa0a4a9c1
Author: chao an <[email protected]>
AuthorDate: Wed Jul 17 00:19:28 2024 +0000
Publishing web: c0bb376dae649378f137872f2791869ca6c6876c docs:
85e8536fbe7f7544b26eaaedc4daa26641be49f0
---
content/docs/10.0.0/index.html | 2 +-
content/docs/10.0.0/searchindex.js | 2 +-
content/docs/10.0.1/index.html | 2 +-
content/docs/10.0.1/searchindex.js | 2 +-
content/docs/10.1.0/index.html | 2 +-
content/docs/10.1.0/searchindex.js | 2 +-
content/docs/10.2.0/index.html | 2 +-
content/docs/10.2.0/searchindex.js | 2 +-
content/docs/10.3.0/index.html | 2 +-
content/docs/10.3.0/searchindex.js | 2 +-
content/docs/11.0.0/index.html | 2 +-
content/docs/11.0.0/searchindex.js | 2 +-
content/docs/12.0.0/index.html | 2 +-
content/docs/12.0.0/searchindex.js | 2 +-
content/docs/12.1.0/index.html | 2 +-
content/docs/12.1.0/searchindex.js | 2 +-
content/docs/12.2.0/index.html | 2 +-
content/docs/12.2.0/searchindex.js | 2 +-
content/docs/12.2.1/index.html | 2 +-
.../xtensa/esp32/boards/esp32-audio-kit/index.html | 2 +-
.../xtensa/esp32/boards/esp32-devkitc/index.html | 2 +-
content/docs/12.2.1/searchindex.js | 2 +-
content/docs/12.3.0/index.html | 2 +-
content/docs/12.3.0/searchindex.js | 2 +-
content/docs/12.4.0/index.html | 2 +-
content/docs/12.4.0/searchindex.js | 2 +-
content/docs/12.5.0/index.html | 2 +-
content/docs/12.5.0/searchindex.js | 2 +-
content/docs/12.5.1/index.html | 2 +-
content/docs/12.5.1/searchindex.js | 2 +-
content/docs/latest/_sources/guides/index.rst.txt | 1 +
.../_sources/guides/thread_local_storage.rst.txt | 44 ++++++++
content/docs/latest/glossary.html | 4 +-
content/docs/latest/guides/automounter.html | 1 +
content/docs/latest/guides/citests.html | 1 +
content/docs/latest/guides/coredump.html | 1 +
content/docs/latest/guides/cortexmhardfaults.html | 1 +
content/docs/latest/guides/cpp_cmake.html | 1 +
content/docs/latest/guides/customapps.html | 1 +
content/docs/latest/guides/customboards.html | 1 +
content/docs/latest/guides/drivers.html | 1 +
content/docs/latest/guides/etcromfs.html | 5 +-
content/docs/latest/guides/gdbwithpython.html | 1 +
content/docs/latest/guides/index.html | 5 +
content/docs/latest/guides/minidumpserver.html | 1 +
content/docs/latest/guides/nestedinterrupts.html | 1 +
content/docs/latest/guides/nfs.html | 1 +
content/docs/latest/guides/ofloader.html | 1 +
content/docs/latest/guides/pysimcoder.html | 1 +
content/docs/latest/guides/qemugdb.html | 1 +
content/docs/latest/guides/rndis.html | 1 +
content/docs/latest/guides/simulator.html | 1 +
content/docs/latest/guides/stackrecord.html | 1 +
content/docs/latest/guides/stm32ccm.html | 1 +
content/docs/latest/guides/stm32nullpointer.html | 1 +
content/docs/latest/guides/tasktrace.html | 1 +
content/docs/latest/guides/tasktraceinternal.html | 1 +
content/docs/latest/guides/tasktraceuser.html | 1 +
content/docs/latest/guides/testingtcpip.html | 1 +
...{stackrecord.html => thread_local_storage.html} | 120 +++++++--------------
content/docs/latest/guides/usbtrace.html | 1 +
.../docs/latest/guides/zerolatencyinterrupts.html | 1 +
content/docs/latest/index.html | 3 +-
content/docs/latest/objects.inv | Bin 116933 -> 116986 bytes
content/docs/latest/searchindex.js | 2 +-
content/feed.xml | 4 +-
66 files changed, 154 insertions(+), 120 deletions(-)
diff --git a/content/docs/10.0.0/index.html b/content/docs/10.0.0/index.html
index c61f2acd7..c52ef5f49 100644
--- a/content/docs/10.0.0/index.html
+++ b/content/docs/10.0.0/index.html
@@ -131,7 +131,7 @@ by following these <a class="reference internal"
href="contributing/documentatio
<section id="nuttx-documentation">
<h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation"
title="Permalink to this heading"></a></h1>
<p>NuttX is a real-time operating system (RTOS) with an emphasis on standards
compliance and small footprint. Scalable from 8-bit to 32-bit microcontroller
environments, the primary governing standards in NuttX are Posix and ANSI
standards. Additional standard APIs from Unix and other common RTOS’s (such as
VxWorks) are adopted for functionality not available under these standards, or
for functionality that is not appropriate for deeply-embedded environments
(such as fork()).</p>
-<p>Last Updated: 16 July 24 at 00:11</p>
+<p>Last Updated: 17 July 24 at 00:11</p>
<div class="toctree-wrapper compound">
<p class="caption" role="heading"><span class="caption-text">Table of
Contents</span></p>
<ul class="current">
diff --git a/content/docs/10.0.0/searchindex.js
b/content/docs/10.0.0/searchindex.js
index e798c3ef5..7b9626ac0 100644
--- a/content/docs/10.0.0/searchindex.js
+++ b/content/docs/10.0.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/index", "boards/index",
"components/binfmt", "components/drivers/block/index",
"components/drivers/character/analog", "components/drivers/character/can",
"components/drivers/character/index", "components/drivers/character/keypad",
"components/drivers/character/pwm", "components/drivers/character/quadrature",
"components/drivers/character/rtc", "components/drivers/character/serial",
"components/drivers/character/timer", "components/drivers/chara [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/index", "boards/index",
"components/binfmt", "components/drivers/block/index",
"components/drivers/character/analog", "components/drivers/character/can",
"components/drivers/character/index", "components/drivers/character/keypad",
"components/drivers/character/pwm", "components/drivers/character/quadrature",
"components/drivers/character/rtc", "components/drivers/character/serial",
"components/drivers/character/timer", "components/drivers/chara [...]
\ No newline at end of file
diff --git a/content/docs/10.0.1/index.html b/content/docs/10.0.1/index.html
index 1e54d1a20..57e2b4592 100644
--- a/content/docs/10.0.1/index.html
+++ b/content/docs/10.0.1/index.html
@@ -159,7 +159,7 @@ by following these <a class="reference internal"
href="contributing/documentatio
<section id="nuttx-documentation">
<h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation"
title="Permalink to this heading"></a></h1>
<p>NuttX is a real-time operating system (RTOS) with an emphasis on standards
compliance and small footprint. Scalable from 8-bit to 32-bit microcontroller
environments, the primary governing standards in NuttX are Posix and ANSI
standards. Additional standard APIs from Unix and other common RTOS’s (such as
VxWorks) are adopted for functionality not available under these standards, or
for functionality that is not appropriate for deeply-embedded environments
(such as fork()).</p>
-<p>Last Updated: 16 July 24 at 00:11</p>
+<p>Last Updated: 17 July 24 at 00:11</p>
<div class="toctree-wrapper compound">
<p class="caption" role="heading"><span class="caption-text">Table of
Contents</span></p>
<ul class="current">
diff --git a/content/docs/10.0.1/searchindex.js
b/content/docs/10.0.1/searchindex.js
index d4487dfe9..fee837da3 100644
--- a/content/docs/10.0.1/searchindex.js
+++ b/content/docs/10.0.1/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/index", "boards/index",
"components/binfmt", "components/drivers/block/index",
"components/drivers/character/analog", "components/drivers/character/can",
"components/drivers/character/index", "components/drivers/character/keypad",
"components/drivers/character/pwm", "components/drivers/character/quadrature",
"components/drivers/character/rtc", "components/drivers/character/serial",
"components/drivers/character/timer", "components/drivers/chara [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/index", "boards/index",
"components/binfmt", "components/drivers/block/index",
"components/drivers/character/analog", "components/drivers/character/can",
"components/drivers/character/index", "components/drivers/character/keypad",
"components/drivers/character/pwm", "components/drivers/character/quadrature",
"components/drivers/character/rtc", "components/drivers/character/serial",
"components/drivers/character/timer", "components/drivers/chara [...]
\ No newline at end of file
diff --git a/content/docs/10.1.0/index.html b/content/docs/10.1.0/index.html
index e4303fcc2..f096282dd 100644
--- a/content/docs/10.1.0/index.html
+++ b/content/docs/10.1.0/index.html
@@ -158,7 +158,7 @@ by following these <a class="reference internal"
href="contributing/documentatio
<section id="nuttx-documentation">
<h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation"
title="Permalink to this heading"></a></h1>
<p>NuttX is a real-time operating system (RTOS) with an emphasis on standards
compliance and small footprint. Scalable from 8-bit to 64-bit microcontroller
environments, the primary governing standards in NuttX are POSIX and ANSI
standards. Additional standard APIs from Unix and other common RTOS’s (such as
VxWorks) are adopted for functionality not available under these standards, or
for functionality that is not appropriate for deeply-embedded environments
(such as fork()).</p>
-<p>Last Updated: 16 July 24 at 00:11</p>
+<p>Last Updated: 17 July 24 at 00:11</p>
<div class="toctree-wrapper compound">
<p class="caption" role="heading"><span class="caption-text">Table of
Contents</span></p>
<ul class="current">
diff --git a/content/docs/10.1.0/searchindex.js
b/content/docs/10.1.0/searchindex.js
index de86dc105..0100355a9 100644
--- a/content/docs/10.1.0/searchindex.js
+++ b/content/docs/10.1.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/index",
"applications/nsh/builtin", "applications/nsh/commands",
"applications/nsh/config", "applications/nsh/customizing",
"applications/nsh/index", "applications/nsh/installation",
"applications/nsh/login", "applications/nsh/nsh", "components/binfmt",
"components/drivers/block/index", "components/drivers/character/analog",
"components/drivers/character/can", "components/drivers/character/foc",
"components/drivers/character/index", "components [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/index",
"applications/nsh/builtin", "applications/nsh/commands",
"applications/nsh/config", "applications/nsh/customizing",
"applications/nsh/index", "applications/nsh/installation",
"applications/nsh/login", "applications/nsh/nsh", "components/binfmt",
"components/drivers/block/index", "components/drivers/character/analog",
"components/drivers/character/can", "components/drivers/character/foc",
"components/drivers/character/index", "components [...]
\ No newline at end of file
diff --git a/content/docs/10.2.0/index.html b/content/docs/10.2.0/index.html
index b29ea3768..dd4650bc3 100644
--- a/content/docs/10.2.0/index.html
+++ b/content/docs/10.2.0/index.html
@@ -159,7 +159,7 @@ by following these <a class="reference internal"
href="contributing/documentatio
<section id="nuttx-documentation">
<h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation"
title="Permalink to this heading"></a></h1>
<p>NuttX is a real-time operating system (RTOS) with an emphasis on standards
compliance and small footprint. Scalable from 8-bit to 64-bit microcontroller
environments, the primary governing standards in NuttX are POSIX and ANSI
standards. Additional standard APIs from Unix and other common RTOS’s (such as
VxWorks) are adopted for functionality not available under these standards, or
for functionality that is not appropriate for deeply-embedded environments
(such as fork()).</p>
-<p>Last Updated: 16 July 24 at 00:11</p>
+<p>Last Updated: 17 July 24 at 00:11</p>
<div class="toctree-wrapper compound">
<p class="caption" role="heading"><span class="caption-text">Table of
Contents</span></p>
<ul class="current">
diff --git a/content/docs/10.2.0/searchindex.js
b/content/docs/10.2.0/searchindex.js
index d7b881f25..63374390b 100644
--- a/content/docs/10.2.0/searchindex.js
+++ b/content/docs/10.2.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/index",
"applications/nsh/builtin", "applications/nsh/commands",
"applications/nsh/config", "applications/nsh/customizing",
"applications/nsh/index", "applications/nsh/installation",
"applications/nsh/login", "applications/nsh/nsh", "components/binfmt",
"components/drivers/block/index", "components/drivers/character/analog",
"components/drivers/character/can", "components/drivers/character/foc",
"components/drivers/character/index", "components [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/index",
"applications/nsh/builtin", "applications/nsh/commands",
"applications/nsh/config", "applications/nsh/customizing",
"applications/nsh/index", "applications/nsh/installation",
"applications/nsh/login", "applications/nsh/nsh", "components/binfmt",
"components/drivers/block/index", "components/drivers/character/analog",
"components/drivers/character/can", "components/drivers/character/foc",
"components/drivers/character/index", "components [...]
\ No newline at end of file
diff --git a/content/docs/10.3.0/index.html b/content/docs/10.3.0/index.html
index b29ea3768..10b1dfbf6 100644
--- a/content/docs/10.3.0/index.html
+++ b/content/docs/10.3.0/index.html
@@ -159,7 +159,7 @@ by following these <a class="reference internal"
href="contributing/documentatio
<section id="nuttx-documentation">
<h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation"
title="Permalink to this heading"></a></h1>
<p>NuttX is a real-time operating system (RTOS) with an emphasis on standards
compliance and small footprint. Scalable from 8-bit to 64-bit microcontroller
environments, the primary governing standards in NuttX are POSIX and ANSI
standards. Additional standard APIs from Unix and other common RTOS’s (such as
VxWorks) are adopted for functionality not available under these standards, or
for functionality that is not appropriate for deeply-embedded environments
(such as fork()).</p>
-<p>Last Updated: 16 July 24 at 00:11</p>
+<p>Last Updated: 17 July 24 at 00:12</p>
<div class="toctree-wrapper compound">
<p class="caption" role="heading"><span class="caption-text">Table of
Contents</span></p>
<ul class="current">
diff --git a/content/docs/10.3.0/searchindex.js
b/content/docs/10.3.0/searchindex.js
index 007067296..1d228e823 100644
--- a/content/docs/10.3.0/searchindex.js
+++ b/content/docs/10.3.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/index",
"applications/nsh/builtin", "applications/nsh/commands",
"applications/nsh/config", "applications/nsh/customizing",
"applications/nsh/index", "applications/nsh/installation",
"applications/nsh/login", "applications/nsh/nsh", "components/binfmt",
"components/drivers/block/index", "components/drivers/character/analog",
"components/drivers/character/can", "components/drivers/character/foc",
"components/drivers/character/index", "components [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/index",
"applications/nsh/builtin", "applications/nsh/commands",
"applications/nsh/config", "applications/nsh/customizing",
"applications/nsh/index", "applications/nsh/installation",
"applications/nsh/login", "applications/nsh/nsh", "components/binfmt",
"components/drivers/block/index", "components/drivers/character/analog",
"components/drivers/character/can", "components/drivers/character/foc",
"components/drivers/character/index", "components [...]
\ No newline at end of file
diff --git a/content/docs/11.0.0/index.html b/content/docs/11.0.0/index.html
index 6d2d96490..10b1dfbf6 100644
--- a/content/docs/11.0.0/index.html
+++ b/content/docs/11.0.0/index.html
@@ -159,7 +159,7 @@ by following these <a class="reference internal"
href="contributing/documentatio
<section id="nuttx-documentation">
<h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation"
title="Permalink to this heading"></a></h1>
<p>NuttX is a real-time operating system (RTOS) with an emphasis on standards
compliance and small footprint. Scalable from 8-bit to 64-bit microcontroller
environments, the primary governing standards in NuttX are POSIX and ANSI
standards. Additional standard APIs from Unix and other common RTOS’s (such as
VxWorks) are adopted for functionality not available under these standards, or
for functionality that is not appropriate for deeply-embedded environments
(such as fork()).</p>
-<p>Last Updated: 16 July 24 at 00:12</p>
+<p>Last Updated: 17 July 24 at 00:12</p>
<div class="toctree-wrapper compound">
<p class="caption" role="heading"><span class="caption-text">Table of
Contents</span></p>
<ul class="current">
diff --git a/content/docs/11.0.0/searchindex.js
b/content/docs/11.0.0/searchindex.js
index 1d52e71ad..2dcad8778 100644
--- a/content/docs/11.0.0/searchindex.js
+++ b/content/docs/11.0.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/index",
"applications/nsh/builtin", "applications/nsh/commands",
"applications/nsh/config", "applications/nsh/customizing",
"applications/nsh/index", "applications/nsh/installation",
"applications/nsh/login", "applications/nsh/nsh", "components/binfmt",
"components/drivers/block/index", "components/drivers/character/analog",
"components/drivers/character/can", "components/drivers/character/foc",
"components/drivers/character/index", "components [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/index",
"applications/nsh/builtin", "applications/nsh/commands",
"applications/nsh/config", "applications/nsh/customizing",
"applications/nsh/index", "applications/nsh/installation",
"applications/nsh/login", "applications/nsh/nsh", "components/binfmt",
"components/drivers/block/index", "components/drivers/character/analog",
"components/drivers/character/can", "components/drivers/character/foc",
"components/drivers/character/index", "components [...]
\ No newline at end of file
diff --git a/content/docs/12.0.0/index.html b/content/docs/12.0.0/index.html
index 94d2327d7..769ad42f9 100644
--- a/content/docs/12.0.0/index.html
+++ b/content/docs/12.0.0/index.html
@@ -159,7 +159,7 @@ by following these <a class="reference internal"
href="contributing/documentatio
<section id="nuttx-documentation">
<h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation"
title="Permalink to this heading"></a></h1>
<p>NuttX is a real-time operating system (RTOS) with an emphasis on standards
compliance and small footprint. Scalable from 8-bit to 64-bit microcontroller
environments, the primary governing standards in NuttX are POSIX and ANSI
standards. Additional standard APIs from Unix and other common RTOS’s (such as
VxWorks) are adopted for functionality not available under these standards, or
for functionality that is not appropriate for deeply-embedded environments
(such as fork()).</p>
-<p>Last Updated: 16 July 24 at 00:12</p>
+<p>Last Updated: 17 July 24 at 00:12</p>
<div class="toctree-wrapper compound">
<p class="caption" role="heading"><span class="caption-text">Table of
Contents</span></p>
<ul class="current">
diff --git a/content/docs/12.0.0/searchindex.js
b/content/docs/12.0.0/searchindex.js
index a041bd0f4..7acec5fda 100644
--- a/content/docs/12.0.0/searchindex.js
+++ b/content/docs/12.0.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/index",
"applications/nsh/builtin", "applications/nsh/commands",
"applications/nsh/config", "applications/nsh/customizing",
"applications/nsh/index", "applications/nsh/installation",
"applications/nsh/login", "applications/nsh/nsh", "components/binfmt",
"components/drivers/block/index", "components/drivers/character/analog",
"components/drivers/character/can", "components/drivers/character/foc",
"components/drivers/character/index", "components [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/index",
"applications/nsh/builtin", "applications/nsh/commands",
"applications/nsh/config", "applications/nsh/customizing",
"applications/nsh/index", "applications/nsh/installation",
"applications/nsh/login", "applications/nsh/nsh", "components/binfmt",
"components/drivers/block/index", "components/drivers/character/analog",
"components/drivers/character/can", "components/drivers/character/foc",
"components/drivers/character/index", "components [...]
\ No newline at end of file
diff --git a/content/docs/12.1.0/index.html b/content/docs/12.1.0/index.html
index 753a99aff..1a9c3fe80 100644
--- a/content/docs/12.1.0/index.html
+++ b/content/docs/12.1.0/index.html
@@ -159,7 +159,7 @@ by following these <a class="reference internal"
href="contributing/documentatio
<section id="nuttx-documentation">
<h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation"
title="Permalink to this heading"></a></h1>
<p>NuttX is a real-time operating system (RTOS) with an emphasis on standards
compliance and small footprint. Scalable from 8-bit to 64-bit microcontroller
environments, the primary governing standards in NuttX are POSIX and ANSI
standards. Additional standard APIs from Unix and other common RTOS’s (such as
VxWorks) are adopted for functionality not available under these standards, or
for functionality that is not appropriate for deeply-embedded environments
(such as fork()).</p>
-<p>Last Updated: 16 July 24 at 00:12</p>
+<p>Last Updated: 17 July 24 at 00:12</p>
<div class="toctree-wrapper compound">
<p class="caption" role="heading"><span class="caption-text">Table of
Contents</span></p>
<ul class="current">
diff --git a/content/docs/12.1.0/searchindex.js
b/content/docs/12.1.0/searchindex.js
index f59436583..3de2fbd5f 100644
--- a/content/docs/12.1.0/searchindex.js
+++ b/content/docs/12.1.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/index",
"applications/nsh/builtin", "applications/nsh/commands",
"applications/nsh/config", "applications/nsh/customizing",
"applications/nsh/index", "applications/nsh/installation",
"applications/nsh/login", "applications/nsh/nsh", "components/binfmt",
"components/drivers/block/index", "components/drivers/character/analog",
"components/drivers/character/can", "components/drivers/character/foc",
"components/drivers/character/index", "components [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/index",
"applications/nsh/builtin", "applications/nsh/commands",
"applications/nsh/config", "applications/nsh/customizing",
"applications/nsh/index", "applications/nsh/installation",
"applications/nsh/login", "applications/nsh/nsh", "components/binfmt",
"components/drivers/block/index", "components/drivers/character/analog",
"components/drivers/character/can", "components/drivers/character/foc",
"components/drivers/character/index", "components [...]
\ No newline at end of file
diff --git a/content/docs/12.2.0/index.html b/content/docs/12.2.0/index.html
index 734e47490..883eaaf13 100644
--- a/content/docs/12.2.0/index.html
+++ b/content/docs/12.2.0/index.html
@@ -162,7 +162,7 @@ by following these <a class="reference internal"
href="contributing/documentatio
<section id="nuttx-documentation">
<h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation"
title="Permalink to this heading"></a></h1>
<p>NuttX is a real-time operating system (RTOS) with an emphasis on standards
compliance and small footprint. Scalable from 8-bit to 64-bit microcontroller
environments, the primary governing standards in NuttX are POSIX and ANSI
standards. Additional standard APIs from Unix and other common RTOS’s (such as
VxWorks) are adopted for functionality not available under these standards, or
for functionality that is not appropriate for deeply-embedded environments
(such as fork()).</p>
-<p>Last Updated: 16 July 24 at 00:12</p>
+<p>Last Updated: 17 July 24 at 00:12</p>
<div class="toctree-wrapper compound">
<p class="caption" role="heading"><span class="caption-text">Table of
Contents</span></p>
<ul class="current">
diff --git a/content/docs/12.2.0/searchindex.js
b/content/docs/12.2.0/searchindex.js
index cfe8b9224..8b0f6e3a4 100644
--- a/content/docs/12.2.0/searchindex.js
+++ b/content/docs/12.2.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/index",
"applications/nsh/builtin", "applications/nsh/commands",
"applications/nsh/config", "applications/nsh/customizing",
"applications/nsh/index", "applications/nsh/installation",
"applications/nsh/login", "applications/nsh/nsh", "applications/nxdiag/config",
"applications/nxdiag/index", "applications/wapi/commands",
"applications/wapi/index", "applications/wapi/wireless", "components/binfmt",
"components/drivers/block/index", "components/dr [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/index",
"applications/nsh/builtin", "applications/nsh/commands",
"applications/nsh/config", "applications/nsh/customizing",
"applications/nsh/index", "applications/nsh/installation",
"applications/nsh/login", "applications/nsh/nsh", "applications/nxdiag/config",
"applications/nxdiag/index", "applications/wapi/commands",
"applications/wapi/index", "applications/wapi/wireless", "components/binfmt",
"components/drivers/block/index", "components/dr [...]
\ No newline at end of file
diff --git a/content/docs/12.2.1/index.html b/content/docs/12.2.1/index.html
index 734e47490..d1b4b5213 100644
--- a/content/docs/12.2.1/index.html
+++ b/content/docs/12.2.1/index.html
@@ -162,7 +162,7 @@ by following these <a class="reference internal"
href="contributing/documentatio
<section id="nuttx-documentation">
<h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation"
title="Permalink to this heading"></a></h1>
<p>NuttX is a real-time operating system (RTOS) with an emphasis on standards
compliance and small footprint. Scalable from 8-bit to 64-bit microcontroller
environments, the primary governing standards in NuttX are POSIX and ANSI
standards. Additional standard APIs from Unix and other common RTOS’s (such as
VxWorks) are adopted for functionality not available under these standards, or
for functionality that is not appropriate for deeply-embedded environments
(such as fork()).</p>
-<p>Last Updated: 16 July 24 at 00:12</p>
+<p>Last Updated: 17 July 24 at 00:13</p>
<div class="toctree-wrapper compound">
<p class="caption" role="heading"><span class="caption-text">Table of
Contents</span></p>
<ul class="current">
diff --git
a/content/docs/12.2.1/platforms/xtensa/esp32/boards/esp32-audio-kit/index.html
b/content/docs/12.2.1/platforms/xtensa/esp32/boards/esp32-audio-kit/index.html
index 0291d6e9c..d4a0d4de6 100644
---
a/content/docs/12.2.1/platforms/xtensa/esp32/boards/esp32-audio-kit/index.html
+++
b/content/docs/12.2.1/platforms/xtensa/esp32/boards/esp32-audio-kit/index.html
@@ -343,7 +343,7 @@ Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/)
<p>Look for your PC IP address and test playing the prepared audio on your
browser:</p>
<figure class="align-center">
-<img alt="../../../../../_images/esp32-audio-config-file1.png"
src="../../../../../_images/esp32-audio-config-file1.png" />
+<img alt="../../../../../_images/esp32-audio-config-file.png"
src="../../../../../_images/esp32-audio-config-file.png" />
</figure>
<p>After successfully built and flashed, connect the board to the Wi-Fi
network:</p>
<div class="highlight-none notranslate"><div
class="highlight"><pre><span></span>$ nsh> wapi psk wlan0 mypasswd 3
diff --git
a/content/docs/12.2.1/platforms/xtensa/esp32/boards/esp32-devkitc/index.html
b/content/docs/12.2.1/platforms/xtensa/esp32/boards/esp32-devkitc/index.html
index 92c308a8b..1dad344cd 100644
--- a/content/docs/12.2.1/platforms/xtensa/esp32/boards/esp32-devkitc/index.html
+++ b/content/docs/12.2.1/platforms/xtensa/esp32/boards/esp32-devkitc/index.html
@@ -440,7 +440,7 @@ Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/)
<p>Look for your PC IP address and test playing the prepared audio on your
browser:</p>
<figure class="align-center">
-<img alt="../../../../../_images/esp32-audio-config-file.png"
src="../../../../../_images/esp32-audio-config-file.png" />
+<img alt="../../../../../_images/esp32-audio-config-file1.png"
src="../../../../../_images/esp32-audio-config-file1.png" />
</figure>
<p>After successfully built and flashed, connect the board to the Wi-Fi
network:</p>
<div class="highlight-none notranslate"><div
class="highlight"><pre><span></span>nsh> wapi psk wlan0 mypasswd 3
diff --git a/content/docs/12.2.1/searchindex.js
b/content/docs/12.2.1/searchindex.js
index b3facc02e..04bcfb1ea 100644
--- a/content/docs/12.2.1/searchindex.js
+++ b/content/docs/12.2.1/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/index",
"applications/nsh/builtin", "applications/nsh/commands",
"applications/nsh/config", "applications/nsh/customizing",
"applications/nsh/index", "applications/nsh/installation",
"applications/nsh/login", "applications/nsh/nsh", "applications/nxdiag/config",
"applications/nxdiag/index", "applications/wapi/commands",
"applications/wapi/index", "applications/wapi/wireless", "components/binfmt",
"components/drivers/block/index", "components/dr [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/index",
"applications/nsh/builtin", "applications/nsh/commands",
"applications/nsh/config", "applications/nsh/customizing",
"applications/nsh/index", "applications/nsh/installation",
"applications/nsh/login", "applications/nsh/nsh", "applications/nxdiag/config",
"applications/nxdiag/index", "applications/wapi/commands",
"applications/wapi/index", "applications/wapi/wireless", "components/binfmt",
"components/drivers/block/index", "components/dr [...]
\ No newline at end of file
diff --git a/content/docs/12.3.0/index.html b/content/docs/12.3.0/index.html
index 6c6325473..569329707 100644
--- a/content/docs/12.3.0/index.html
+++ b/content/docs/12.3.0/index.html
@@ -162,7 +162,7 @@ by following these <a class="reference internal"
href="contributing/documentatio
<section id="nuttx-documentation">
<h1>NuttX Documentation<a class="headerlink" href="#nuttx-documentation"
title="Permalink to this heading"></a></h1>
<p>NuttX is a real-time operating system (RTOS) with an emphasis on standards
compliance and small footprint. Scalable from 8-bit to 64-bit microcontroller
environments, the primary governing standards in NuttX are POSIX and ANSI
standards. Additional standard APIs from Unix and other common RTOS’s (such as
VxWorks) are adopted for functionality not available under these standards, or
for functionality that is not appropriate for deeply-embedded environments
(such as fork()).</p>
-<p>Last Updated: 16 July 24 at 00:13</p>
+<p>Last Updated: 17 July 24 at 00:13</p>
<div class="toctree-wrapper compound">
<p class="caption" role="heading"><span class="caption-text">Table of
Contents</span></p>
<ul class="current">
diff --git a/content/docs/12.3.0/searchindex.js
b/content/docs/12.3.0/searchindex.js
index 0a2009876..e7c93690e 100644
--- a/content/docs/12.3.0/searchindex.js
+++ b/content/docs/12.3.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/index",
"applications/nsh/builtin", "applications/nsh/commands",
"applications/nsh/config", "applications/nsh/customizing",
"applications/nsh/index", "applications/nsh/installation",
"applications/nsh/login", "applications/nsh/nsh", "applications/nxdiag/config",
"applications/nxdiag/index", "applications/wapi/commands",
"applications/wapi/index", "applications/wapi/wireless", "components/binfmt",
"components/drivers/block/index", "components/dr [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/index",
"applications/nsh/builtin", "applications/nsh/commands",
"applications/nsh/config", "applications/nsh/customizing",
"applications/nsh/index", "applications/nsh/installation",
"applications/nsh/login", "applications/nsh/nsh", "applications/nxdiag/config",
"applications/nxdiag/index", "applications/wapi/commands",
"applications/wapi/index", "applications/wapi/wireless", "components/binfmt",
"components/drivers/block/index", "components/dr [...]
\ No newline at end of file
diff --git a/content/docs/12.4.0/index.html b/content/docs/12.4.0/index.html
index a546e80ec..b32f10d7a 100644
--- a/content/docs/12.4.0/index.html
+++ b/content/docs/12.4.0/index.html
@@ -169,7 +169,7 @@ standards. Additional standard APIs from Unix and other
common RTOS’s (such as
VxWorks) are adopted for functionality not available under these standards, or
for functionality that is not appropriate for deeply-embedded environments
(such
as fork()).</p>
-<p>Last Updated: 16 July 24 at 00:13</p>
+<p>Last Updated: 17 July 24 at 00:13</p>
<div class="toctree-wrapper compound">
<p class="caption" role="heading"><span class="caption-text">Table of
Contents</span></p>
<ul class="current">
diff --git a/content/docs/12.4.0/searchindex.js
b/content/docs/12.4.0/searchindex.js
index 47b81c2d8..0789ed123 100644
--- a/content/docs/12.4.0/searchindex.js
+++ b/content/docs/12.4.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index",
"applications/audioutils/index", "applications/audioutils/mml_parser/index",
"applications/audioutils/nxaudio/index",
"applications/benchmarks/coremark/index", "applications/benchmarks/index",
"applications/boot/index", "applications/boot/mcuboot/index",
"applications/boot/miniboot/index", "applications/canutils/candump/index",
"applications/canutils/canlib/index", "applications/canutils/cansend/index",
"applications/c [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index",
"applications/audioutils/index", "applications/audioutils/mml_parser/index",
"applications/audioutils/nxaudio/index",
"applications/benchmarks/coremark/index", "applications/benchmarks/index",
"applications/boot/index", "applications/boot/mcuboot/index",
"applications/boot/miniboot/index", "applications/canutils/candump/index",
"applications/canutils/canlib/index", "applications/canutils/cansend/index",
"applications/c [...]
\ No newline at end of file
diff --git a/content/docs/12.5.0/index.html b/content/docs/12.5.0/index.html
index 21bcc7ef0..30ceb4812 100644
--- a/content/docs/12.5.0/index.html
+++ b/content/docs/12.5.0/index.html
@@ -169,7 +169,7 @@ standards. Additional standard APIs from Unix and other
common RTOS’s (such as
VxWorks) are adopted for functionality not available under these standards, or
for functionality that is not appropriate for deeply-embedded environments
(such
as fork()).</p>
-<p>Last Updated: 16 July 24 at 00:14</p>
+<p>Last Updated: 17 July 24 at 00:15</p>
<div class="toctree-wrapper compound">
<p class="caption" role="heading"><span class="caption-text">Table of
Contents</span></p>
<ul class="current">
diff --git a/content/docs/12.5.0/searchindex.js
b/content/docs/12.5.0/searchindex.js
index 836187e3b..3e90698b7 100644
--- a/content/docs/12.5.0/searchindex.js
+++ b/content/docs/12.5.0/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index",
"applications/audioutils/index", "applications/audioutils/mml_parser/index",
"applications/audioutils/nxaudio/index",
"applications/benchmarks/coremark/index", "applications/benchmarks/index",
"applications/boot/index", "applications/boot/mcuboot/index",
"applications/boot/miniboot/index", "applications/canutils/candump/index",
"applications/canutils/canlib/index", "applications/canutils/cansend/index",
"applications/c [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index",
"applications/audioutils/index", "applications/audioutils/mml_parser/index",
"applications/audioutils/nxaudio/index",
"applications/benchmarks/coremark/index", "applications/benchmarks/index",
"applications/boot/index", "applications/boot/mcuboot/index",
"applications/boot/miniboot/index", "applications/canutils/candump/index",
"applications/canutils/canlib/index", "applications/canutils/cansend/index",
"applications/c [...]
\ No newline at end of file
diff --git a/content/docs/12.5.1/index.html b/content/docs/12.5.1/index.html
index f9674042a..1e53bf8a6 100644
--- a/content/docs/12.5.1/index.html
+++ b/content/docs/12.5.1/index.html
@@ -169,7 +169,7 @@ standards. Additional standard APIs from Unix and other
common RTOS’s (such as
VxWorks) are adopted for functionality not available under these standards, or
for functionality that is not appropriate for deeply-embedded environments
(such
as fork()).</p>
-<p>Last Updated: 16 July 24 at 00:15</p>
+<p>Last Updated: 17 July 24 at 00:16</p>
<div class="toctree-wrapper compound">
<p class="caption" role="heading"><span class="caption-text">Table of
Contents</span></p>
<ul class="current">
diff --git a/content/docs/12.5.1/searchindex.js
b/content/docs/12.5.1/searchindex.js
index f14456386..76878c6fa 100644
--- a/content/docs/12.5.1/searchindex.js
+++ b/content/docs/12.5.1/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index",
"applications/audioutils/index", "applications/audioutils/mml_parser/index",
"applications/audioutils/nxaudio/index",
"applications/benchmarks/coremark/index", "applications/benchmarks/index",
"applications/boot/index", "applications/boot/mcuboot/index",
"applications/boot/miniboot/index", "applications/canutils/candump/index",
"applications/canutils/canlib/index", "applications/canutils/cansend/index",
"applications/c [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index",
"applications/audioutils/index", "applications/audioutils/mml_parser/index",
"applications/audioutils/nxaudio/index",
"applications/benchmarks/coremark/index", "applications/benchmarks/index",
"applications/boot/index", "applications/boot/mcuboot/index",
"applications/boot/miniboot/index", "applications/canutils/candump/index",
"applications/canutils/canlib/index", "applications/canutils/cansend/index",
"applications/c [...]
\ No newline at end of file
diff --git a/content/docs/latest/_sources/guides/index.rst.txt
b/content/docs/latest/_sources/guides/index.rst.txt
index 01e117555..0cd62e30a 100644
--- a/content/docs/latest/_sources/guides/index.rst.txt
+++ b/content/docs/latest/_sources/guides/index.rst.txt
@@ -31,3 +31,4 @@ Guides
stm32ccm.rst
stackrecord.rst
etcromfs.rst
+ thread_local_storage.rst
diff --git a/content/docs/latest/_sources/guides/thread_local_storage.rst.txt
b/content/docs/latest/_sources/guides/thread_local_storage.rst.txt
new file mode 100644
index 000000000..d76f37967
--- /dev/null
+++ b/content/docs/latest/_sources/guides/thread_local_storage.rst.txt
@@ -0,0 +1,44 @@
+=========================
+Thread Local Storage
+=========================
+
+Thread local storage (TLS) is a mechanism that allows each thread to have its
own
+copy of a variable. This is useful for variables that are used by multiple
+functions in a thread, but should not be shared with other threads.
+
+There are some approaches to using TLS in NuttX:
+
+1. Use the ``pthread_key_create()`` and ``pthread_setspecific()`` that from
the POSIX standard. This is the most portable approach, but it requires that
+the platform support pthreads.
+2. Use the ``thread_local`` or ``__thread`` keyword from the C standard:
https://gcc.gnu.org/onlinedocs/gcc/extensions-to-the-c-language-family/thread-local-storage.html
+
+Configuration
+=============
+
+.. code-block:: console
+
+ CONFIG_SCHED_THREAD_LOCAL /* Enable native thread local storage support */
+
+
+Enable it to support native thread local storage, which is required that the
compiler configured with ``--enable-tls`` option, this approach is more
efficient if the compiler support it.
+
+If your compiler support it then you still need further configuration to use
it:
+
+1. Enable ``CONFIG_SCHED_THREAD_LOCAL`` in menuconfig
+2. Handle ``tbss`` and ``tdata`` sections in linker script, your can refer to
the example in rv-virt
+
+To confirm that your compiler supports TLS, you can try this command:
+.. code-block:: console
+
+ arm-none-eabi-gcc --verbose
+ COLLECT_GCC=arm-none-eabi-gcc
+
COLLECT_LTO_WRAPPER=/home/huang/.local/pkg/arm/bin/../libexec/gcc/arm-none-eabi/13.3.1/lto-wrapper
+ Target: arm-none-eabi
+ Configured with:
/data/jenkins/workspace/GNU-toolchain/arm-13/src/gcc/configure
--target=arm-none-eabi
--prefix=/data/jenkins/workspace/GNU-toolchain/arm-13/build-arm-none-eabi/install
--with-gmp=/data/jenkins/workspace/GNU-toolchain/arm-13/build-arm-none-eabi/host-tools
--with-mpfr=/data/jenkins/workspace/GNU-toolchain/arm-13/build-arm-none-eabi/host-tools
--with-mpc=/data/jenkins/workspace/GNU-toolchain/arm-13/build-arm-none-eabi/host-tools
--with-isl=/data/jenkins/workspace/GNU-to [...]
+ Thread model: single
+ Supported LTO compression algorithms: zlib
+ gcc version 13.3.1 20240614 (Arm GNU Toolchain 13.3.Rel1 (Build arm-13.24))
+
+Then you can see ``--disable-tls`` in the output, which means that your
compiler does not support TLS.
+
+In this case, you can still use the thread local relative keyword, but it
would be implemented by libgcc's emutls.
diff --git a/content/docs/latest/glossary.html
b/content/docs/latest/glossary.html
index d106cf217..4afba6f5a 100644
--- a/content/docs/latest/glossary.html
+++ b/content/docs/latest/glossary.html
@@ -45,7 +45,7 @@
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="NuttX Logos" href="logos/index.html" />
- <link rel="prev" title="etc romfs" href="guides/etcromfs.html" />
+ <link rel="prev" title="Thread Local Storage"
href="guides/thread_local_storage.html" />
</head>
<body class="wy-body-for-nav">
@@ -402,7 +402,7 @@
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation"
aria-label="Footer">
- <a href="guides/etcromfs.html" class="btn btn-neutral float-left"
title="etc romfs" accesskey="p" rel="prev"><span class="fa
fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
+ <a href="guides/thread_local_storage.html" class="btn btn-neutral
float-left" title="Thread Local Storage" accesskey="p" rel="prev"><span
class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="logos/index.html" class="btn btn-neutral float-right"
title="NuttX Logos" accesskey="n" rel="next">Next <span class="fa
fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
diff --git a/content/docs/latest/guides/automounter.html
b/content/docs/latest/guides/automounter.html
index 28d6185e7..af29ee5f7 100644
--- a/content/docs/latest/guides/automounter.html
+++ b/content/docs/latest/guides/automounter.html
@@ -153,6 +153,7 @@
<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="stackrecord.html">Run time stack statistics</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>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal"
href="../glossary.html">Glossary</a></li>
diff --git a/content/docs/latest/guides/citests.html
b/content/docs/latest/guides/citests.html
index ef956d268..8f992fe08 100644
--- a/content/docs/latest/guides/citests.html
+++ b/content/docs/latest/guides/citests.html
@@ -152,6 +152,7 @@
<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="stackrecord.html">Run time stack statistics</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>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal"
href="../glossary.html">Glossary</a></li>
diff --git a/content/docs/latest/guides/coredump.html
b/content/docs/latest/guides/coredump.html
index 411d3005c..56fb0bc2e 100644
--- a/content/docs/latest/guides/coredump.html
+++ b/content/docs/latest/guides/coredump.html
@@ -154,6 +154,7 @@
<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="stackrecord.html">Run time stack statistics</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>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal"
href="../glossary.html">Glossary</a></li>
diff --git a/content/docs/latest/guides/cortexmhardfaults.html
b/content/docs/latest/guides/cortexmhardfaults.html
index bd270d14c..98420310c 100644
--- a/content/docs/latest/guides/cortexmhardfaults.html
+++ b/content/docs/latest/guides/cortexmhardfaults.html
@@ -158,6 +158,7 @@
<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="stackrecord.html">Run time stack statistics</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>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal"
href="../glossary.html">Glossary</a></li>
diff --git a/content/docs/latest/guides/cpp_cmake.html
b/content/docs/latest/guides/cpp_cmake.html
index fa0c9ec23..5449db048 100644
--- a/content/docs/latest/guides/cpp_cmake.html
+++ b/content/docs/latest/guides/cpp_cmake.html
@@ -153,6 +153,7 @@
<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="stackrecord.html">Run time stack statistics</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>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal"
href="../glossary.html">Glossary</a></li>
diff --git a/content/docs/latest/guides/customapps.html
b/content/docs/latest/guides/customapps.html
index 3eba4de17..203140cf9 100644
--- a/content/docs/latest/guides/customapps.html
+++ b/content/docs/latest/guides/customapps.html
@@ -173,6 +173,7 @@
<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="stackrecord.html">Run time stack statistics</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>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal"
href="../glossary.html">Glossary</a></li>
diff --git a/content/docs/latest/guides/customboards.html
b/content/docs/latest/guides/customboards.html
index b8ac6f567..ff3ed9f48 100644
--- a/content/docs/latest/guides/customboards.html
+++ b/content/docs/latest/guides/customboards.html
@@ -152,6 +152,7 @@
<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="stackrecord.html">Run time stack statistics</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>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal"
href="../glossary.html">Glossary</a></li>
diff --git a/content/docs/latest/guides/drivers.html
b/content/docs/latest/guides/drivers.html
index de99de52a..eb4a198fa 100644
--- a/content/docs/latest/guides/drivers.html
+++ b/content/docs/latest/guides/drivers.html
@@ -155,6 +155,7 @@
<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="stackrecord.html">Run time stack statistics</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>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal"
href="../glossary.html">Glossary</a></li>
diff --git a/content/docs/latest/guides/etcromfs.html
b/content/docs/latest/guides/etcromfs.html
index 7aa7a02e4..1c263e50a 100644
--- a/content/docs/latest/guides/etcromfs.html
+++ b/content/docs/latest/guides/etcromfs.html
@@ -44,7 +44,7 @@
<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="Glossary" href="../glossary.html" />
+ <link rel="next" title="Thread Local Storage"
href="thread_local_storage.html" />
<link rel="prev" title="Run time stack statistics" href="stackrecord.html"
/>
</head>
@@ -154,6 +154,7 @@
<li class="toctree-l3"><a class="reference internal"
href="#customizing-romfs-image">Customizing ROMFS Image</a></li>
</ul>
</li>
+<li class="toctree-l2"><a class="reference internal"
href="thread_local_storage.html">Thread Local Storage</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal"
href="../glossary.html">Glossary</a></li>
@@ -370,7 +371,7 @@ provide useful examples:</p>
</div>
<footer><div class="rst-footer-buttons" role="navigation"
aria-label="Footer">
<a href="stackrecord.html" class="btn btn-neutral float-left"
title="Run time stack statistics" accesskey="p" rel="prev"><span class="fa
fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
- <a href="../glossary.html" class="btn btn-neutral float-right"
title="Glossary" accesskey="n" rel="next">Next <span class="fa
fa-arrow-circle-right" aria-hidden="true"></span></a>
+ <a href="thread_local_storage.html" class="btn btn-neutral
float-right" title="Thread Local Storage" accesskey="n" rel="next">Next <span
class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
diff --git a/content/docs/latest/guides/gdbwithpython.html
b/content/docs/latest/guides/gdbwithpython.html
index 6bbd9ee5d..088d7ad69 100644
--- a/content/docs/latest/guides/gdbwithpython.html
+++ b/content/docs/latest/guides/gdbwithpython.html
@@ -153,6 +153,7 @@
<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="stackrecord.html">Run time stack statistics</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>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal"
href="../glossary.html">Glossary</a></li>
diff --git a/content/docs/latest/guides/index.html
b/content/docs/latest/guides/index.html
index 47b84622f..8ef692c27 100644
--- a/content/docs/latest/guides/index.html
+++ b/content/docs/latest/guides/index.html
@@ -148,6 +148,7 @@
<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="stackrecord.html">Run time stack statistics</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>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal"
href="../glossary.html">Glossary</a></li>
@@ -420,6 +421,10 @@
<li class="toctree-l2"><a class="reference internal"
href="etcromfs.html#customizing-romfs-image">Customizing ROMFS Image</a></li>
</ul>
</li>
+<li class="toctree-l1"><a class="reference internal"
href="thread_local_storage.html">Thread Local Storage</a><ul>
+<li class="toctree-l2"><a class="reference internal"
href="thread_local_storage.html#configuration">Configuration</a></li>
+</ul>
+</li>
</ul>
</div>
</section>
diff --git a/content/docs/latest/guides/minidumpserver.html
b/content/docs/latest/guides/minidumpserver.html
index b752bf973..013282fc7 100644
--- a/content/docs/latest/guides/minidumpserver.html
+++ b/content/docs/latest/guides/minidumpserver.html
@@ -154,6 +154,7 @@
<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="stackrecord.html">Run time stack statistics</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>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal"
href="../glossary.html">Glossary</a></li>
diff --git a/content/docs/latest/guides/nestedinterrupts.html
b/content/docs/latest/guides/nestedinterrupts.html
index 7d962529c..39eccdedc 100644
--- a/content/docs/latest/guides/nestedinterrupts.html
+++ b/content/docs/latest/guides/nestedinterrupts.html
@@ -155,6 +155,7 @@
<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="stackrecord.html">Run time stack statistics</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>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal"
href="../glossary.html">Glossary</a></li>
diff --git a/content/docs/latest/guides/nfs.html
b/content/docs/latest/guides/nfs.html
index 5c1ebe2ff..0c4ee30f2 100644
--- a/content/docs/latest/guides/nfs.html
+++ b/content/docs/latest/guides/nfs.html
@@ -154,6 +154,7 @@
<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="stackrecord.html">Run time stack statistics</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>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal"
href="../glossary.html">Glossary</a></li>
diff --git a/content/docs/latest/guides/ofloader.html
b/content/docs/latest/guides/ofloader.html
index 281656c25..e60a1fbe8 100644
--- a/content/docs/latest/guides/ofloader.html
+++ b/content/docs/latest/guides/ofloader.html
@@ -154,6 +154,7 @@
<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="stackrecord.html">Run time stack statistics</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>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal"
href="../glossary.html">Glossary</a></li>
diff --git a/content/docs/latest/guides/pysimcoder.html
b/content/docs/latest/guides/pysimcoder.html
index 3c534eda7..7f426bd5d 100644
--- a/content/docs/latest/guides/pysimcoder.html
+++ b/content/docs/latest/guides/pysimcoder.html
@@ -153,6 +153,7 @@
<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="stackrecord.html">Run time stack statistics</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>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal"
href="../glossary.html">Glossary</a></li>
diff --git a/content/docs/latest/guides/qemugdb.html
b/content/docs/latest/guides/qemugdb.html
index ee0223a9b..92d852fca 100644
--- a/content/docs/latest/guides/qemugdb.html
+++ b/content/docs/latest/guides/qemugdb.html
@@ -153,6 +153,7 @@
<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="stackrecord.html">Run time stack statistics</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>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal"
href="../glossary.html">Glossary</a></li>
diff --git a/content/docs/latest/guides/rndis.html
b/content/docs/latest/guides/rndis.html
index eb3b89f41..90b64072b 100644
--- a/content/docs/latest/guides/rndis.html
+++ b/content/docs/latest/guides/rndis.html
@@ -153,6 +153,7 @@
<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="stackrecord.html">Run time stack statistics</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>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal"
href="../glossary.html">Glossary</a></li>
diff --git a/content/docs/latest/guides/simulator.html
b/content/docs/latest/guides/simulator.html
index 7cc34c591..03ca91120 100644
--- a/content/docs/latest/guides/simulator.html
+++ b/content/docs/latest/guides/simulator.html
@@ -156,6 +156,7 @@
<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="stackrecord.html">Run time stack statistics</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>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal"
href="../glossary.html">Glossary</a></li>
diff --git a/content/docs/latest/guides/stackrecord.html
b/content/docs/latest/guides/stackrecord.html
index 0d97d4853..b52e4fce9 100644
--- a/content/docs/latest/guides/stackrecord.html
+++ b/content/docs/latest/guides/stackrecord.html
@@ -155,6 +155,7 @@
</ul>
</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>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal"
href="../glossary.html">Glossary</a></li>
diff --git a/content/docs/latest/guides/stm32ccm.html
b/content/docs/latest/guides/stm32ccm.html
index d4ff51da8..6b7ddea6c 100644
--- a/content/docs/latest/guides/stm32ccm.html
+++ b/content/docs/latest/guides/stm32ccm.html
@@ -154,6 +154,7 @@
</li>
<li class="toctree-l2"><a class="reference internal"
href="stackrecord.html">Run time stack statistics</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>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal"
href="../glossary.html">Glossary</a></li>
diff --git a/content/docs/latest/guides/stm32nullpointer.html
b/content/docs/latest/guides/stm32nullpointer.html
index fe6cef609..46b24ba16 100644
--- a/content/docs/latest/guides/stm32nullpointer.html
+++ b/content/docs/latest/guides/stm32nullpointer.html
@@ -155,6 +155,7 @@
<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="stackrecord.html">Run time stack statistics</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>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal"
href="../glossary.html">Glossary</a></li>
diff --git a/content/docs/latest/guides/tasktrace.html
b/content/docs/latest/guides/tasktrace.html
index 58631aa4f..ad279fb19 100644
--- a/content/docs/latest/guides/tasktrace.html
+++ b/content/docs/latest/guides/tasktrace.html
@@ -152,6 +152,7 @@
<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="stackrecord.html">Run time stack statistics</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>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal"
href="../glossary.html">Glossary</a></li>
diff --git a/content/docs/latest/guides/tasktraceinternal.html
b/content/docs/latest/guides/tasktraceinternal.html
index 8e648e2a7..249c0ea73 100644
--- a/content/docs/latest/guides/tasktraceinternal.html
+++ b/content/docs/latest/guides/tasktraceinternal.html
@@ -167,6 +167,7 @@
<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="stackrecord.html">Run time stack statistics</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>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal"
href="../glossary.html">Glossary</a></li>
diff --git a/content/docs/latest/guides/tasktraceuser.html
b/content/docs/latest/guides/tasktraceuser.html
index d6ff6a2ff..72839b691 100644
--- a/content/docs/latest/guides/tasktraceuser.html
+++ b/content/docs/latest/guides/tasktraceuser.html
@@ -173,6 +173,7 @@
<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="stackrecord.html">Run time stack statistics</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>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal"
href="../glossary.html">Glossary</a></li>
diff --git a/content/docs/latest/guides/testingtcpip.html
b/content/docs/latest/guides/testingtcpip.html
index bac2d5bcd..eac838e6a 100644
--- a/content/docs/latest/guides/testingtcpip.html
+++ b/content/docs/latest/guides/testingtcpip.html
@@ -154,6 +154,7 @@
<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="stackrecord.html">Run time stack statistics</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>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal"
href="../glossary.html">Glossary</a></li>
diff --git a/content/docs/latest/guides/stackrecord.html
b/content/docs/latest/guides/thread_local_storage.html
similarity index 67%
copy from content/docs/latest/guides/stackrecord.html
copy to content/docs/latest/guides/thread_local_storage.html
index 0d97d4853..7bdf0c492 100644
--- a/content/docs/latest/guides/stackrecord.html
+++ b/content/docs/latest/guides/thread_local_storage.html
@@ -23,7 +23,7 @@
<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>Run time stack statistics — NuttX latest documentation</title>
+ <title>Thread Local Storage — 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"
/>
@@ -44,8 +44,8 @@
<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="etc romfs" href="etcromfs.html" />
- <link rel="prev" title="STM32 CCM Allocator" href="stm32ccm.html" />
+ <link rel="next" title="Glossary" href="../glossary.html" />
+ <link rel="prev" title="etc romfs" href="etcromfs.html" />
</head>
<body class="wy-body-for-nav">
@@ -146,15 +146,12 @@
<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 current"><a class="current reference internal"
href="#">Run time stack statistics</a><ul>
-<li class="toctree-l3"><a class="reference internal"
href="#introduce">Introduce</a></li>
+<li class="toctree-l2"><a class="reference internal"
href="stackrecord.html">Run time stack statistics</a></li>
+<li class="toctree-l2"><a class="reference internal" href="etcromfs.html">etc
romfs</a></li>
+<li class="toctree-l2 current"><a class="current reference internal"
href="#">Thread Local Storage</a><ul>
<li class="toctree-l3"><a class="reference internal"
href="#configuration">Configuration</a></li>
-<li class="toctree-l3"><a class="reference internal"
href="#example">Example</a></li>
-<li class="toctree-l3"><a class="reference internal"
href="#implementation-details">Implementation details</a></li>
-<li class="toctree-l3"><a class="reference internal"
href="#notice">Notice</a></li>
</ul>
</li>
-<li class="toctree-l2"><a class="reference internal" href="etcromfs.html">etc
romfs</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal"
href="../glossary.html">Glossary</a></li>
@@ -176,9 +173,9 @@
<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">Run time stack statistics</li>
+ <li class="breadcrumb-item active">Thread Local Storage</li>
<li class="wy-breadcrumbs-aside">
- <a href="../_sources/guides/stackrecord.rst.txt" rel="nofollow">
View page source</a>
+ <a href="../_sources/guides/thread_local_storage.rst.txt"
rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
@@ -186,81 +183,40 @@
<div role="main" class="document" itemscope="itemscope"
itemtype="http://schema.org/Article">
<div itemprop="articleBody">
- <section id="run-time-stack-statistics">
-<h1>Run time stack statistics<a class="headerlink"
href="#run-time-stack-statistics" title="Permalink to this heading"></a></h1>
-<section id="introduce">
-<h2>Introduce<a class="headerlink" href="#introduce" title="Permalink to this
heading"></a></h2>
-<p>When debugging code, it is often necessary to focus on how to track
-the maximum stack usage of the calling functions in order to optimize
-the code structure and reduce stack usage. This article will introduce
-a method based on the running state to track the deepest call stack of all
tasks.</p>
-</section>
+ <section id="thread-local-storage">
+<h1>Thread Local Storage<a class="headerlink" href="#thread-local-storage"
title="Permalink to this heading"></a></h1>
+<p>Thread local storage (TLS) is a mechanism that allows each thread to have
its own
+copy of a variable. This is useful for variables that are used by multiple
+functions in a thread, but should not be shared with other threads.</p>
+<p>There are some approaches to using TLS in NuttX:</p>
+<p>1. Use the <code class="docutils literal notranslate"><span
class="pre">pthread_key_create()</span></code> and <code class="docutils
literal notranslate"><span class="pre">pthread_setspecific()</span></code> that
from the POSIX standard. This is the most portable approach, but it requires
that
+the platform support pthreads.
+2. Use the <code class="docutils literal notranslate"><span
class="pre">thread_local</span></code> or <code class="docutils literal
notranslate"><span class="pre">__thread</span></code> keyword from the C
standard: <a class="reference external"
href="https://gcc.gnu.org/onlinedocs/gcc/extensions-to-the-c-language-family/thread-local-storage.html">https://gcc.gnu.org/onlinedocs/gcc/extensions-to-the-c-language-family/thread-local-storage.html</a></p>
<section id="configuration">
<h2>Configuration<a class="headerlink" href="#configuration" title="Permalink
to this heading"></a></h2>
-<blockquote>
-<div><div class="highlight-c notranslate"><div
class="highlight"><pre><span></span><span
class="n">CONFIG_SCHED_STACKRECORD</span><span class="o">=</span><span
class="mi">32</span>
-<span class="n">CONFIG_ARCH_INSTRUMENT_ALL</span><span class="o">=</span><span
class="n">y</span>
+<div class="highlight-console notranslate"><div
class="highlight"><pre><span></span><span class="go">CONFIG_SCHED_THREAD_LOCAL
/* Enable native thread local storage support */</span>
</pre></div>
</div>
-</div></blockquote>
-<p><code class="docutils literal notranslate"><span
class="pre">`CONFIG_SCHED_STACKRECORD`</span></code> is used to record the
maximum stack usage of all tasks
-<code class="docutils literal notranslate"><span
class="pre">`CONFIG_ARCH_INSTRUMENT_ALL`</span></code> is used to instrument
all code.</p>
-<p>Please note that CONFIG_ARCH_INSTRUMENT_ALL is not necessary.
-This configuration option will instrument all code,
-but if you only want to instrument specific functions,
-you can add ‘-finstrument-functions’ to the corresponding makefile.</p>
-</section>
-<section id="example">
-<h2>Example<a class="headerlink" href="#example" title="Permalink to this
heading"></a></h2>
-<ol class="arabic">
-<li><p><code class="docutils literal notranslate"><span
class="pre">`./tools/configure.sh</span> <span
class="pre">esp32c3-devkit:stack`</span></code></p></li>
-<li><p><code class="docutils literal notranslate"><span
class="pre">`make</span> <span class="pre">-j20`</span></code></p></li>
-<li><p>flash the image to your board
-.. code-block :: bash</p>
+<p>Enable it to support native thread local storage, which is required that
the compiler configured with <code class="docutils literal notranslate"><span
class="pre">--enable-tls</span></code> option, this approach is more efficient
if the compiler support it.</p>
+<p>If your compiler support it then you still need further configuration to
use it:</p>
+<ol class="arabic simple">
+<li><p>Enable <code class="docutils literal notranslate"><span
class="pre">CONFIG_SCHED_THREAD_LOCAL</span></code> in menuconfig</p></li>
+<li><p>Handle <code class="docutils literal notranslate"><span
class="pre">tbss</span></code> and <code class="docutils literal
notranslate"><span class="pre">tdata</span></code> sections in linker script,
your can refer to the example in rv-virt</p></li>
+</ol>
+<p>To confirm that your compiler supports TLS, you can try this command:
+.. code-block:: console</p>
<blockquote>
-<div><p>nsh> cat /proc/1/stack
-StackAlloc: 0x3fc8b5b0
-StackBase: 0x3fc8b5e0
-StackSize: 2000
-MaxStackUsed:1344
-Backtrace Size
-0x42009198 32
-0x42009200 48
-0x420081a0 128
-0x42008d18 64
-0x4201da60 80
-0x420199e0 80
-0x42018c6c 48
-0x420194f4 48
-0x42017d30 32
-0x4201634c 32
-0x420163ac 48
-0x42016408 32
-0x420132c0 48
-0x42010598 32
-0x4200fd98 48
-0x4200f5dc 80
-0x4200f8e0 160</p>
+<div><p>arm-none-eabi-gcc –verbose
+COLLECT_GCC=arm-none-eabi-gcc
+COLLECT_LTO_WRAPPER=/home/huang/.local/pkg/arm/bin/../libexec/gcc/arm-none-eabi/13.3.1/lto-wrapper
+Target: arm-none-eabi
+Configured with:
/data/jenkins/workspace/GNU-toolchain/arm-13/src/gcc/configure
–target=arm-none-eabi
–prefix=/data/jenkins/workspace/GNU-toolchain/arm-13/build-arm-none-eabi/install
–with-gmp=/data/jenkins/workspace/GNU-toolchain/arm-13/build-arm-none-eabi/host-tools
–with-mpfr=/data/jenkins/workspace/GNU-toolchain/arm-13/build-arm-none-eabi/host-tools
–with-mpc=/data/jenkins/workspace/GNU-toolchain/arm-13/build-arm-none-eabi/host-tools
–with-isl=/data/jenkins/workspace/GNU-toolchain/ar [...]
+Thread model: single
+Supported LTO compression algorithms: zlib
+gcc version 13.3.1 20240614 (Arm GNU Toolchain 13.3.Rel1 (Build arm-13.24))</p>
</div></blockquote>
-</li>
-</ol>
-</section>
-<section id="implementation-details">
-<h2>Implementation details<a class="headerlink" href="#implementation-details"
title="Permalink to this heading"></a></h2>
-<p>The specific principle is based on the instrumentation of gcc.
-In the TCB (Thread Control Block) of the corresponding task,
-the maximum value of the stack pointer (sp) is recorded at the entry of each
function.
-If it is the maximum value, the backtrace is recorded.</p>
-</section>
-<section id="notice">
-<h2>Notice<a class="headerlink" href="#notice" title="Permalink to this
heading"></a></h2>
-<p>Be cautious when using the CONFIG_ARCH_INSTRUMENT_ALL option:
-1. It will instrument every function, which may have a risk of recursion.
-2. It will also instrument entry functions, such as _start(). At this point,
-the bss segment and data segment have not been initialized,
-which may cause errors. The current implementation uses a magic number to
avoid this,
-but it performs poorly during hot start. The solution is to mark
-the entry function with the noinstrument_function flag to prevent
instrumentation.</p>
+<p>Then you can see <code class="docutils literal notranslate"><span
class="pre">--disable-tls</span></code> in the output, which means that your
compiler does not support TLS.</p>
+<p>In this case, you can still use the thread local relative keyword, but it
would be implemented by libgcc’s emutls.</p>
</section>
</section>
@@ -268,8 +224,8 @@ the entry function with the noinstrument_function flag to
prevent instrumentatio
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation"
aria-label="Footer">
- <a href="stm32ccm.html" class="btn btn-neutral float-left"
title="STM32 CCM Allocator" accesskey="p" rel="prev"><span class="fa
fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
- <a href="etcromfs.html" class="btn btn-neutral float-right" title="etc
romfs" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"
aria-hidden="true"></span></a>
+ <a href="etcromfs.html" class="btn btn-neutral float-left" title="etc
romfs" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"
aria-hidden="true"></span> Previous</a>
+ <a href="../glossary.html" class="btn btn-neutral float-right"
title="Glossary" accesskey="n" rel="next">Next <span class="fa
fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
diff --git a/content/docs/latest/guides/usbtrace.html
b/content/docs/latest/guides/usbtrace.html
index d82323d53..105ca9d2b 100644
--- a/content/docs/latest/guides/usbtrace.html
+++ b/content/docs/latest/guides/usbtrace.html
@@ -148,6 +148,7 @@
<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="stackrecord.html">Run time stack statistics</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>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal"
href="../glossary.html">Glossary</a></li>
diff --git a/content/docs/latest/guides/zerolatencyinterrupts.html
b/content/docs/latest/guides/zerolatencyinterrupts.html
index acfeb7964..9d9e767fe 100644
--- a/content/docs/latest/guides/zerolatencyinterrupts.html
+++ b/content/docs/latest/guides/zerolatencyinterrupts.html
@@ -162,6 +162,7 @@
<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="stackrecord.html">Run time stack statistics</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>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal"
href="../glossary.html">Glossary</a></li>
diff --git a/content/docs/latest/index.html b/content/docs/latest/index.html
index aba7ee43e..4c649baa3 100644
--- a/content/docs/latest/index.html
+++ b/content/docs/latest/index.html
@@ -170,7 +170,7 @@ standards. Additional standard APIs from Unix and other
common RTOS’s (such as
VxWorks) are adopted for functionality not available under these standards, or
for functionality that is not appropriate for deeply-embedded environments
(such
as fork()).</p>
-<p>Last Updated: 16 July 24 at 00:17</p>
+<p>Last Updated: 17 July 24 at 00:17</p>
<div class="toctree-wrapper compound">
<p class="caption" role="heading"><span class="caption-text">Table of
Contents</span></p>
<ul class="current">
@@ -325,6 +325,7 @@ as fork()).</p>
<li class="toctree-l2"><a class="reference internal"
href="guides/stm32ccm.html">STM32 CCM Allocator</a></li>
<li class="toctree-l2"><a class="reference internal"
href="guides/stackrecord.html">Run time stack statistics</a></li>
<li class="toctree-l2"><a class="reference internal"
href="guides/etcromfs.html">etc romfs</a></li>
+<li class="toctree-l2"><a class="reference internal"
href="guides/thread_local_storage.html">Thread Local Storage</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal"
href="glossary.html">Glossary</a></li>
diff --git a/content/docs/latest/objects.inv b/content/docs/latest/objects.inv
index eba904e3a..ac740b086 100644
Binary files a/content/docs/latest/objects.inv and
b/content/docs/latest/objects.inv differ
diff --git a/content/docs/latest/searchindex.js
b/content/docs/latest/searchindex.js
index d628af6e5..fe7efb515 100644
--- a/content/docs/latest/searchindex.js
+++ b/content/docs/latest/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index",
"applications/audioutils/index", "applications/audioutils/mml_parser/index",
"applications/audioutils/nxaudio/index",
"applications/benchmarks/cachespeed/index",
"applications/benchmarks/coremark-pro/index",
"applications/benchmarks/coremark/index",
"applications/benchmarks/dhrystone/index", "applications/benchmarks/fio/index",
"applications/benchmarks/index", "applications/benchmarks/iozone/index",
"applications/bench [...]
\ No newline at end of file
+Search.setIndex({"docnames": ["applications/audioutils/fmsynt/index",
"applications/audioutils/index", "applications/audioutils/mml_parser/index",
"applications/audioutils/nxaudio/index",
"applications/benchmarks/cachespeed/index",
"applications/benchmarks/coremark-pro/index",
"applications/benchmarks/coremark/index",
"applications/benchmarks/dhrystone/index", "applications/benchmarks/fio/index",
"applications/benchmarks/index", "applications/benchmarks/iozone/index",
"applications/bench [...]
\ No newline at end of file
diff --git a/content/feed.xml b/content/feed.xml
index d2a75b307..2f79d6e36 100644
--- a/content/feed.xml
+++ b/content/feed.xml
@@ -5,8 +5,8 @@
<description></description>
<link>/</link>
<atom:link href="/feed.xml" rel="self" type="application/rss+xml"/>
- <pubDate>Tue, 16 Jul 2024 00:18:40 +0000</pubDate>
- <lastBuildDate>Tue, 16 Jul 2024 00:18:40 +0000</lastBuildDate>
+ <pubDate>Wed, 17 Jul 2024 00:19:19 +0000</pubDate>
+ <lastBuildDate>Wed, 17 Jul 2024 00:19:19 +0000</lastBuildDate>
<generator>Jekyll v4.3.2</generator>
<item>