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&gt; 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&gt; 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 &mdash; NuttX latest documentation</title>
+  <title>Thread Local Storage &mdash; NuttX latest documentation</title>
       <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
       <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
       <link rel="stylesheet" href="../_static/copybutton.css" type="text/css" 
/>
@@ -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&gt; 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>

Reply via email to