STAR
Cal STAR — firmware, DAQ server, and engine design
Loading...
Searching...
No Matches
picolibc-freertos.h
Go to the documentation of this file.
1
/*
2
* FreeRTOS Kernel V10.6.2
3
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
4
*
5
* SPDX-License-Identifier: MIT
6
*
7
* Permission is hereby granted, free of charge, to any person obtaining a copy of
8
* this software and associated documentation files (the "Software"), to deal in
9
* the Software without restriction, including without limitation the rights to
10
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
11
* the Software, and to permit persons to whom the Software is furnished to do so,
12
* subject to the following conditions:
13
*
14
* The above copyright notice and this permission notice shall be included in all
15
* copies or substantial portions of the Software.
16
*
17
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
19
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
20
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
21
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23
*
24
* https://www.FreeRTOS.org
25
* https://github.com/FreeRTOS
26
*
27
*/
28
29
#ifndef INC_PICOLIBC_FREERTOS_H
30
#define INC_PICOLIBC_FREERTOS_H
31
32
/* Use picolibc TLS support to allocate space for __thread variables,
33
* initialize them at thread creation and set the TLS context at
34
* thread switch time.
35
*
36
* See the picolibc TLS docs:
37
* https://github.com/picolibc/picolibc/blob/main/doc/tls.md
38
* for additional information. */
39
40
#include <picotls.h>
41
42
#define configUSE_C_RUNTIME_TLS_SUPPORT 1
43
44
#define configTLS_BLOCK_TYPE void *
45
46
#define picolibcTLS_SIZE ( ( portPOINTER_SIZE_TYPE ) _tls_size() )
47
#define picolibcSTACK_ALIGNMENT_MASK ( ( portPOINTER_SIZE_TYPE ) portBYTE_ALIGNMENT_MASK )
48
49
#if __PICOLIBC_MAJOR__ > 1 || __PICOLIBC_MINOR__ >= 8
50
51
/* Picolibc 1.8 and newer have explicit alignment values provided
52
* by the _tls_align() inline */
53
#define picolibcTLS_ALIGNMENT_MASK ( ( portPOINTER_SIZE_TYPE ) ( _tls_align() - 1 ) )
54
#else
55
56
/* For older Picolibc versions, use the general port alignment value */
57
#define picolibcTLS_ALIGNMENT_MASK ( ( portPOINTER_SIZE_TYPE ) portBYTE_ALIGNMENT_MASK )
58
#endif
59
60
/* Allocate thread local storage block off the end of the
61
* stack. The _tls_size() function returns the size (in
62
* bytes) of the total TLS area used by the application */
63
#if ( portSTACK_GROWTH < 0 )
64
65
#define configINIT_TLS_BLOCK( xTLSBlock, pxTopOfStack ) \
66
do { \
67
pxTopOfStack = ( StackType_t * ) ( ( ( ( portPOINTER_SIZE_TYPE ) pxTopOfStack ) \
68
- picolibcTLS_SIZE ) & ~ \
69
configMAX( picolibcSTACK_ALIGNMENT_MASK, \
70
picolibcTLS_ALIGNMENT_MASK ) ); \
71
xTLSBlock = pxTopOfStack; \
72
_init_tls( xTLSBlock ); \
73
} while( 0 )
74
#else
/* portSTACK_GROWTH */
75
#define configINIT_TLS_BLOCK( xTLSBlock, pxTopOfStack ) \
76
do { \
77
xTLSBlock = ( void * ) ( ( ( portPOINTER_SIZE_TYPE ) pxTopOfStack + \
78
picolibcTLS_ALIGNMENT_MASK ) & ~picolibcTLS_ALIGNMENT_MASK ); \
79
pxTopOfStack = ( StackType_t * ) ( ( ( ( ( portPOINTER_SIZE_TYPE ) xTLSBlock ) + \
80
picolibcTLS_SIZE ) + picolibcSTACK_ALIGNMENT_MASK ) & \
81
~picolibcSTACK_ALIGNMENT_MASK ); \
82
_init_tls( xTLSBlock ); \
83
} while( 0 )
84
#endif
/* portSTACK_GROWTH */
85
86
#define configSET_TLS_BLOCK( xTLSBlock ) _set_tls( xTLSBlock )
87
88
#define configDEINIT_TLS_BLOCK( xTLSBlock )
89
90
#endif
/* INC_PICOLIBC_FREERTOS_H */
firmware
Flight_Computer
Middlewares
Third_Party
FreeRTOS
Source
include
picolibc-freertos.h
Generated by
1.15.0