diff options
Diffstat (limited to 'cpukit/include')
-rw-r--r-- | cpukit/include/rtems/confdefs/threads.h | 7 | ||||
-rw-r--r-- | cpukit/include/rtems/rtems/tasks.h | 9 | ||||
-rw-r--r-- | cpukit/include/rtems/score/interr.h | 3 | ||||
-rw-r--r-- | cpukit/include/rtems/score/thread.h | 10 |
4 files changed, 28 insertions, 1 deletions
diff --git a/cpukit/include/rtems/confdefs/threads.h b/cpukit/include/rtems/confdefs/threads.h index 33b8c5cee2..9e34696e61 100644 --- a/cpukit/include/rtems/confdefs/threads.h +++ b/cpukit/include/rtems/confdefs/threads.h @@ -84,6 +84,10 @@ #define CONFIGURE_MAXIMUM_THREAD_NAME_SIZE THREAD_DEFAULT_MAXIMUM_NAME_SIZE #endif +#ifndef CONFIGURE_MAXIMUM_THREAD_LOCAL_STORAGE_SIZE + #define CONFIGURE_MAXIMUM_THREAD_LOCAL_STORAGE_SIZE 0 +#endif + #ifdef __cplusplus extern "C" { #endif @@ -125,6 +129,9 @@ typedef union { const size_t _Thread_Maximum_name_size = CONFIGURE_MAXIMUM_THREAD_NAME_SIZE; +const size_t _Thread_Maximum_TLS_size = + CONFIGURE_MAXIMUM_THREAD_LOCAL_STORAGE_SIZE; + struct Thread_Configured_control { Thread_Control Control; #if CONFIGURE_MAXIMUM_USER_EXTENSIONS > 0 diff --git a/cpukit/include/rtems/rtems/tasks.h b/cpukit/include/rtems/rtems/tasks.h index 12c323e60e..e07db6cd2b 100644 --- a/cpukit/include/rtems/rtems/tasks.h +++ b/cpukit/include/rtems/rtems/tasks.h @@ -165,6 +165,15 @@ rtems_status_code rtems_task_create( ); /** + * @brief This constant defines the recommended alignment of a task storage + * area in bytes. + * + * Use it with RTEMS_ALIGNED() to define the alignment of a statically + * allocated task storage area. + */ +#define RTEMS_TASK_STORAGE_ALIGNMENT CPU_HEAP_ALIGNMENT + +/** * @brief RTEMS Task Name to Id * * This routine implements the rtems_task_ident directive. diff --git a/cpukit/include/rtems/score/interr.h b/cpukit/include/rtems/score/interr.h index 2f449deedb..1371e55653 100644 --- a/cpukit/include/rtems/score/interr.h +++ b/cpukit/include/rtems/score/interr.h @@ -203,7 +203,8 @@ typedef enum { INTERNAL_ERROR_LIBIO_STDERR_FD_OPEN_FAILED = 37, INTERNAL_ERROR_ILLEGAL_USE_OF_FLOATING_POINT_UNIT = 38, INTERNAL_ERROR_ARC4RANDOM_GETENTROPY_FAIL = 39, - INTERNAL_ERROR_NO_MEMORY_FOR_PER_CPU_DATA = 40 + INTERNAL_ERROR_NO_MEMORY_FOR_PER_CPU_DATA = 40, + INTERNAL_ERROR_TOO_LARGE_TLS_SIZE = 41 } Internal_errors_Core_list; typedef CPU_Uint32ptr Internal_errors_t; diff --git a/cpukit/include/rtems/score/thread.h b/cpukit/include/rtems/score/thread.h index 1daf6143f9..1388744548 100644 --- a/cpukit/include/rtems/score/thread.h +++ b/cpukit/include/rtems/score/thread.h @@ -954,6 +954,16 @@ extern const size_t _Thread_Initial_thread_count; extern const size_t _Thread_Maximum_name_size; /** + * @brief If this constant is greater than zero, then it defines the maximum + * thread-local storage size, otherwise the thread-local storage size is defined + * by the linker depending on the thread-local storage objects used by the + * application in the statically-linked executable. + * + * This value is provided via <rtems/confdefs.h>. + */ +extern const size_t _Thread_Maximum_TLS_size; + +/** * @brief The configured thread control block. * * This type is defined in <rtems/confdefs.h> and depends on the application |