39#ifndef _RTEMS_SCORE_THREADQ_H
40#define _RTEMS_SCORE_THREADQ_H
108#if defined(RTEMS_MULTIPROCESSING)
119typedef void ( *Thread_queue_MP_callout )(
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)
265#if defined(RTEMS_SMP)
285 Thread_queue_Link Start;
291 Thread_queue_Link Deadlock;
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;
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
Thread_Control *(* Thread_queue_First_operation)(const Thread_queue_Heads *heads)
Gets the first thread on the queue.
Definition: threadq.h:534
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
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
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
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_Deadlock_callout)(Thread_Control *the_thread)
Thread queue deadlock callout.
Definition: threadq.h:104
struct _Thread_queue_Heads Thread_queue_Heads
Thread queue heads.
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:81
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
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
const void * arg
The timeout argument, e.g. pointer to struct timespec.
Definition: threadq.h:256
size_t update_count
Count of threads to update the priority via _Thread_Priority_update().
Definition: threadq.h:309
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
Watchdog_Interval ticks
The timeout in ticks.
Definition: threadq.h:251
States_Control thread_state
The thread state for _Thread_queue_Enqueue().
Definition: threadq.h:226
Priority_Actions Actions
A priority action list.
Definition: threadq.h:303
struct Thread_queue_Context::@4388 Priority
Block to manage thread priority changes due to a thread queue operation.
Thread_Control * update[2]
Threads to update the priority via _Thread_Priority_update().
Definition: threadq.h:318
union Thread_queue_Context::@4387 Timeout
Interval to wait.
Definition: threadq.h:609
Thread_queue_Queue Queue
The actual thread queue.
Definition: threadq.h:640
Definition: threadq.h:143
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
Definition: threadq.h:427
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_Control Fifo
This is the FIFO discipline list.
Definition: threadq.h:397
Thread_queue_Priority_queue Priority
This is the set of threads for priority discipline waiting.
Definition: threadq.h:403
union _Thread_queue_Heads::@4389 Heads
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
This header file provides the interfaces of the Watchdog Handler related to watchdog ticks which are ...