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"
157#pragma GCC diagnostic pop
159 #if CONFIGURE_MAXIMUM_USER_EXTENSIONS > 0
162 Configuration_Scheduler_node Scheduler_nodes[ _CONFIGURE_SCHEDULER_COUNT ];
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
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:3048
#define CONFIGURE_MAXIMUM_THREAD_LOCAL_STORAGE_SIZE
This configuration option is an integer define.
Definition: appl-config.h:3007
#define CONFIGURE_MAXIMUM_POSIX_THREADS
This configuration option is an integer define.
Definition: appl-config.h:4240
#define CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE
This configuration option is an integer define.
Definition: appl-config.h:4319
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:1092
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:1081
struct Thread_Configured_control Thread_Configured_control
The configured thread control block.
Definition: thread.h:1070
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:631
@ THREAD_API_RTEMS
Definition: thread.h:629
POSIX Threads Private Support.
This header file provides interfaces of the Thread Handler which are used by the implementation and t...
Definition: tasksdata.h:63
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:991
Thread priority queue.
Definition: threadq.h:349
Thread queue heads.
Definition: threadq.h:385
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.