21 #ifndef _RTEMS_SCORE_THREADQ_H 22 #define _RTEMS_SCORE_THREADQ_H 90 #if defined(RTEMS_MULTIPROCESSING) 101 typedef void ( *Thread_queue_MP_callout )(
107 #if defined(RTEMS_SMP) 121 Atomic_Uint go_ahead;
132 #if defined(RTEMS_SMP) 152 #if defined(RTEMS_SMP) 240 #if defined(RTEMS_SMP) 306 #if defined(RTEMS_MULTIPROCESSING) 317 Thread_queue_MP_callout mp_callout;
325 #if defined(RTEMS_SMP) 374 #if !defined(RTEMS_SMP) 394 #if defined(RTEMS_SMP) 415 #if defined(RTEMS_SMP) 553 #if defined(RTEMS_SMP) 554 #if defined(RTEMS_DEBUG) 569 #if defined(RTEMS_PROFILING) 576 SMP_lock_Stats Lock_stats;
Watchdog_Interval ticks
The timeout in ticks.
Thread_Control * owner
The thread queue owner.
The priority aggregation.
void(* Thread_queue_Deadlock_callout)(Thread_Control *the_thread)
Thread queue deadlock callout.
struct Thread_queue_Context::@30 Path
Representation of a thread queue path from a start thread queue to the terminal thread queue...
Thread_Control *(* Thread_queue_Surrender_operation)(Thread_queue_Queue *queue, Thread_queue_Heads *heads, Thread_Control *previous_owner, Thread_queue_Context *queue_context)
Thread queue surrender operation.
Thread_queue_Queue * source
The source thread queue determined by the thread queue owner.
uint32_t Watchdog_Interval
Type is used to specify the length of intervals.
Thread queue context for the thread queue methods.
Priority_Actions Actions
A priority action list.
Thread_Control * owner
The owner of this thread queue link.
Thread_Control * update[2]
Threads to update the priority via _Thread_Priority_update().
Thread_queue_Lock_context Lock_context
The queue lock context used to acquire the thread wait lock of the owner.
Thread_queue_Enqueue_callout enqueue_callout
The enqueue callout for _Thread_queue_Enqueue().
A thread queue link from one thread to another specified by the thread queue owner and thread wait qu...
Constants and Structures Associated with the Object Handler.
Thread_queue_Priority_queue Priority[RTEMS_ZERO_LENGTH_ARRAY]
One priority queue per scheduler instance.
Thread_queue_Deadlock_callout deadlock_callout
Invoked in case of a detected deadlock.
void(* Thread_queue_Enqueue_operation)(Thread_queue_Queue *queue, Thread_Control *the_thread, Thread_queue_Context *queue_context)
Thread queue enqueue operation.
A list of priority actions.
Constants and Structures Associated with the Red-Black Tree Handler.
Thread Execution State Information.
Thread_queue_First_operation first
Thread queue first operation.
Chain_Node Node
Node to enqueue this queue in the FIFO chain of the corresponding heads structure.
Thread_queue_Queue * queue
The thread queue in case the thread is blocked on a thread queue.
Thread_queue_Link Deadlock
In case of a deadlock, a link for the first thread on the path that tries to enqueue on a thread queu...
size_t update_count
Count of threads to update the priority via _Thread_Priority_update().
Thread_queue_Queue Queue
The actual thread queue.
Thread_queue_Heads * heads
The thread queue heads.
Chain_Node Path_node
Node to add this link to a thread queue path.
Chain_Control Free_chain
A chain with free thread queue heads providing the spare thread queue heads for a thread once it is d...
#define RTEMS_ZERO_LENGTH_ARRAY
This is a constant to declare zero-length arrays.
Priority_Aggregation Queue
The actual thread priority queue.
void(* Thread_queue_Extract_operation)(Thread_queue_Queue *queue, Thread_Control *the_thread, Thread_queue_Context *queue_context)
Thread queue extract operation.
Thread_queue_Surrender_operation surrender
Thread queue surrender operation.
Thread_queue_Queue * target
The target thread queue determined by the thread wait queue of the source owner.
Thread_queue_Gate Gate
Gate to synchronize thread wait lock requests.
Thread_Control *(* Thread_queue_First_operation)(Thread_queue_Heads *heads)
Thread queue first operation.
const char * name
The thread queue name.
struct Thread_queue_Context::@31 Priority
Block to manage thread priority changes due to a thread queue operation.
void(* Thread_queue_Enqueue_callout)(Thread_queue_Queue *queue, Thread_Control *the_thread, struct Per_CPU_Control *cpu_self, Thread_queue_Context *queue_context)
Thread queue enqueue callout.
Thread_queue_Lock_context Lock_context
The lock context for the thread queue acquire and release operations.
Thread_queue_Priority_actions_operation priority_actions
Thread queue priority actions operation.
Thread_queue_Extract_operation extract
Thread queue extract operation.
SMP_ticket_lock_Control Lock
Lock to protect this thread queue.
struct _Thread_queue_Heads Thread_queue_Heads
Thread queue heads.
States_Control thread_state
The thread state for _Thread_queue_Enqueue().
Constants for the watchdog ticks.
Chain_Node Free_node
A chain node to add these thread queue heads to the free chain of the thread queue heads dedicated to...
Thread_queue_Enqueue_operation enqueue
Thread queue enqueue operation.
Scheduler node for per-thread data.
The thread queue gate is an SMP synchronization means.
struct Scheduler_Node * scheduler_node
This priority queue is added to a scheduler node of the owner in case of priority inheritance...
RBTree_Node Registry_node
Node to register this link in the global thread queue links lookup tree.
Chain_Control Links
The chain of thread queue links defining the thread queue path.
void(* Thread_queue_Priority_actions_operation)(Thread_queue_Queue *queue, Priority_Actions *priority_actions)
Thread queue action operation.
const void * arg
The timeout argument, e.g. pointer to struct timespec.
Local ISR lock context for acquire and release pairs.
ISR_lock_Context Lock_context
The lock context for the thread queue acquire and release operations.
Thread_queue_Link Start
The start of a thread queue path.
union Thread_queue_Context::@29 Timeout
Interval to wait.
Chain_Control Fifo
This is the FIFO discipline list.
union _Thread_queue_Heads::@32 Heads