RTEMS: Thread States

| RTEMS 5.4-rc2

Loading...
Searching...
No Matches
Files | Macros | Typedefs | Functions
Thread States
Internal » SuperCore

SuperCore Thread States. More...

## Files
file | states.h
| Thread Execution State Information.
file | statesimpl.h
| Inlined Routines Associated with Thread State Information.

## Macros
#define | STATES_READY 0x00000000
#define | STATES_WAITING_FOR_MUTEX 0x00000001
#define | STATES_WAITING_FOR_SEMAPHORE 0x00000002
#define | STATES_WAITING_FOR_EVENT 0x00000004
#define | STATES_WAITING_FOR_SYSTEM_EVENT 0x00000008
#define | STATES_WAITING_FOR_MESSAGE 0x00000010
#define | STATES_WAITING_FOR_CONDITION_VARIABLE 0x00000020
#define | STATES_WAITING_FOR_FUTEX 0x00000040
#define | STATES_WAITING_FOR_BSD_WAKEUP 0x00000080
#define | STATES_WAITING_FOR_TIME 0x00000100
| This macro corresponds to a task which is waiting for a relative or absolute timeout.
#define | STATES_WAITING_FOR_PERIOD 0x00000200
#define | STATES_WAITING_FOR_SIGNAL 0x00000400
#define | STATES_WAITING_FOR_BARRIER 0x00000800
#define | STATES_WAITING_FOR_RWLOCK 0x00001000
#define | STATES_WAITING_FOR_JOIN_AT_EXIT 0x00002000
#define | STATES_WAITING_FOR_JOIN 0x00004000
#define | STATES_SUSPENDED 0x00008000
#define | STATES_WAITING_FOR_SEGMENT 0x00010000
#define | STATES_LIFE_IS_CHANGING 0x00020000
#define | STATES_DEBUGGER 0x08000000
#define | STATES_INTERRUPTIBLE_BY_SIGNAL 0x10000000
#define | STATES_WAITING_FOR_RPC_REPLY 0x20000000
#define | STATES_ZOMBIE 0x40000000
#define | STATES_DORMANT 0x80000000
#define | STATES_LOCALLY_BLOCKED
#define | STATES_BLOCKED
#define | STATES_ALL_SET 0xffffffff

## Typedefs
typedef uint32_t | States_Control

## Functions
RTEMS_INLINE_ROUTINE States_Control | _States_Set (States_Control states_to_set, States_Control current_state)
| Returns the result of setting the states to set to the given state.
RTEMS_INLINE_ROUTINE States_Control | _States_Clear (States_Control states_to_clear, States_Control current_state)
| Clears the states into the passed current state and returns the result.
RTEMS_INLINE_ROUTINE bool | _States_Is_ready (States_Control the_states)
| Checks if the state is ready.
RTEMS_INLINE_ROUTINE bool | _States_Is_dormant (States_Control the_states)
| Checks if DORMANT state is set.
RTEMS_INLINE_ROUTINE bool | _States_Is_suspended (States_Control the_states)
| Checks if SUSPENDED state is set.
RTEMS_INLINE_ROUTINE bool | _States_Is_waiting_for_rpc_reply (States_Control the_states)
| Checks if WAITING_FOR_TIME state is set.
RTEMS_INLINE_ROUTINE bool | _States_Is_waiting_for_join_at_exit (States_Control the_states)
| Checks if WAITING_FOR_JOIN_AT_EXIT state is set.
RTEMS_INLINE_ROUTINE bool | _States_Is_interruptible_by_signal (States_Control the_states)
| Checks if the state is set to be interruptible.
RTEMS_INLINE_ROUTINE bool | _States_Is_locally_blocked (States_Control the_states)
| Checks if the state is blocked waiting on a local resource.

## Detailed Description

SuperCore Thread States.

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

## Macro Definition Documentation

## ◆ STATES_ALL_SET

#define STATES_ALL_SET 0xffffffff

All state bits set to one (provided for _Thread_Start())

## ◆ 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 )
STATES_INTERRUPTIBLE_BY_SIGNAL
#define STATES_INTERRUPTIBLE_BY_SIGNAL
Definition: statesimpl.h:110
STATES_WAITING_FOR_SYSTEM_EVENT
#define STATES_WAITING_FOR_SYSTEM_EVENT
Definition: statesimpl.h:57
STATES_LOCALLY_BLOCKED
#define STATES_LOCALLY_BLOCKED
Definition: statesimpl.h:122
STATES_WAITING_FOR_TIME
#define STATES_WAITING_FOR_TIME
This macro corresponds to a task which is waiting for a relative or absolute timeout.
Definition: statesimpl.h:75
STATES_WAITING_FOR_RPC_REPLY
#define STATES_WAITING_FOR_RPC_REPLY
Definition: statesimpl.h:113
STATES_WAITING_FOR_PERIOD
#define STATES_WAITING_FOR_PERIOD
Definition: statesimpl.h:78
STATES_WAITING_FOR_EVENT
#define STATES_WAITING_FOR_EVENT
Definition: statesimpl.h:54

This macro corresponds to a task waiting which is blocked.

## ◆ STATES_DEBUGGER

#define STATES_DEBUGGER 0x08000000

This macro corresponds to a task being held by the debugger.

## ◆ STATES_DORMANT

#define STATES_DORMANT 0x80000000

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

## ◆ STATES_INTERRUPTIBLE_BY_SIGNAL

#define STATES_INTERRUPTIBLE_BY_SIGNAL 0x10000000

This macro corresponds to a task which is in an interruptible blocking state.

## ◆ STATES_LIFE_IS_CHANGING

#define STATES_LIFE_IS_CHANGING 0x00020000

This macro corresponds to a task those life is changing.

## ◆ 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_FUTEX | \
STATES_WAITING_FOR_RWLOCK )
STATES_WAITING_FOR_SEGMENT
#define STATES_WAITING_FOR_SEGMENT
Definition: statesimpl.h:99
STATES_WAITING_FOR_BARRIER
#define STATES_WAITING_FOR_BARRIER
Definition: statesimpl.h:84
STATES_WAITING_FOR_SIGNAL
#define STATES_WAITING_FOR_SIGNAL
Definition: statesimpl.h:81
STATES_WAITING_FOR_FUTEX
#define STATES_WAITING_FOR_FUTEX
Definition: statesimpl.h:66
STATES_WAITING_FOR_SEMAPHORE
#define STATES_WAITING_FOR_SEMAPHORE
Definition: statesimpl.h:51
STATES_WAITING_FOR_JOIN
#define STATES_WAITING_FOR_JOIN
Definition: statesimpl.h:93
STATES_WAITING_FOR_MUTEX
#define STATES_WAITING_FOR_MUTEX
Definition: statesimpl.h:48
STATES_WAITING_FOR_CONDITION_VARIABLE
#define STATES_WAITING_FOR_CONDITION_VARIABLE
Definition: statesimpl.h:63
STATES_WAITING_FOR_BSD_WAKEUP
#define STATES_WAITING_FOR_BSD_WAKEUP
Definition: statesimpl.h:69
STATES_WAITING_FOR_RWLOCK
#define STATES_WAITING_FOR_RWLOCK
Definition: statesimpl.h:87
STATES_WAITING_FOR_MESSAGE
#define STATES_WAITING_FOR_MESSAGE
Definition: statesimpl.h:60

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

## ◆ STATES_READY

#define STATES_READY 0x00000000

This macro corresponds to a task being ready.

## ◆ STATES_SUSPENDED

#define STATES_SUSPENDED 0x00008000

This macro corresponds to a task being suspended.

## ◆ STATES_WAITING_FOR_BARRIER

#define STATES_WAITING_FOR_BARRIER 0x00000800

This macro corresponds to a task waiting for a barrier.

## ◆ STATES_WAITING_FOR_BSD_WAKEUP

#define STATES_WAITING_FOR_BSD_WAKEUP 0x00000080

This macro corresponds to a task waiting for BSD wakeup.

## ◆ STATES_WAITING_FOR_CONDITION_VARIABLE

#define STATES_WAITING_FOR_CONDITION_VARIABLE 0x00000020

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

## ◆ STATES_WAITING_FOR_EVENT

#define STATES_WAITING_FOR_EVENT 0x00000004

This macro corresponds to a task waiting for an event.

## ◆ STATES_WAITING_FOR_FUTEX

#define STATES_WAITING_FOR_FUTEX 0x00000040

This macro corresponds to a task waiting for a futex.

## ◆ STATES_WAITING_FOR_JOIN

#define STATES_WAITING_FOR_JOIN 0x00004000

This macro corresponds to a task waiting for a join.

## ◆ STATES_WAITING_FOR_JOIN_AT_EXIT

#define STATES_WAITING_FOR_JOIN_AT_EXIT 0x00002000

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

## ◆ STATES_WAITING_FOR_MESSAGE

#define STATES_WAITING_FOR_MESSAGE 0x00000010

This macro corresponds to a task waiting for a message.

## ◆ STATES_WAITING_FOR_MUTEX

#define STATES_WAITING_FOR_MUTEX 0x00000001

This macro corresponds to a task waiting for a mutex.

## ◆ STATES_WAITING_FOR_PERIOD

#define STATES_WAITING_FOR_PERIOD 0x00000200

This macro corresponds to a task waiting for a period.

## ◆ STATES_WAITING_FOR_RPC_REPLY

#define STATES_WAITING_FOR_RPC_REPLY 0x20000000

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

## ◆ STATES_WAITING_FOR_RWLOCK

#define STATES_WAITING_FOR_RWLOCK 0x00001000

This macro corresponds to a task waiting for a RWLock.

## ◆ STATES_WAITING_FOR_SEGMENT

#define STATES_WAITING_FOR_SEGMENT 0x00010000

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

## ◆ STATES_WAITING_FOR_SEMAPHORE

#define STATES_WAITING_FOR_SEMAPHORE 0x00000002

This macro corresponds to a task waiting for a semaphore.

## ◆ STATES_WAITING_FOR_SIGNAL

#define STATES_WAITING_FOR_SIGNAL 0x00000400

This macro corresponds to a task waiting for a signal.

## ◆ STATES_WAITING_FOR_SYSTEM_EVENT

#define STATES_WAITING_FOR_SYSTEM_EVENT 0x00000008

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

## ◆ STATES_ZOMBIE

#define STATES_ZOMBIE 0x40000000

This macro corresponds to a task being a zombie.

## Typedef Documentation

## ◆ States_Control

typedef uint32_t States_Control

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

## Function Documentation

## ◆ _States_Clear()

RTEMS_INLINE_ROUTINE States_Control _States_Clear | ( | States_Control | states_to_clear,
|  | States_Control | current_state
| ) |  |

Clears the states into the passed current state and returns the result.

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

  states_to_clear | The state bits to clear.
  current_state | The state set to remove them from.

Returns
  This method returns the updated states value.

## ◆ _States_Is_dormant()

RTEMS_INLINE_ROUTINE bool _States_Is_dormant | ( | States_Control | the_states | ) |

Checks if DORMANT state is set.

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

Parameters

  the_states | The task state set to test.

Return values

  true | DORMANT state is set in the_states.
  false | DORMANT state is not set in the_states.

## ◆ _States_Is_interruptible_by_signal()

RTEMS_INLINE_ROUTINE bool _States_Is_interruptible_by_signal | ( | States_Control | the_states | ) |

Checks if the state is set to be interruptible.

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

Parameters

  the_states | The task state set to test.

Return values

  true | the_states is interruptible.
  false | the_states is not interruptible.

## ◆ _States_Is_locally_blocked()

RTEMS_INLINE_ROUTINE bool _States_Is_locally_blocked | ( | States_Control | the_states | ) |

Checks if the state is blocked waiting on a local resource.

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

  the_states | The task state set to test.

Return values

  true | The state indicates that the task is blocked waiting on a local resource.
  false | The state indicates that the task is not blocked waiting on a local resource.

## ◆ _States_Is_ready()

RTEMS_INLINE_ROUTINE bool _States_Is_ready | ( | States_Control | the_states | ) |

Checks if the state is ready.

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

Parameters

  the_states | The task state set to test.

Return values

  true | The state is ready.
  false | The state is not ready.

## ◆ _States_Is_suspended()

RTEMS_INLINE_ROUTINE bool _States_Is_suspended | ( | States_Control | the_states | ) |

Checks if SUSPENDED state is set.

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

Parameters

  the_states | The task state set to test.

Return values

  true | SUSPENDED state is set in the_states.
  false | SUSPENDED state is not set in the_states.

## ◆ _States_Is_waiting_for_join_at_exit()

RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_join_at_exit | ( | States_Control | the_states | ) |

Checks if WAITING_FOR_JOIN_AT_EXIT state is set.

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

Parameters

  the_states | The task state set to test.

Return values

  true | WAITING_FOR_JOIN_AT_EXIT state is set in the_states.
  false | WAITING_FOR_JOIN_AT_EXIT state is not set in the_states.

## ◆ _States_Is_waiting_for_rpc_reply()

RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_rpc_reply | ( | States_Control | the_states | ) |

Checks if WAITING_FOR_TIME state is set.

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

Parameters

  the_states | The task state set to test.

Return values

  true | WAITING_FOR_TIME state is set in the_states.
  false | WAITING_FOR_TIME state is not set in the_states.

## ◆ _States_Set()

RTEMS_INLINE_ROUTINE States_Control _States_Set | ( | States_Control | states_to_set,
|  | States_Control | current_state
| ) |  |

Returns the result of setting the states to set to the given 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

  states_to_set | The state bits to set.
  current_state | The state set to add them to.

Returns
  This method returns the updated states value.