36 #ifndef _RTEMS_CONFDEFS_THREADS_H 37 #define _RTEMS_CONFDEFS_THREADS_H 39 #ifndef __CONFIGURATION_TEMPLATE_h 40 #error "Do not include this file directly, use <rtems/confdefs.h> instead" 54 #ifndef CONFIGURE_MAXIMUM_TASKS 55 #define CONFIGURE_MAXIMUM_TASKS 0 58 #define _CONFIGURE_TASKS ( CONFIGURE_MAXIMUM_TASKS + _CONFIGURE_LIBBLOCK_TASKS ) 60 #ifndef CONFIGURE_MAXIMUM_POSIX_THREADS 61 #define CONFIGURE_MAXIMUM_POSIX_THREADS 0 64 #if CONFIGURE_MAXIMUM_POSIX_THREADS > 0 68 #if !defined(CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION) \ 69 && CONFIGURE_MAXIMUM_TASKS == 0 \ 70 && CONFIGURE_MAXIMUM_POSIX_THREADS == 0 71 #error "You must define one of CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION, CONFIGURE_MAXIMUM_TASKS, and CONFIGURE_MAXIMUM_POSIX_THREADS" 74 #if !defined(CONFIGURE_RTEMS_INIT_TASKS_TABLE) \ 75 && !defined(CONFIGURE_POSIX_INIT_THREAD_TABLE) \ 76 && !defined(CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION) 77 #error "You must define one of CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION, CONFIGURE_RTEMS_INIT_TASKS_TABLE, and CONFIGURE_POSIX_INIT_THREAD_TABLE" 80 #ifndef CONFIGURE_MAXIMUM_THREAD_NAME_SIZE 81 #define CONFIGURE_MAXIMUM_THREAD_NAME_SIZE THREAD_DEFAULT_MAXIMUM_NAME_SIZE 90 #ifdef CONFIGURE_SCHEDULER_CBS 93 #ifdef CONFIGURE_SCHEDULER_EDF 96 #ifdef CONFIGURE_SCHEDULER_EDF_SMP 99 #ifdef CONFIGURE_SCHEDULER_PRIORITY 102 #ifdef CONFIGURE_SCHEDULER_SIMPLE_SMP 105 #ifdef CONFIGURE_SCHEDULER_PRIORITY_SMP 108 #ifdef CONFIGURE_SCHEDULER_PRIORITY_AFFINITY_SMP 111 #ifdef CONFIGURE_SCHEDULER_STRONG_APA 114 #ifdef CONFIGURE_SCHEDULER_USER_PER_THREAD 115 CONFIGURE_SCHEDULER_USER_PER_THREAD User;
117 } Configuration_Scheduler_node;
120 const size_t _Scheduler_Node_size =
sizeof( Configuration_Scheduler_node );
127 #if CONFIGURE_MAXIMUM_USER_EXTENSIONS > 0 128 void *extensions[ CONFIGURE_MAXIMUM_USER_EXTENSIONS + 1 ];
130 Configuration_Scheduler_node Scheduler_nodes[ _CONFIGURE_SCHEDULER_COUNT ];
132 #ifdef RTEMS_POSIX_API 133 POSIX_API_Control API_POSIX;
135 #if CONFIGURE_MAXIMUM_THREAD_NAME_SIZE > 1 136 char name[ CONFIGURE_MAXIMUM_THREAD_NAME_SIZE ];
138 #ifdef _CONFIGURE_ENABLE_NEWLIB_REENTRANCY 139 struct _reent Newlib;
162 #if CONFIGURE_MAXIMUM_THREAD_NAME_SIZE > 1 166 Control.Join_queue.Queue.name
171 #ifdef RTEMS_POSIX_API 196 rtems_resource_maximum_per_allocation( _CONFIGURE_TASKS ) +
197 rtems_resource_maximum_per_allocation( CONFIGURE_MAXIMUM_POSIX_THREADS );
199 #if defined(RTEMS_MULTIPROCESSING) && defined(CONFIGURE_MP_APPLICATION) 200 #define _CONFIGURE_MPCI_RECEIVE_SERVER_COUNT 1 202 #define _CONFIGURE_MPCI_RECEIVE_SERVER_COUNT 0 205 THREAD_INFORMATION_DEFINE(
207 OBJECTS_INTERNAL_API,
208 OBJECTS_INTERNAL_THREADS,
209 _CONFIGURE_MAXIMUM_PROCESSORS + _CONFIGURE_MPCI_RECEIVE_SERVER_COUNT
212 #if _CONFIGURE_TASKS > 0 213 THREAD_INFORMATION_DEFINE(
221 #if CONFIGURE_MAXIMUM_POSIX_THREADS > 0 222 const size_t _POSIX_Threads_Minimum_stack_size =
223 CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE;
225 THREAD_INFORMATION_DEFINE(
228 OBJECTS_POSIX_THREADS,
229 CONFIGURE_MAXIMUM_POSIX_THREADS
Definition: tasksdata.h:41
union _Thread_queue_Heads::@3986 Heads
Scheduler node specialization for EDF schedulers.
Definition: scheduleredf.h:90
Thread priority queue.
Definition: threadq.h:324
Evaluate Per-CPU Configuration Options.
Evaluate Unlimited Objects Configuration Options.
Evaluate Scheduler Configuration Options.
POSIX Threads Private Support.
POSIX Thread API Support.
Thread_queue_Priority_queue Priority
This is the set of threads for priority discipline waiting.
Definition: threadq.h:378
#define _Thread_queue_Heads_size
Size of the thread queue heads of a particular application.
Definition: thread.h:991
const size_t _Thread_Control_add_on_count
Thread control add-on count.
const Thread_Control_add_on _Thread_Control_add_ons[]
Thread control add-ons.
Thread queue heads.
Definition: threadq.h:360
Definition: scheduleredfsmp.h:38
Evaluate User Extensions Configuration Options.
Thread control add-on.
Definition: thread.h:900
Scheduler node specialization for SMP schedulers.
Definition: schedulersmp.h:100
Scheduler node specialization for Deterministic Priority schedulers.
Definition: schedulerpriority.h:101
Scheduler node specialization for Strong APA schedulers.
Definition: schedulerstrongapa.h:66
Scheduler node for per-thread data.
Definition: schedulernode.h:79
Scheduler node specialization for Deterministic Priority SMP schedulers.
Definition: schedulerprioritysmp.h:66
Definition: schedulercbs.h:138
Thread_queue_Heads Thread_queue_Configured_heads
The configured thread queue heads.
Definition: thread.h:980
Evaluate Block Device Cache Configuration Options.
Constants and Structures Related with the Thread Control Block.
struct Thread_Configured_control Thread_Configured_control
The configured thread control block.
Definition: thread.h:969
Scheduler node specialization for Deterministic Priority Affinity SMP schedulers.
Definition: schedulerpriorityaffinitysmp.h:230
const size_t _Thread_Initial_thread_count
Count of configured threads.
const size_t _Thread_Maximum_name_size
Maximum size of a thread name in characters (including the terminating '\0' character).
Classic Tasks Manager Data Structures.