RTEMS CPU Kit with SuperCore  4.11.3
Macros | Typedefs | Functions
SuperCore Thread States

This handler encapsulates functionality which relates to the management of the state bitmap associated with each thread. More...

Collaboration diagram for SuperCore Thread States:

Macros

#define STATES_READY   0x00000
 This macro corresponds to a task being ready. More...
 
#define STATES_DORMANT   0x00001
 This macro corresponds to a task being created but not yet started. More...
 
#define STATES_SUSPENDED   0x00002
 This macro corresponds to a task being suspended. More...
 
#define STATES_DELAYING   0x00008
 This macro corresponds to a task which is waiting for a timeout. More...
 
#define STATES_WAITING_FOR_TIME   0x00010
 This macro corresponds to a task waiting until a specific TOD. More...
 
#define STATES_WAITING_FOR_BUFFER   0x00020
 This macro corresponds to a task waiting for a variable length buffer. More...
 
#define STATES_WAITING_FOR_SEGMENT   0x00040
 This macro corresponds to a task waiting for a fixed size segment. More...
 
#define STATES_WAITING_FOR_MESSAGE   0x00080
 This macro corresponds to a task waiting for a message. More...
 
#define STATES_WAITING_FOR_EVENT   0x00100
 This macro corresponds to a task waiting for an event. More...
 
#define STATES_WAITING_FOR_SEMAPHORE   0x00200
 This macro corresponds to a task waiting for a semaphore. More...
 
#define STATES_WAITING_FOR_MUTEX   0x00400
 This macro corresponds to a task waiting for a mutex. More...
 
#define STATES_WAITING_FOR_CONDITION_VARIABLE   0x00800
 This macro corresponds to a task waiting for a condition variable. More...
 
#define STATES_WAITING_FOR_JOIN_AT_EXIT   0x01000
 This macro corresponds to a task waiting for a join while exiting. More...
 
#define STATES_WAITING_FOR_RPC_REPLY   0x02000
 This macro corresponds to a task waiting for a reply to an MPCI request. More...
 
#define STATES_WAITING_FOR_PERIOD   0x04000
 This macro corresponds to a task waiting for a period. More...
 
#define STATES_WAITING_FOR_SIGNAL   0x08000
 This macro corresponds to a task waiting for a signal. More...
 
#define STATES_WAITING_FOR_BARRIER   0x10000
 This macro corresponds to a task waiting for a barrier. More...
 
#define STATES_WAITING_FOR_RWLOCK   0x20000
 This macro corresponds to a task waiting for a RWLock. More...
 
#define STATES_WAITING_FOR_SYSTEM_EVENT   0x40000
 This macro corresponds to a task waiting for a system event. More...
 
#define STATES_WAITING_FOR_BSD_WAKEUP   0x80000
 This macro corresponds to a task waiting for BSD wakeup. More...
 
#define STATES_WAITING_FOR_TERMINATION   0x100000
 This macro corresponds to a task waiting for a task termination. More...
 
#define STATES_ZOMBIE   0x200000
 This macro corresponds to a task being a zombie. More...
 
#define STATES_MIGRATING   0x400000
 This macro corresponds to a task migrating to another scheduler. More...
 
#define STATES_RESTARTING   0x800000
 This macro corresponds to a task restarting. More...
 
#define STATES_WAITING_FOR_JOIN   0x1000000
 This macro corresponds to a task waiting for a join. More...
 
#define STATES_INTERRUPTIBLE_BY_SIGNAL   0x10000000
 This macro corresponds to a task which is in an interruptible blocking state.
 
#define STATES_LOCALLY_BLOCKED
 This macro corresponds to a task waiting for a local object operation. More...
 
#define STATES_BLOCKED
 This macro corresponds to a task waiting which is blocked. More...
 
#define STATES_ALL_SET   0xffffffff
 All state bits set to one (provided for _Thread_Ready())
 

Typedefs

typedef uint32_t States_Control
 The following type defines the control block used to manage a thread's state.
 

Functions

RTEMS_INLINE_ROUTINE States_Control _States_Set (States_Control states_to_set, States_Control current_state)
 This function sets the given states_to_set into the current_state passed in. More...
 
RTEMS_INLINE_ROUTINE States_Control _States_Clear (States_Control states_to_clear, States_Control current_state)
 This function clears the given states_to_clear into the current_state passed in. More...
 
RTEMS_INLINE_ROUTINE bool _States_Is_ready (States_Control the_states)
 This function returns true if the_states indicates that the state is READY, and false otherwise. More...
 
RTEMS_INLINE_ROUTINE bool _States_Is_only_dormant (States_Control the_states)
 This function returns true if the DORMANT state is the ONLY state set in the_states, and false otherwise. More...
 
RTEMS_INLINE_ROUTINE bool _States_Is_dormant (States_Control the_states)
 This function returns true if the DORMANT state is set in the_states, and false otherwise. More...
 
RTEMS_INLINE_ROUTINE bool _States_Is_suspended (States_Control the_states)
 This function returns true if the SUSPENDED state is set in the_states, and false otherwise. More...
 
RTEMS_INLINE_ROUTINE bool _States_Is_delaying (States_Control the_states)
 This function returns true if the DELAYING state is set in the_states, and false otherwise. More...
 
RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_buffer (States_Control the_states)
 This function returns true if the WAITING_FOR_BUFFER state is set in the_states, and false otherwise. More...
 
RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_segment (States_Control the_states)
 This function returns true if the WAITING_FOR_SEGMENT state is set in the_states, and false otherwise. More...
 
RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_message (States_Control the_states)
 This function returns true if the WAITING_FOR_MESSAGE state is set in the_states, and false otherwise. More...
 
RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_event (States_Control the_states)
 This function returns true if the WAITING_FOR_EVENT state is set in the_states, and false otherwise. More...
 
RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_system_event (States_Control the_states)
 This function returns true if the WAITING_FOR_SYSTEM_EVENT state is set in the_states, and false otherwise. More...
 
RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_mutex (States_Control the_states)
 This function returns true if the WAITING_FOR_MUTEX state is set in the_states, and false otherwise. More...
 
RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_semaphore (States_Control the_states)
 This function returns true if the WAITING_FOR_SEMAPHORE state is set in the_states, and false otherwise. More...
 
RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_time (States_Control the_states)
 This function returns true if the WAITING_FOR_TIME state is set in the_states, and false otherwise. More...
 
RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_rpc_reply (States_Control the_states)
 This function returns true if the WAITING_FOR_TIME state is set in the_states, and false otherwise. More...
 
RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_period (States_Control the_states)
 This function returns true if the WAITING_FOR_PERIOD state is set in the_states, and false otherwise. More...
 
RTEMS_INLINE_ROUTINE bool _States_Is_interruptible_by_signal (States_Control the_states)
 This function returns true if the task's state is set in way that allows it to be interrupted by a signal. More...
 
RTEMS_INLINE_ROUTINE bool _States_Is_locally_blocked (States_Control the_states)
 This function returns true if one of the states which indicates that a task is blocked waiting for a local resource is set in the_states, and false otherwise. More...
 
RTEMS_INLINE_ROUTINE bool _States_Is_blocked (States_Control the_states)
 This function returns true if one of the states which indicates that a task is blocked is set in the_states, and false otherwise. More...
 
RTEMS_INLINE_ROUTINE bool _States_Are_set (States_Control the_states, States_Control mask)
 This function returns true if any of the states in the mask are set in the_states, and false otherwise. More...
 

Detailed Description

This handler encapsulates functionality which relates to the management of the state bitmap associated with each thread.

Macro Definition Documentation

◆ STATES_BLOCKED

#define STATES_BLOCKED
Value:
STATES_LOCALLY_BLOCKED | \
STATES_WAITING_FOR_TIME | \
STATES_WAITING_FOR_PERIOD | \
STATES_WAITING_FOR_EVENT | \
STATES_WAITING_FOR_RPC_REPLY | \
STATES_WAITING_FOR_SYSTEM_EVENT | \
STATES_INTERRUPTIBLE_BY_SIGNAL )
#define STATES_DELAYING
This macro corresponds to a task which is waiting for a timeout.
Definition: statesimpl.h:46

This macro corresponds to a task waiting which is blocked.

Referenced by _States_Is_blocked(), and _Thread_Unblock().

◆ STATES_DELAYING

#define STATES_DELAYING   0x00008

This macro corresponds to a task which is waiting for a timeout.

Referenced by _States_Is_delaying().

◆ STATES_DORMANT

#define STATES_DORMANT   0x00001

This macro corresponds to a task being created but not yet started.

Referenced by _States_Is_dormant(), and _States_Is_only_dormant().

◆ STATES_LOCALLY_BLOCKED

#define STATES_LOCALLY_BLOCKED
Value:
STATES_WAITING_FOR_SEGMENT | \
STATES_WAITING_FOR_MESSAGE | \
STATES_WAITING_FOR_SEMAPHORE | \
STATES_WAITING_FOR_MUTEX | \
STATES_WAITING_FOR_CONDITION_VARIABLE | \
STATES_WAITING_FOR_JOIN | \
STATES_WAITING_FOR_SIGNAL | \
STATES_WAITING_FOR_BARRIER | \
STATES_WAITING_FOR_BSD_WAKEUP | \
STATES_WAITING_FOR_RWLOCK )
#define STATES_WAITING_FOR_BUFFER
This macro corresponds to a task waiting for a variable length buffer.
Definition: statesimpl.h:50

This macro corresponds to a task waiting for a local object operation.

Referenced by _States_Is_locally_blocked().

◆ STATES_MIGRATING

#define STATES_MIGRATING   0x400000

This macro corresponds to a task migrating to another scheduler.

◆ STATES_READY

#define STATES_READY   0x00000

This macro corresponds to a task being ready.

Referenced by _States_Is_ready().

◆ STATES_RESTARTING

#define STATES_RESTARTING   0x800000

This macro corresponds to a task restarting.

◆ STATES_SUSPENDED

#define STATES_SUSPENDED   0x00002

This macro corresponds to a task being suspended.

Referenced by _States_Is_suspended().

◆ STATES_WAITING_FOR_BARRIER

#define STATES_WAITING_FOR_BARRIER   0x10000

This macro corresponds to a task waiting for a barrier.

◆ STATES_WAITING_FOR_BSD_WAKEUP

#define STATES_WAITING_FOR_BSD_WAKEUP   0x80000

This macro corresponds to a task waiting for BSD wakeup.

◆ STATES_WAITING_FOR_BUFFER

#define STATES_WAITING_FOR_BUFFER   0x00020

This macro corresponds to a task waiting for a variable length buffer.

Referenced by _States_Is_waiting_for_buffer().

◆ STATES_WAITING_FOR_CONDITION_VARIABLE

#define STATES_WAITING_FOR_CONDITION_VARIABLE   0x00800

This macro corresponds to a task waiting for a condition variable.

◆ STATES_WAITING_FOR_EVENT

#define STATES_WAITING_FOR_EVENT   0x00100

This macro corresponds to a task waiting for an event.

Referenced by _States_Is_waiting_for_event().

◆ STATES_WAITING_FOR_JOIN

#define STATES_WAITING_FOR_JOIN   0x1000000

This macro corresponds to a task waiting for a join.

◆ STATES_WAITING_FOR_JOIN_AT_EXIT

#define STATES_WAITING_FOR_JOIN_AT_EXIT   0x01000

This macro corresponds to a task waiting for a join while exiting.

◆ STATES_WAITING_FOR_MESSAGE

#define STATES_WAITING_FOR_MESSAGE   0x00080

This macro corresponds to a task waiting for a message.

Referenced by _States_Is_waiting_for_message().

◆ STATES_WAITING_FOR_MUTEX

#define STATES_WAITING_FOR_MUTEX   0x00400

This macro corresponds to a task waiting for a mutex.

Referenced by _States_Is_waiting_for_mutex().

◆ STATES_WAITING_FOR_PERIOD

#define STATES_WAITING_FOR_PERIOD   0x04000

This macro corresponds to a task waiting for a period.

Referenced by _States_Is_waiting_for_period().

◆ STATES_WAITING_FOR_RPC_REPLY

#define STATES_WAITING_FOR_RPC_REPLY   0x02000

This macro corresponds to a task waiting for a reply to an MPCI request.

Referenced by _States_Is_waiting_for_rpc_reply().

◆ STATES_WAITING_FOR_RWLOCK

#define STATES_WAITING_FOR_RWLOCK   0x20000

This macro corresponds to a task waiting for a RWLock.

◆ STATES_WAITING_FOR_SEGMENT

#define STATES_WAITING_FOR_SEGMENT   0x00040

This macro corresponds to a task waiting for a fixed size segment.

Referenced by _States_Is_waiting_for_segment().

◆ STATES_WAITING_FOR_SEMAPHORE

#define STATES_WAITING_FOR_SEMAPHORE   0x00200

This macro corresponds to a task waiting for a semaphore.

Referenced by _States_Is_waiting_for_semaphore().

◆ STATES_WAITING_FOR_SIGNAL

#define STATES_WAITING_FOR_SIGNAL   0x08000

This macro corresponds to a task waiting for a signal.

◆ STATES_WAITING_FOR_SYSTEM_EVENT

#define STATES_WAITING_FOR_SYSTEM_EVENT   0x40000

This macro corresponds to a task waiting for a system event.

Referenced by _States_Is_waiting_for_system_event().

◆ STATES_WAITING_FOR_TERMINATION

#define STATES_WAITING_FOR_TERMINATION   0x100000

This macro corresponds to a task waiting for a task termination.

◆ STATES_WAITING_FOR_TIME

#define STATES_WAITING_FOR_TIME   0x00010

This macro corresponds to a task waiting until a specific TOD.

Referenced by _States_Is_waiting_for_time().

◆ STATES_ZOMBIE

#define STATES_ZOMBIE   0x200000

This macro corresponds to a task being a zombie.

Function Documentation

◆ _States_Are_set()

RTEMS_INLINE_ROUTINE bool _States_Are_set ( States_Control  the_states,
States_Control  mask 
)

This function returns true if any of the states in the mask are set in the_states, and false otherwise.

Parameters
[in]the_statesis the task state set to test
[in]maskis the state bits to test for
Returns
This method returns true if the indicates state condition is set.

◆ _States_Clear()

RTEMS_INLINE_ROUTINE States_Control _States_Clear ( States_Control  states_to_clear,
States_Control  current_state 
)

This function clears the given states_to_clear into the current_state passed in.

The result is returned to the user in current_state.

Parameters
[in]states_to_clearis the state bits to clean
[in]current_stateis the state set to remove them from
Returns
This method returns the updated states value.

◆ _States_Is_blocked()

RTEMS_INLINE_ROUTINE bool _States_Is_blocked ( States_Control  the_states)

This function returns true if one of the states which indicates that a task is blocked is set in the_states, and false otherwise.

Parameters
[in]the_statesis the task state set to test
Returns
This method returns true if the state indicates that the assocated thread is blocked.

References STATES_BLOCKED.

◆ _States_Is_delaying()

RTEMS_INLINE_ROUTINE bool _States_Is_delaying ( States_Control  the_states)

This function returns true if the DELAYING state is set in the_states, and false otherwise.

Parameters
[in]the_statesis the task state set to test
Returns
This method returns true if the desired state condition is set.

References STATES_DELAYING.

◆ _States_Is_dormant()

RTEMS_INLINE_ROUTINE bool _States_Is_dormant ( States_Control  the_states)

This function returns true if the DORMANT state is set in the_states, and false otherwise.

Parameters
[in]the_statesis the task state set to test
Returns
This method returns true if the desired state condition is set.

References STATES_DORMANT.

Referenced by _Thread_Start().

◆ _States_Is_interruptible_by_signal()

RTEMS_INLINE_ROUTINE bool _States_Is_interruptible_by_signal ( States_Control  the_states)

This function returns true if the task's state is set in way that allows it to be interrupted by a signal.

Parameters
[in]the_statesis the task state set to test
Returns
This method returns true if the desired state condition is set.

References STATES_INTERRUPTIBLE_BY_SIGNAL.

◆ _States_Is_locally_blocked()

RTEMS_INLINE_ROUTINE bool _States_Is_locally_blocked ( States_Control  the_states)

This function returns true if one of the states which indicates that a task is blocked waiting for a local resource is set in the_states, and false otherwise.

Parameters
[in]the_statesis the task state set to test
Returns
This method returns true if the desired state condition is set.

References STATES_LOCALLY_BLOCKED.

◆ _States_Is_only_dormant()

RTEMS_INLINE_ROUTINE bool _States_Is_only_dormant ( States_Control  the_states)

This function returns true if the DORMANT state is the ONLY state set in the_states, and false otherwise.

Parameters
[in]the_statesis the task state set to test
Returns
This method returns true if the desired state condition is set.

References STATES_DORMANT.

◆ _States_Is_ready()

RTEMS_INLINE_ROUTINE bool _States_Is_ready ( States_Control  the_states)

This function returns true if the_states indicates that the state is READY, and false otherwise.

Parameters
[in]the_statesis the task state set to test
Returns
This method returns true if the desired state condition is set.

References STATES_READY.

Referenced by _Scheduler_default_Tick().

◆ _States_Is_suspended()

RTEMS_INLINE_ROUTINE bool _States_Is_suspended ( States_Control  the_states)

This function returns true if the SUSPENDED state is set in the_states, and false otherwise.

Parameters
[in]the_statesis the task state set to test
Returns
This method returns true if the desired state condition is set.

References STATES_SUSPENDED.

◆ _States_Is_waiting_for_buffer()

RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_buffer ( States_Control  the_states)

This function returns true if the WAITING_FOR_BUFFER state is set in the_states, and false otherwise.

Parameters
[in]the_statesis the task state set to test
Returns
This method returns true if the desired state condition is set.

References STATES_WAITING_FOR_BUFFER.

◆ _States_Is_waiting_for_event()

RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_event ( States_Control  the_states)

This function returns true if the WAITING_FOR_EVENT state is set in the_states, and false otherwise.

Parameters
[in]the_statesis the task state set to test
Returns
This method returns true if the desired state condition is set.

References STATES_WAITING_FOR_EVENT.

◆ _States_Is_waiting_for_message()

RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_message ( States_Control  the_states)

This function returns true if the WAITING_FOR_MESSAGE state is set in the_states, and false otherwise.

Parameters
[in]the_statesis the task state set to test
Returns
This method returns true if the desired state condition is set.

References STATES_WAITING_FOR_MESSAGE.

◆ _States_Is_waiting_for_mutex()

RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_mutex ( States_Control  the_states)

This function returns true if the WAITING_FOR_MUTEX state is set in the_states, and false otherwise.

Parameters
[in]the_statesis the task state set to test
Returns
This method returns true if the desired state condition is set.

References STATES_WAITING_FOR_MUTEX.

◆ _States_Is_waiting_for_period()

RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_period ( States_Control  the_states)

This function returns true if the WAITING_FOR_PERIOD state is set in the_states, and false otherwise.

Parameters
[in]the_statesis the task state set to test
Returns
This method returns true if the desired state condition is set.

References STATES_WAITING_FOR_PERIOD.

◆ _States_Is_waiting_for_rpc_reply()

RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_rpc_reply ( States_Control  the_states)

This function returns true if the WAITING_FOR_TIME state is set in the_states, and false otherwise.

Parameters
[in]the_statesis the task state set to test
Returns
This method returns true if the desired state condition is set.

References STATES_WAITING_FOR_RPC_REPLY.

◆ _States_Is_waiting_for_segment()

RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_segment ( States_Control  the_states)

This function returns true if the WAITING_FOR_SEGMENT state is set in the_states, and false otherwise.

Parameters
[in]the_statesis the task state set to test
Returns
This method returns true if the desired state condition is set.

References STATES_WAITING_FOR_SEGMENT.

◆ _States_Is_waiting_for_semaphore()

RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_semaphore ( States_Control  the_states)

This function returns true if the WAITING_FOR_SEMAPHORE state is set in the_states, and false otherwise.

Parameters
[in]the_statesis the task state set to test
Returns
This method returns true if the desired state condition is set.

References STATES_WAITING_FOR_SEMAPHORE.

◆ _States_Is_waiting_for_system_event()

RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_system_event ( States_Control  the_states)

This function returns true if the WAITING_FOR_SYSTEM_EVENT state is set in the_states, and false otherwise.

Parameters
[in]the_statesis the task state set to test
Returns
This method returns true if the desired state condition is set.

References STATES_WAITING_FOR_SYSTEM_EVENT.

◆ _States_Is_waiting_for_time()

RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_time ( States_Control  the_states)

This function returns true if the WAITING_FOR_TIME state is set in the_states, and false otherwise.

Parameters
[in]the_statesis the task state set to test
Returns
This method returns true if the desired state condition is set.

References STATES_WAITING_FOR_TIME.

◆ _States_Set()

RTEMS_INLINE_ROUTINE States_Control _States_Set ( States_Control  states_to_set,
States_Control  current_state 
)

This function sets the given states_to_set into the current_state passed in.

The result is returned to the user in current_state.

Parameters
[in]states_to_setis the state bits to set
[in]current_stateis the state set to add them to
Returns
This method returns the updated states value.