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
205THREAD_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
Evaluate Block Device Cache Configuration Options.
Evaluate Per-CPU Configuration Options.
Evaluate Scheduler Configuration Options.
Evaluate User Extensions Configuration Options.
const size_t _Thread_Initial_thread_count
Count of configured threads.
#define _Thread_queue_Heads_size
Size of the thread queue heads of a particular application.
Definition: thread.h:991
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:980
struct Thread_Configured_control Thread_Configured_control
The configured thread control block.
Definition: thread.h:969
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:593
@ THREAD_API_RTEMS
Definition: thread.h:591
POSIX Threads Private Support.
Constants and Structures Related with the Thread Control Block.
Definition: tasksdata.h:41
Definition: schedulercbs.h:138
Scheduler node specialization for EDF schedulers.
Definition: scheduleredf.h:90
Definition: scheduleredfsmp.h:38
Scheduler node for per-thread data.
Definition: schedulernode.h:79
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 Deterministic Priority SMP schedulers.
Definition: schedulerprioritysmp.h:66
Scheduler node specialization for Deterministic Priority Affinity SMP schedulers.
Definition: schedulerpriorityaffinitysmp.h:230
Scheduler node specialization for Strong APA schedulers.
Definition: schedulerstrongapa.h:66
Thread control add-on.
Definition: thread.h:900
Thread priority queue.
Definition: threadq.h:324
Thread queue heads.
Definition: threadq.h:360
union _Thread_queue_Heads::@3987 Heads
Thread_queue_Priority_queue Priority
This is the set of threads for priority discipline waiting.
Definition: threadq.h:378
Classic Tasks Manager Data Structures.
POSIX Thread API Support.
Evaluate Unlimited Objects Configuration Options.