37#ifndef _RTEMS_CONFDEFS_THREADS_H
38#define _RTEMS_CONFDEFS_THREADS_H
40#ifndef __CONFIGURATION_TEMPLATE_h
41#error "Do not include this file directly, use <rtems/confdefs.h> instead"
58#ifndef CONFIGURE_MAXIMUM_TASKS
59 #define CONFIGURE_MAXIMUM_TASKS 0
62#define _CONFIGURE_TASKS ( CONFIGURE_MAXIMUM_TASKS + _CONFIGURE_LIBBLOCK_TASKS )
64#ifndef CONFIGURE_MINIMUM_TASKS_WITH_USER_PROVIDED_STORAGE
65 #define CONFIGURE_MINIMUM_TASKS_WITH_USER_PROVIDED_STORAGE 0
68#if CONFIGURE_MINIMUM_TASKS_WITH_USER_PROVIDED_STORAGE > CONFIGURE_MAXIMUM_TASKS
69 #error "CONFIGURE_MINIMUM_TASKS_WITH_USER_PROVIDED_STORAGE shall be less than or equal to CONFIGURE_MAXIMUM_TASKS"
72#ifndef CONFIGURE_MAXIMUM_POSIX_THREADS
73 #define CONFIGURE_MAXIMUM_POSIX_THREADS 0
76#if CONFIGURE_MAXIMUM_POSIX_THREADS > 0
80#if !defined(CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION) \
81 && CONFIGURE_MAXIMUM_TASKS == 0 \
82 && CONFIGURE_MAXIMUM_POSIX_THREADS == 0
83 #error "You must define one of CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION, CONFIGURE_MAXIMUM_TASKS, and CONFIGURE_MAXIMUM_POSIX_THREADS"
86#if !defined(CONFIGURE_RTEMS_INIT_TASKS_TABLE) \
87 && !defined(CONFIGURE_POSIX_INIT_THREAD_TABLE) \
88 && !defined(CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION)
89 #error "You must define one of CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION, CONFIGURE_RTEMS_INIT_TASKS_TABLE, and CONFIGURE_POSIX_INIT_THREAD_TABLE"
92#ifndef CONFIGURE_MAXIMUM_THREAD_NAME_SIZE
93 #define CONFIGURE_MAXIMUM_THREAD_NAME_SIZE THREAD_DEFAULT_MAXIMUM_NAME_SIZE
96#ifndef CONFIGURE_MAXIMUM_THREAD_LOCAL_STORAGE_SIZE
97 #define CONFIGURE_MAXIMUM_THREAD_LOCAL_STORAGE_SIZE 0
106 #ifdef CONFIGURE_SCHEDULER_CBS
109 #ifdef CONFIGURE_SCHEDULER_EDF
112 #ifdef CONFIGURE_SCHEDULER_EDF_SMP
115 #ifdef CONFIGURE_SCHEDULER_PRIORITY
118 #ifdef CONFIGURE_SCHEDULER_SIMPLE_SMP
121 #ifdef CONFIGURE_SCHEDULER_PRIORITY_SMP
124 #ifdef CONFIGURE_SCHEDULER_PRIORITY_AFFINITY_SMP
127 #ifdef CONFIGURE_SCHEDULER_STRONG_APA
130 #ifdef CONFIGURE_SCHEDULER_USER_PER_THREAD
131 CONFIGURE_SCHEDULER_USER_PER_THREAD User;
133} Configuration_Scheduler_node;
136 const size_t _Scheduler_Node_size =
sizeof( Configuration_Scheduler_node );
154#pragma GCC diagnostic push
155#pragma GCC diagnostic ignored "-Wpedantic"
156 Thread_Control Control;
157#pragma GCC diagnostic pop
159 #if CONFIGURE_MAXIMUM_USER_EXTENSIONS > 0
162 Configuration_Scheduler_node Scheduler_nodes[ _CONFIGURE_SCHEDULER_COUNT ];
163 RTEMS_API_Control API_RTEMS;
164 #ifdef RTEMS_POSIX_API
165 POSIX_API_Control API_POSIX;
167 #if CONFIGURE_MAXIMUM_THREAD_NAME_SIZE > 1
170 #if defined(_CONFIGURE_ENABLE_NEWLIB_REENTRANCY) && \
171 !defined(_REENT_THREAD_LOCAL)
172 struct _reent Newlib;
187 #if defined(_CONFIGURE_ENABLE_NEWLIB_REENTRANCY) && \
188 !defined(_REENT_THREAD_LOCAL)
197 #if CONFIGURE_MAXIMUM_THREAD_NAME_SIZE > 1
201 Control.Join_queue.Queue.name
206 #ifdef RTEMS_POSIX_API
226#pragma GCC diagnostic push
227#pragma GCC diagnostic ignored "-Wpedantic"
229#pragma GCC diagnostic pop
230 Thread_queue_Priority_queue Priority[ _CONFIGURE_SCHEDULER_COUNT ];
238#if !defined(CONFIGURE_IDLE_TASK_STORAGE_SIZE) && \
239 !defined(CONFIGURE_TASK_STACK_ALLOCATOR_FOR_IDLE)
240 _CONFIGURE_MAXIMUM_PROCESSORS +
245#if defined(RTEMS_MULTIPROCESSING) && defined(CONFIGURE_MP_APPLICATION)
246 #define _CONFIGURE_MPCI_RECEIVE_SERVER_COUNT 1
248 #define _CONFIGURE_MPCI_RECEIVE_SERVER_COUNT 0
251THREAD_INFORMATION_DEFINE(
253 OBJECTS_INTERNAL_API,
254 OBJECTS_INTERNAL_THREADS,
255 _CONFIGURE_MAXIMUM_PROCESSORS + _CONFIGURE_MPCI_RECEIVE_SERVER_COUNT
258#if _CONFIGURE_TASKS > 0
259 THREAD_INFORMATION_DEFINE(
267#if CONFIGURE_MAXIMUM_POSIX_THREADS > 0
268 const size_t _POSIX_Threads_Minimum_stack_size =
271 THREAD_INFORMATION_DEFINE(
274 OBJECTS_POSIX_THREADS,
This header file evaluates configuration options related to the block device cache configuration.
This header file evaluates configuration options related to the per-CPU configuration.
This header file evaluates configuration options related to the scheduler configuration.
This header file evaluates configuration options related to the user extensions configuration.
#define RTEMS_STATIC_ASSERT(_cond, _msg)
It is defined if a static analysis run is performed.
Definition basedefs.h:841
#define RTEMS_ARRAY_SIZE(_array)
Gets the element count of the array.
Definition basedefs.h:244
#define RTEMS_TASK_STORAGE_ALIGNMENT
This compile time constant defines the recommended alignment of a task storage area in bytes.
Definition tasks.h:365
#define rtems_resource_maximum_per_allocation(_resource)
Gets the maximum number per allocation of a resource number.
Definition config.h:890
#define CONFIGURE_MAXIMUM_USER_EXTENSIONS
This configuration option is an integer define.
Definition appl-config.h:835
#define CONFIGURE_MAXIMUM_THREAD_NAME_SIZE
This configuration option is an integer define.
Definition appl-config.h:3050
#define CONFIGURE_MAXIMUM_THREAD_LOCAL_STORAGE_SIZE
This configuration option is an integer define.
Definition appl-config.h:3009
#define CONFIGURE_MAXIMUM_POSIX_THREADS
This configuration option is an integer define.
Definition appl-config.h:4242
#define CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE
This configuration option is an integer define.
Definition appl-config.h:4321
struct _Thread_queue_Heads Thread_queue_Heads
Thread queue heads.
const size_t _Thread_Initial_thread_count
Count of configured threads.
const size_t _Thread_Maximum_TLS_size
If this constant is greater than zero, then it defines the maximum thread-local storage size,...
#define _Thread_queue_Heads_size
Size of the thread queue heads of a particular application.
Definition thread.h:1127
const Thread_Control_add_on _Thread_Control_add_ons[]
Thread control add-ons.
const size_t _Thread_Control_add_on_count
Thread control add-on count.
Thread_queue_Heads Thread_queue_Configured_heads
The configured thread queue heads.
Definition thread.h:1116
struct Thread_Configured_control Thread_Configured_control
The configured thread control block.
Definition thread.h:1105
const size_t _Thread_Maximum_name_size
Maximum size of a thread name in characters (including the terminating '\0' character).
@ THREAD_API_POSIX
Definition thread.h:656
@ THREAD_API_RTEMS
Definition thread.h:654
POSIX Threads Private Support.
This header file provides interfaces of the Thread Handler which are used by the implementation and t...
Definition schedulercbs.h:156
Scheduler node specialization for EDF schedulers.
Definition scheduleredf.h:107
Definition scheduleredfsmp.h:59
Scheduler node for per-thread data.
Definition schedulernode.h:94
Scheduler node specialization for SMP schedulers.
Definition schedulersmp.h:106
Scheduler node specialization for Deterministic Priority schedulers.
Definition schedulerpriority.h:119
Scheduler node specialization for Deterministic Priority SMP schedulers.
Definition schedulerprioritysmp.h:82
Scheduler node specialization for Deterministic Priority Affinity SMP schedulers.
Definition schedulerpriorityaffinitysmp.h:288
Scheduler node specialization for Strong APA schedulers.
Definition schedulerstrongapa.h:74
Thread control add-on.
Definition thread.h:1026
This header file provides data structures used by the implementation and the Application Configuratio...
POSIX Thread API Support.
This header file evaluates configuration options related to the unlimited objects configuration.