Skip to content

Commit f3afb95

Browse files
committed
TLS: Add configRESET_TLS_BLOCK macro to reset TLS to default value
Useful when calling libc functions in exception handlers.
1 parent 02718f1 commit f3afb95

File tree

3 files changed

+21
-4
lines changed

3 files changed

+21
-4
lines changed

include/FreeRTOS.h

+8-4
Original file line numberDiff line numberDiff line change
@@ -117,19 +117,23 @@
117117
#if ( configUSE_C_RUNTIME_TLS_SUPPORT == 1 )
118118

119119
#ifndef configTLS_BLOCK_TYPE
120-
#error Missing definition: configTLS_BLOCK_TYPE must be defined in FreeRTOSConfig.h when configUSE_C_RUNTIME_TLS_SUPPORT is set to 1.
120+
#error Missing definition: configTLS_BLOCK_TYPE must be defined when configUSE_C_RUNTIME_TLS_SUPPORT is set to 1.
121121
#endif
122122

123123
#ifndef configINIT_TLS_BLOCK
124-
#error Missing definition: configINIT_TLS_BLOCK must be defined in FreeRTOSConfig.h when configUSE_C_RUNTIME_TLS_SUPPORT is set to 1.
124+
#error Missing definition: configINIT_TLS_BLOCK must be defined when configUSE_C_RUNTIME_TLS_SUPPORT is set to 1.
125125
#endif
126126

127127
#ifndef configSET_TLS_BLOCK
128-
#error Missing definition: configSET_TLS_BLOCK must be defined in FreeRTOSConfig.h when configUSE_C_RUNTIME_TLS_SUPPORT is set to 1.
128+
#error Missing definition: configSET_TLS_BLOCK must be defined when configUSE_C_RUNTIME_TLS_SUPPORT is set to 1.
129+
#endif
130+
131+
#ifndef configRESET_TLS_BLOCK
132+
#error Missing definition: configRESET_TLS_BLOCK must be defined when configUSE_C_RUNTIME_TLS_SUPPORT is set to 1.
129133
#endif
130134

131135
#ifndef configDEINIT_TLS_BLOCK
132-
#error Missing definition: configDEINIT_TLS_BLOCK must be defined in FreeRTOSConfig.h when configUSE_C_RUNTIME_TLS_SUPPORT is set to 1.
136+
#error Missing definition: configDEINIT_TLS_BLOCK must be defined when configUSE_C_RUNTIME_TLS_SUPPORT is set to 1.
133137
#endif
134138
#endif /* if ( configUSE_C_RUNTIME_TLS_SUPPORT == 1 ) */
135139

include/newlib-freertos.h

+9
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,15 @@
6565
while( 0 )
6666
#endif /* configSET_TLS_BLOCK */
6767

68+
#ifndef configRESET_TLS_BLOCK
69+
#define configRESET_TLS_BLOCK() \
70+
do \
71+
{ \
72+
_impure_ptr = _global_impure_ptr; \
73+
} \
74+
while( 0 )
75+
#endif /* configRESET_TLS_BLOCK */
76+
6877
#ifndef configDEINIT_TLS_BLOCK
6978
#define configDEINIT_TLS_BLOCK( xTLSBlock ) \
7079
do \

include/picolibc-freertos.h

+4
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,10 @@
9292
#define configSET_TLS_BLOCK( xTLSBlock ) _set_tls( xTLSBlock )
9393
#endif /* configSET_TLS_BLOCK */
9494

95+
#ifndef configRESET_TLS_BLOCK
96+
#define configRESET_TLS_BLOCK( xTLSBlock )
97+
#endif /* configRESET_TLS_BLOCK */
98+
9599
#ifndef configDEINIT_TLS_BLOCK
96100
#define configDEINIT_TLS_BLOCK( xTLSBlock )
97101
#endif /* configDEINIT_TLS_BLOCK */

0 commit comments

Comments
 (0)