RTEMS 6.1-rc2
Loading...
Searching...
No Matches
Data Structures | Macros | Typedefs | Enumerations | Functions | Variables
threadqimpl.h File Reference

This header file provides interfaces of the Thread Queue Handler which are only used by the implementation. More...

#include <rtems/score/threadq.h>
#include <rtems/score/chainimpl.h>
#include <rtems/score/priorityimpl.h>
#include <rtems/score/scheduler.h>
#include <rtems/score/smp.h>
#include <rtems/score/status.h>
#include <rtems/score/thread.h>
#include <rtems/score/threaddispatch.h>

Go to the source code of this file.

Data Structures

struct  Thread_queue_Syslock_queue
 Thread queue with a layout compatible to struct _Thread_queue_Queue defined in Newlib <sys/lock.h>. More...
 
struct  Thread_queue_Object
 Helper structure to ensure that all objects containing a thread queue have the right layout. More...
 

Macros

#define THREAD_QUEUE_LINK_OF_PATH_NODE(node)    RTEMS_CONTAINER_OF( node, Thread_queue_Link, Path_node );
 
#define _Thread_queue_Context_ISR_disable(queue_context, level)
 
#define _Thread_queue_Context_set_MP_callout(queue_context, mp_callout)
 Sets the MP callout in the thread queue context.
 
#define _Thread_queue_Queue_acquire_critical(queue, lock_stats, lock_context)    _Thread_queue_Queue_do_acquire_critical( queue, lock_context )
 
#define THREAD_QUEUE_INITIALIZER(_name)
 
#define THREAD_QUEUE_OBJECT_ASSERT(object_type, wait_queue_member, msg)
 
#define THREAD_QUEUE_QUEUE_TO_OBJECT(queue)
 

Typedefs

typedef Thread_Control *(* Thread_queue_Flush_filter) (Thread_Control *the_thread, Thread_queue_Queue *queue, Thread_queue_Context *queue_context)
 Thread queue flush filter function.
 

Enumerations

enum  Thread_queue_Deadlock_status { THREAD_QUEUE_NO_DEADLOCK , THREAD_QUEUE_DEADLOCK_DETECTED }
 This is a status code to indicate if a deadlock was detected or not. More...
 

Functions

void _Thread_queue_Enqueue_do_nothing_extra (Thread_queue_Queue *queue, Thread_Control *the_thread, Per_CPU_Control *cpu_self, Thread_queue_Context *queue_context)
 Does nothing.
 
void _Thread_queue_Add_timeout_ticks (Thread_queue_Queue *queue, Thread_Control *the_thread, Per_CPU_Control *cpu_self, Thread_queue_Context *queue_context)
 Adds timeout ticks of the queue to the thread.
 
void _Thread_queue_Add_timeout_monotonic_timespec (Thread_queue_Queue *queue, Thread_Control *the_thread, Per_CPU_Control *cpu_self, Thread_queue_Context *queue_context)
 Adds a monotonic timespec to the thread and sets the watchdog header to monotonic.
 
void _Thread_queue_Add_timeout_realtime_timespec (Thread_queue_Queue *queue, Thread_Control *the_thread, Per_CPU_Control *cpu_self, Thread_queue_Context *queue_context)
 Adds a monotonic timespec to the thread and sets the watchdog header to realtime.
 
void _Thread_queue_Deadlock_status (Thread_Control *the_thread)
 Sets the thread wait return code to STATUS_DEADLOCK.
 
void _Thread_queue_Deadlock_fatal (Thread_Control *the_thread)
 Results in an INTERNAL_ERROR_THREAD_QUEUE_DEADLOCK fatal error.
 
size_t _Thread_queue_Queue_get_name_and_id (const Thread_queue_Queue *queue, char *buffer, size_t buffer_size, Objects_Id *id)
 Copies the thread queue name to the specified buffer.
 
void _Thread_queue_Enqueue (Thread_queue_Queue *queue, const Thread_queue_Operations *operations, Thread_Control *the_thread, Thread_queue_Context *queue_context)
 Blocks the thread and places it on the thread queue.
 
bool _Thread_queue_Extract_locked (Thread_queue_Queue *queue, const Thread_queue_Operations *operations, Thread_Control *the_thread, Thread_queue_Context *queue_context)
 Extracts the thread from the thread queue, restores the default wait operations and restores the default thread lock.
 
void _Thread_queue_Resume (Thread_queue_Queue *queue, Thread_Control *the_thread, Thread_queue_Context *queue_context)
 Resumes the extracted or surrendered thread.
 
void _Thread_queue_Extract (Thread_Control *the_thread)
 Extracts thread from thread queue.
 
void _Thread_queue_Surrender (Thread_queue_Queue *queue, Thread_queue_Heads *heads, Thread_Control *previous_owner, Thread_queue_Context *queue_context, const Thread_queue_Operations *operations)
 Surrenders the thread queue previously owned by the thread to the first enqueued thread.
 
void _Thread_queue_Surrender_no_priority (Thread_queue_Queue *queue, Thread_queue_Heads *heads, Thread_queue_Context *queue_context, const Thread_queue_Operations *operations)
 Surrenders the thread queue previously owned by the thread to the first enqueued thread.
 
Status_Control _Thread_queue_Surrender_priority_ceiling (Thread_queue_Queue *queue, Thread_Control *executing, Priority_Node *ceiling_priority, Thread_queue_Context *queue_context, const Thread_queue_Operations *operations)
 Surrenders the thread queue previously owned by the thread to the first enqueued thread.
 
Thread_Control_Thread_queue_First (Thread_queue_Control *the_thread_queue, const Thread_queue_Operations *operations)
 Returns the first thread on the thread queue if it exists, otherwise NULL.
 
Thread_Control_Thread_queue_Flush_default_filter (Thread_Control *the_thread, Thread_queue_Queue *queue, Thread_queue_Context *queue_context)
 Default thread queue flush filter function.
 
Thread_Control_Thread_queue_Flush_status_unavailable (Thread_Control *the_thread, Thread_queue_Queue *queue, Thread_queue_Context *queue_context)
 Status unavailable thread queue flush filter function.
 
Thread_Control_Thread_queue_Flush_status_object_was_deleted (Thread_Control *the_thread, Thread_queue_Queue *queue, Thread_queue_Context *queue_context)
 Status object was deleted thread queue flush filter function.
 
size_t _Thread_queue_Flush_critical (Thread_queue_Queue *queue, const Thread_queue_Operations *operations, Thread_queue_Flush_filter filter, Thread_queue_Context *queue_context)
 Unblocks all threads enqueued on the thread queue.
 
void _Thread_queue_Initialize (Thread_queue_Control *the_thread_queue, const char *name)
 Initializes the thread queue control to the given name.
 
void _Thread_queue_Object_initialize (Thread_queue_Control *the_thread_queue)
 Initializes a thread queue embedded in an object with identifier.
 

Variables

const Thread_queue_Operations _Thread_queue_Operations_default
 The default thread queue operations are used when a thread is not enqueued on a thread queue.
 
const Thread_queue_Operations _Thread_queue_Operations_FIFO
 The FIFO thread queue operations are used when a thread is enqueued on a thread queue and provide FIFO ordering of enqueued threads.
 
const Thread_queue_Operations _Thread_queue_Operations_priority
 The FIFO thread queue operations are used when a thread is enqueued on a thread queue and provide priority ordering of enqueued threads.
 
const Thread_queue_Operations _Thread_queue_Operations_priority_inherit
 The FIFO thread queue operations are used when a thread is enqueued on a thread queue and provide priority ordering of enqueued threads with support for priority inheritance.
 
const char _Thread_queue_Object_name []
 The special thread queue name to indicated that the thread queue is embedded in an object with identifier.
 

Detailed Description

This header file provides interfaces of the Thread Queue Handler which are only used by the implementation.