Thread Queue Handler


Defines

#define THREAD_QUEUE_WAIT_FOREVER   WATCHDOG_NO_TIMEOUT
#define _Thread_queue_Enqueue(_the_thread_queue, _timeout)
 Thread queue Enqueue Wrapper.
#define _Thread_queue_Extract_priority(_the_thread_queue, _the_thread)   _Thread_queue_Extract_priority_helper( _the_thread_queue, _the_thread, FALSE )
 Thread queue Extract priority.

Typedefs

typedef void(* Thread_queue_Flush_callout )(Thread_Control *)
typedef void(* Thread_queue_Timeout_callout )(Objects_Id, void *)

Functions

Thread_Control_Thread_queue_Dequeue (Thread_queue_Control *the_thread_queue)
 Thread queue Dequeue.
void _Thread_queue_Enqueue_with_handler (Thread_queue_Control *the_thread_queue, Watchdog_Interval timeout, Thread_queue_Timeout_callout handler)
 Thread queue Enqueue.
void _Thread_queue_Requeue (Thread_queue_Control *the_thread_queue, Thread_Control *the_thread)
 Thread queue Requeue.
void _Thread_queue_Extract (Thread_queue_Control *the_thread_queue, Thread_Control *the_thread)
 Thread queue Extract.
boolean _Thread_queue_Extract_with_proxy (Thread_Control *the_thread)
 Thread queue Extract with proxy.
Thread_Control_Thread_queue_First (Thread_queue_Control *the_thread_queue)
 Thread queue First.
void _Thread_queue_Flush (Thread_queue_Control *the_thread_queue, Thread_queue_Flush_callout remote_extract_callout, uint32_t status)
 Thread queue Flush.
void _Thread_queue_Initialize (Thread_queue_Control *the_thread_queue, Thread_queue_Disciplines the_discipline, States_Control state, uint32_t timeout_status)
 Thread queue Initialize.
Thread_Control_Thread_queue_Dequeue_priority (Thread_queue_Control *the_thread_queue)
 Thread queue Dequeue priority.
Thread_blocking_operation_States _Thread_queue_Enqueue_priority (Thread_queue_Control *the_thread_queue, Thread_Control *the_thread, ISR_Level *level_p)
 Thread queue Enqueue priority.
void _Thread_queue_Extract_priority_helper (Thread_queue_Control *the_thread_queue, Thread_Control *the_thread, boolean requeuing)
 Thread queue Extract priority Helper.
Thread_Control_Thread_queue_First_priority (Thread_queue_Control *the_thread_queue)
 Thread queue First priority.
Thread_Control_Thread_queue_Dequeue_fifo (Thread_queue_Control *the_thread_queue)
 Thread queue Dequeue FIFO.
Thread_blocking_operation_States _Thread_queue_Enqueue_fifo (Thread_queue_Control *the_thread_queue, Thread_Control *the_thread, ISR_Level *level_p)
 Thread queue Enqueue FIFO.
void _Thread_queue_Extract_fifo (Thread_queue_Control *the_thread_queue, Thread_Control *the_thread)
 Thread queue Extract FIFO.
Thread_Control_Thread_queue_First_fifo (Thread_queue_Control *the_thread_queue)
 Thread queue First FIFO.
void _Thread_queue_Timeout (Objects_Id id, void *ignored)
 Thread queue timeout.
void _Thread_queue_Process_timeout (Thread_Control *the_thread)
 Process Thread Queue Timeout.
RTEMS_INLINE_ROUTINE uint32_t _Thread_queue_Header_number (Priority_Control the_priority)
RTEMS_INLINE_ROUTINE boolean _Thread_queue_Is_reverse_search (Priority_Control the_priority)
RTEMS_INLINE_ROUTINE void _Thread_queue_Enter_critical_section (Thread_queue_Control *the_thread_queue)

Detailed Description

This handler encapsulates functionality related to managing sets of threads blocked waiting for resources.

Define Documentation

#define _Thread_queue_Enqueue ( _the_thread_queue,
_timeout   ) 

Value:

_Thread_queue_Enqueue_with_handler( \
    _the_thread_queue, \
    _timeout, \
    _Thread_queue_Timeout )
Thread queue Enqueue Wrapper.

This routine enqueues the currently executing thread on the_thread_queue with an optional timeout.

Referenced by _CORE_semaphore_Seize_isr_disable().

#define _Thread_queue_Extract_priority ( _the_thread_queue,
_the_thread   )     _Thread_queue_Extract_priority_helper( _the_thread_queue, _the_thread, FALSE )

Thread queue Extract priority.

This macro wraps the underlying call and hides the requeuing argument.

#define THREAD_QUEUE_WAIT_FOREVER   WATCHDOG_NO_TIMEOUT

Constant for indefinite wait.


Typedef Documentation

The following type defines the callout used when a remote task is extracted from a local thread queue.

typedef void( * Thread_queue_Timeout_callout)(Objects_Id, void *)

The following type defines the callout used for timeout processing methods.


Function Documentation

Thread_Control* _Thread_queue_Dequeue ( Thread_queue_Control the_thread_queue  ) 

Thread queue Dequeue.

This function returns a pointer to a thread waiting on the_thread_queue. The selection of this thread is based on the discipline of the_thread_queue. If no threads are waiting on the_thread_queue, then NULL is returned.

Thread_Control* _Thread_queue_Dequeue_fifo ( Thread_queue_Control the_thread_queue  ) 

Thread queue Dequeue FIFO.

This function returns a pointer to the thread which has been waiting the longest on the_thread_queue. If no threads are waiting on the_thread_queue, then NULL is returned.

Thread_Control* _Thread_queue_Dequeue_priority ( Thread_queue_Control the_thread_queue  ) 

Thread queue Dequeue priority.

This function returns a pointer to the highest priority thread waiting on the_thread_queue. If no threads are waiting on the_thread_queue, then NULL is returned.

Thread_blocking_operation_States _Thread_queue_Enqueue_fifo ( Thread_queue_Control the_thread_queue,
Thread_Control the_thread,
ISR_Level level_p 
)

Thread queue Enqueue FIFO.

This routine enqueues the currently executing thread on the_thread_queue with an optional timeout using the FIFO discipline.

Thread_blocking_operation_States _Thread_queue_Enqueue_priority ( Thread_queue_Control the_thread_queue,
Thread_Control the_thread,
ISR_Level level_p 
)

Thread queue Enqueue priority.

This routine enqueues the currently executing thread on the_thread_queue with an optional timeout using the priority discipline.

void _Thread_queue_Enqueue_with_handler ( Thread_queue_Control the_thread_queue,
Watchdog_Interval  timeout,
Thread_queue_Timeout_callout  handler 
)

Thread queue Enqueue.

This routine enqueues the currently executing thread on the_thread_queue with an optional timeout.

RTEMS_INLINE_ROUTINE void _Thread_queue_Enter_critical_section ( Thread_queue_Control the_thread_queue  ) 

This routine is invoked to indicate that the specified thread queue is entering a critical section.

References Thread_queue_Control::sync_state.

Referenced by _CORE_semaphore_Seize_isr_disable().

void _Thread_queue_Extract ( Thread_queue_Control the_thread_queue,
Thread_Control the_thread 
)

Thread queue Extract.

This routine removes the_thread from the_thread_queue and cancels any timeouts associated with this blocking.

void _Thread_queue_Extract_fifo ( Thread_queue_Control the_thread_queue,
Thread_Control the_thread 
)

Thread queue Extract FIFO.

This routine removes the_thread from the_thread_queue and cancels any timeouts associated with this blocking.

void _Thread_queue_Extract_priority_helper ( Thread_queue_Control the_thread_queue,
Thread_Control the_thread,
boolean  requeuing 
)

Thread queue Extract priority Helper.

This routine removes the_thread from the_thread_queue and cancels any timeouts associated with this blocking.

boolean _Thread_queue_Extract_with_proxy ( Thread_Control the_thread  ) 

Thread queue Extract with proxy.

This routine extracts the_thread from the_thread_queue and ensures that if there is a proxy for this task on another node, it is also dealt with.

Thread_Control* _Thread_queue_First ( Thread_queue_Control the_thread_queue  ) 

Thread queue First.

This function returns a pointer to the "first" thread on the_thread_queue. The "first" thread is selected based on the discipline of the_thread_queue.

Thread_Control* _Thread_queue_First_fifo ( Thread_queue_Control the_thread_queue  ) 

Thread queue First FIFO.

This function returns a pointer to the "first" thread on the_thread_queue. The first thread is the thread which has been waiting longest on the_thread_queue.

Thread_Control* _Thread_queue_First_priority ( Thread_queue_Control the_thread_queue  ) 

Thread queue First priority.

This function returns a pointer to the "first" thread on the_thread_queue. The "first" thread is the highest priority thread waiting on the_thread_queue.

void _Thread_queue_Flush ( Thread_queue_Control the_thread_queue,
Thread_queue_Flush_callout  remote_extract_callout,
uint32_t  status 
)

Thread queue Flush.

This routine unblocks all threads blocked on the_thread_queue and cancels any associated timeouts.

RTEMS_INLINE_ROUTINE uint32_t _Thread_queue_Header_number ( Priority_Control  the_priority  ) 

This function returns the index of the priority chain on which a thread of the_priority should be placed.

References TASK_QUEUE_DATA_PRIORITIES_PER_HEADER.

void _Thread_queue_Initialize ( Thread_queue_Control the_thread_queue,
Thread_queue_Disciplines  the_discipline,
States_Control  state,
uint32_t  timeout_status 
)

Thread queue Initialize.

This routine initializes the_thread_queue based on the discipline indicated in attribute_set. The state set on threads which block on the_thread_queue is state.

RTEMS_INLINE_ROUTINE boolean _Thread_queue_Is_reverse_search ( Priority_Control  the_priority  ) 

This function returns TRUE if the_priority indicates that the enqueue search should start at the front of this priority group chain, and FALSE if the search should start at the rear.

References TASK_QUEUE_DATA_REVERSE_SEARCH_MASK.

void _Thread_queue_Process_timeout ( Thread_Control the_thread  ) 

Process Thread Queue Timeout.

This is a shared helper routine which makes it easier to have multiple object class specific timeout routines.

Parameters:
[in] the_thread is the thread to extract
Note:
This method assumes thread dispatching is disabled and is expected to be called via the processing of a clock tick.

void _Thread_queue_Requeue ( Thread_queue_Control the_thread_queue,
Thread_Control the_thread 
)

Thread queue Requeue.

This routine is invoked when a thread changes priority and is blocked on a thread queue. If the queue is priority ordered, the_thread is removed from the_thread_queue and reinserted using its new priority. This method has no impact on the state of the_thread or of any timeouts associated with this blocking.

void _Thread_queue_Timeout ( Objects_Id  id,
void *  ignored 
)

Thread queue timeout.

This routine is invoked when a task's request has not been satisfied after the timeout interval specified to enqueue. The task represented by ID will be unblocked and its status code will be set in it's control block to indicate that a timeout has occurred.


Generated on Sun Jul 27 00:17:31 2008 for RTEMSSuperCore by  doxygen 1.5.6