39#ifndef _RTEMS_SCORE_THREADQ_H
40#define _RTEMS_SCORE_THREADQ_H
92 Thread_Control *the_thread,
105 Thread_Control *the_thread
108#if defined(RTEMS_MULTIPROCESSING)
119typedef void ( *Thread_queue_MP_callout )(
120 Thread_Control *the_proxy,
125#if defined(RTEMS_SMP)
139 Atomic_Uint go_ahead;
150#if defined(RTEMS_SMP)
160 Thread_queue_Gate Gate;
170#if defined(RTEMS_SMP)
201 Thread_Control *owner;
265#if defined(RTEMS_SMP)
285 Thread_queue_Link Start;
291 Thread_queue_Link Deadlock;
318 Thread_Control *
update[ 2 ];
331#if defined(RTEMS_MULTIPROCESSING)
342 Thread_queue_MP_callout mp_callout;
350#if defined(RTEMS_SMP)
399#if !defined(RTEMS_SMP)
419#if defined(RTEMS_SMP)
428#if defined(RTEMS_SMP)
441 SMP_ticket_lock_Control Lock;
490 Thread_Control *the_thread,
502 Thread_Control *the_thread,
517typedef Thread_Control *( *Thread_queue_Surrender_operation )(
520 Thread_Control *previous_owner,
534typedef Thread_Control *( *Thread_queue_First_operation )(
610#if defined(RTEMS_SMP)
611#if defined(RTEMS_DEBUG)
626#if defined(RTEMS_PROFILING)
633 SMP_lock_Stats Lock_stats;
#define RTEMS_ZERO_LENGTH_ARRAY
This constant represents the element count of a zero-length array.
Definition basedefs.h:1032
uint32_t Objects_Id
Definition object.h:101
uint32_t States_Control
Definition states.h:65
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.
Definition threadq.h:90
void(*) Thread_queue_Extract_operation(Thread_queue_Queue *queue, Thread_Control *the_thread, Thread_queue_Context *queue_context)
Thread queue extract operation.
Definition threadq.h:500
void(*) Thread_queue_Priority_actions_operation(Thread_queue_Queue *queue, Priority_Actions *priority_actions)
Thread queue action operation.
Definition threadq.h:473
Thread_Control *(*) Thread_queue_First_operation(const Thread_queue_Heads *heads)
Gets the first thread on the queue.
Definition threadq.h:534
struct _Thread_queue_Heads Thread_queue_Heads
Thread queue heads.
void(*) Thread_queue_Deadlock_callout(Thread_Control *the_thread)
Thread queue deadlock callout.
Definition threadq.h:104
void(*) Thread_queue_Enqueue_operation(Thread_queue_Queue *queue, Thread_Control *the_thread, Thread_queue_Context *queue_context)
Thread queue enqueue operation.
Definition threadq.h:488
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.
Definition threadq.h:517
uint32_t Watchdog_Interval
Type is used to specify the length of intervals.
Definition watchdogticks.h:59
This header file provides the interfaces of the ISR Locks.
This header file provides interfaces of the Priority Handler which are used by the implementation and...
This header file provides interfaces of the Red-Black Tree Handler which are used by the implementati...
This header file provides interfaces of the Chain Handler which are used by the implementation and th...
This header file provides interfaces of the Object Handler which are used by the implementation and t...
This header file provides interfaces of the Thread States which are used by the implementation and th...
This structure represents a chain node.
Definition chain.h:78
Local ISR lock context for acquire and release pairs.
Definition isrlock.h:94
Per CPU Core Structure.
Definition percpu.h:384
A list of priority actions.
Definition priority.h:207
The priority aggregation.
Definition priority.h:147
Red-black tree node.
Definition rbtree.h:73
Scheduler node for per-thread data.
Definition schedulernode.h:94
Priority_Actions Actions
A priority action list.
Thread_Control * update[2]
Threads to update the priority via _Thread_Priority_update().
size_t update_count
Count of threads to update the priority via _Thread_Priority_update().
Thread queue context for the thread queue methods.
Definition threadq.h:216
Thread_queue_Enqueue_callout enqueue_callout
The enqueue callout for _Thread_queue_Enqueue().
Definition threadq.h:240
Thread_queue_Deadlock_callout deadlock_callout
Invoked in case of a detected deadlock.
Definition threadq.h:329
bool timeout_absolute
If this member is true, the timeout shall be absolute, otherwise it shall be relative to the current ...
Definition threadq.h:263
Thread_queue_Lock_context Lock_context
The lock context for the thread queue acquire and release operations.
Definition threadq.h:221
States_Control thread_state
The thread state for _Thread_queue_Enqueue().
Definition threadq.h:226
Thread_queue_Queue Queue
The actual thread queue.
Definition threadq.h:640
ISR_lock_Context Lock_context
The lock context for the thread queue acquire and release operations.
Definition threadq.h:148
The thread queue operations are used to manage the threads of a thread queue.
Definition threadq.h:554
Thread_queue_Surrender_operation surrender
This operation is used to dequeue the thread from the thread queue and optionally surrender the threa...
Definition threadq.h:593
Thread_queue_First_operation first
This operation returns the first thread on the thread queue.
Definition threadq.h:602
Thread_queue_Extract_operation extract
This operation is used to extract the thread from the thread queue.
Definition threadq.h:580
Thread_queue_Enqueue_operation enqueue
This operation is used to enqueue the thread on the thread queue.
Definition threadq.h:568
Thread_queue_Priority_actions_operation priority_actions
This operation performs the thread queue priority actions.
Definition threadq.h:561
Thread priority queue.
Definition threadq.h:349
struct Scheduler_Node * scheduler_node
This priority queue is added to a scheduler node of the owner in case of priority inheritance.
Definition threadq.h:369
Priority_Aggregation Queue
The actual thread priority queue.
Definition threadq.h:363
const char * name
The thread queue name.
Definition threadq.h:461
Thread_queue_Heads * heads
The thread queue heads.
Definition threadq.h:451
Thread_Control * owner
The thread queue owner.
Definition threadq.h:456
Thread queue heads.
Definition threadq.h:385
Chain_Node Free_node
A chain node to add these thread queue heads to the free chain of the thread queue heads dedicated to...
Definition threadq.h:417
Chain_Control Free_chain
A chain with free thread queue heads providing the spare thread queue heads for a thread once it is d...
Definition threadq.h:411
This union represents a chain control block.
Definition chain.h:96
const void * arg
The timeout argument, e.g. pointer to struct timespec.
Watchdog_Interval ticks
The timeout in ticks.
Chain_Control Fifo
This is the FIFO discipline list.
Thread_queue_Priority_queue Priority
This is the set of threads for priority discipline waiting.
This header file provides the interfaces of the Watchdog Handler related to watchdog ticks which are ...